Merge "[0.6.195] apply the RM policy about audio offload" into tizen accepted/tizen/unified/20190620.123715 submit/tizen/20190620.045213
authoreunhae choi <eunhae1.choi@samsung.com>
Thu, 20 Jun 2019 03:56:05 +0000 (03:56 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Thu, 20 Jun 2019 03:56:05 +0000 (03:56 +0000)
1  2 
src/mm_player_priv.c

diff --combined src/mm_player_priv.c
@@@ -606,6 -606,9 +606,9 @@@ static int __mmplayer_acquire_hw_resour
                case MMPLAYER_RESOURCE_TYPE_VIDEO_OVERLAY:
                        rm_res_type = MM_RESOURCE_MANAGER_RES_TYPE_VIDEO_OVERLAY;
                        break;
+               case MMPLAYER_RESOURCE_TYPE_AUDIO_OFFLOAD:
+                       rm_res_type = MM_RESOURCE_MANAGER_RES_TYPE_AUDIO_OFFLOAD;
+                       break;
                default:
                        LOGE("invalid mmplayer resource type %d", type);
                        return MM_ERROR_PLAYER_INTERNAL;
@@@ -961,12 -964,16 +964,12 @@@ __mmplayer_gst_selector_event_probe(Gst
        mmplayer_track_type_e stream_type = MM_PLAYER_TRACK_TYPE_VIDEO;
        gboolean caps_ret = TRUE;
  
 -      if (GST_EVENT_IS_DOWNSTREAM(event) &&
 -          GST_EVENT_TYPE(event) != GST_EVENT_STREAM_START &&
 -          GST_EVENT_TYPE(event) != GST_EVENT_FLUSH_STOP &&
 -          GST_EVENT_TYPE(event) != GST_EVENT_SEGMENT &&
 -          GST_EVENT_TYPE(event) != GST_EVENT_EOS) {
 +      if (GST_EVENT_TYPE(event) != GST_EVENT_STREAM_START &&
 +              GST_EVENT_TYPE(event) != GST_EVENT_FLUSH_STOP &&
 +              GST_EVENT_TYPE(event) != GST_EVENT_SEGMENT &&
 +              GST_EVENT_TYPE(event) != GST_EVENT_EOS &&
 +              GST_EVENT_TYPE(event) != GST_EVENT_QOS)
                return ret;
 -      } else if (GST_EVENT_IS_UPSTREAM(event) &&
 -                         GST_EVENT_TYPE(event) != GST_EVENT_QOS) {
 -              return ret;
 -      }
  
        MMPLAYER_GST_GET_CAPS_INFO(pad, caps, str, name, caps_ret);
        if (!caps_ret)
@@@ -5145,9 -5152,14 +5148,14 @@@ _mmplayer_unrealize(MMHandleType hplaye
        ret = __mmplayer_gst_unrealize(player);
  
        if (!player->interrupted_by_resource) {
-               if ((__mmplayer_release_hw_resource(player, MMPLAYER_RESOURCE_TYPE_VIDEO_DECODER) != MM_ERROR_NONE) ||
-                       (__mmplayer_release_hw_resource(player, MMPLAYER_RESOURCE_TYPE_VIDEO_OVERLAY) != MM_ERROR_NONE))
-                       LOGE("failed to release video resources");
+               int rm_ret = MM_ERROR_NONE;
+               mmplayer_resource_type_e res_idx = MMPLAYER_RESOURCE_TYPE_MAX;
+               for (res_idx = MMPLAYER_RESOURCE_TYPE_VIDEO_DECODER; res_idx < MMPLAYER_RESOURCE_TYPE_MAX; res_idx++) {
+                       rm_ret = __mmplayer_release_hw_resource(player, res_idx);
+                       if (rm_ret != MM_ERROR_NONE)
+                               LOGE("failed to release [%d] resources", res_idx);
+               }
        }
  
        MMPLAYER_FLEAVE();
@@@ -6963,6 -6975,12 +6971,12 @@@ __mmplayer_can_build_audio_offload_path
        }
        gst_object_unref(factory);
  
+       if (__mmplayer_acquire_hw_resource(player,
+                       MMPLAYER_RESOURCE_TYPE_AUDIO_OFFLOAD) != MM_ERROR_NONE) {
+               LOGE("failed to acquire audio offload decoder resource");
+               goto DONE;
+       }
        if (!__mmplayer_add_audio_device_connected_cb(player))
                goto DONE;
  
        ret = TRUE;
  
  DONE:
+       if (!ret)
+               __mmplayer_release_hw_resource(player, MMPLAYER_RESOURCE_TYPE_AUDIO_OFFLOAD);
        MMPLAYER_FLEAVE();
        return ret;
  }