summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEunhye Choi <eunhae1.choi@samsung.com>2019-06-17 18:19:17 +0900
committerEunhye Choi <eunhae1.choi@samsung.com>2019-06-19 14:37:01 +0900
commitbc14578950cd32e3a016733c2e9331efbf45ce35 (patch)
tree3a866d86599f7f6b29ed557561d7d778a8c2d035
parent8ea310b8f1013f9f7c86a88be9b792593fdb17fe (diff)
downloadlibmm-player-bc14578950cd32e3a016733c2e9331efbf45ce35.tar.gz
libmm-player-bc14578950cd32e3a016733c2e9331efbf45ce35.tar.bz2
libmm-player-bc14578950cd32e3a016733c2e9331efbf45ce35.zip
[0.6.195] apply the RM policy about audio offload
Change-Id: Ibf5592603a6863d69cc29fc0e0715e36ff522210
-rw-r--r--packaging/libmm-player.spec2
-rw-r--r--src/include/mm_player_priv.h2
-rw-r--r--src/mm_player_priv.c23
3 files changed, 22 insertions, 5 deletions
diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec
index 7b1eda9..7db1ad3 100644
--- a/packaging/libmm-player.spec
+++ b/packaging/libmm-player.spec
@@ -1,6 +1,6 @@
Name: libmm-player
Summary: Multimedia Framework Player Library
-Version: 0.6.194
+Version: 0.6.195
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
diff --git a/src/include/mm_player_priv.h b/src/include/mm_player_priv.h
index 82bfc47..9e79236 100644
--- a/src/include/mm_player_priv.h
+++ b/src/include/mm_player_priv.h
@@ -366,7 +366,7 @@ typedef enum {
typedef enum {
MMPLAYER_RESOURCE_TYPE_VIDEO_DECODER,
MMPLAYER_RESOURCE_TYPE_VIDEO_OVERLAY,
- /* FIXME: need to add MMPLAYER_RESOURCE_TYPE_AUDIO_OFFLOAD */
+ MMPLAYER_RESOURCE_TYPE_AUDIO_OFFLOAD,
MMPLAYER_RESOURCE_TYPE_MAX,
} mmplayer_resource_type_e;
diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c
index f2d766c..d1a71ef 100644
--- a/src/mm_player_priv.c
+++ b/src/mm_player_priv.c
@@ -606,6 +606,9 @@ static int __mmplayer_acquire_hw_resource(mmplayer_t *player, mmplayer_resource_
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;
@@ -5149,9 +5152,14 @@ _mmplayer_unrealize(MMHandleType hplayer)
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();
@@ -6967,6 +6975,12 @@ __mmplayer_can_build_audio_offload_path(mmplayer_t *player)
}
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;
@@ -6977,6 +6991,9 @@ __mmplayer_can_build_audio_offload_path(mmplayer_t *player)
ret = TRUE;
DONE:
+ if (!ret)
+ __mmplayer_release_hw_resource(player, MMPLAYER_RESOURCE_TYPE_AUDIO_OFFLOAD);
+
MMPLAYER_FLEAVE();
return ret;
}