[0.6.187] apply gapless for looping function 01/205201/1
authorEunhye Choi <eunhae1.choi@samsung.com>
Tue, 30 Apr 2019 07:25:43 +0000 (16:25 +0900)
committerEunhye Choi <eunhae1.choi@samsung.com>
Tue, 30 Apr 2019 07:25:51 +0000 (16:25 +0900)
- fix uri condition error for looping with gapless
- release video decoder resource before building new source path

Change-Id: I61ac7d34e3a528e19f39522bd4ee0655b9c21cd9

packaging/libmm-player.spec
src/mm_player_priv.c

index 3e66c546d0c2ff202183140df6f54ec3089879b4..dba7a4e2f5e0fe7cc23753cbe5822d5e7b557992 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.186
+Version:    0.6.187
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 2020cbc8418467f610305a17f5ef8d1e52b01b8d..2f41371f2ce8ba192d26fab7234e499114f730cc 100644 (file)
@@ -600,6 +600,7 @@ static void
 __mmplayer_initialize_gapless_play(mmplayer_t *player)
 {
        int i;
+       int rm_ret = MM_RESOURCE_MANAGER_ERROR_NONE;
 
        MMPLAYER_FENTER();
 
@@ -651,6 +652,23 @@ __mmplayer_initialize_gapless_play(mmplayer_t *player)
                player->audio_decoders = NULL;
        }
 
+       /* release video decoder resource */
+       if (player->video_decoder_resource != NULL) {
+               rm_ret = mm_resource_manager_mark_for_release(player->resource_manager,
+                               player->video_decoder_resource);
+               if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
+                       LOGE("failed to mark the video decoder resource for release, ret(0x%x)", rm_ret);
+                       return;
+               }
+               player->video_decoder_resource = NULL;
+       }
+
+       rm_ret = mm_resource_manager_commit(player->resource_manager);
+       if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
+               LOGE("failed to commit of resource, ret(0x%x)", rm_ret);
+               return;
+       }
+
        MMPLAYER_FLEAVE();
 }
 
@@ -6407,14 +6425,15 @@ __mmplayer_get_next_uri(mmplayer_t *player)
 static gboolean
 __mmplayer_verify_gapless_play_path(mmplayer_t *player)
 {
-#define REPEAT_COUNT_INFINITELY -1
+#define REPEAT_COUNT_INFINITE -1
 #define REPEAT_COUNT_MIN 2
+#define ORIGINAL_URI_ONLY 1
 
        MMHandleType attrs = 0;
        gint video = 0;
        gint count = 0;
        gint gapless = 0;
-       guint num_of_list = 0;
+       guint num_of_uri = 0;
        int profile_tv = -1;
 
        MMPLAYER_FENTER();
@@ -6449,16 +6468,16 @@ __mmplayer_verify_gapless_play_path(mmplayer_t *player)
 
        /* check repeat count in case of audio */
        if (!gapless &&
-               (video || (count != REPEAT_COUNT_INFINITELY && count < REPEAT_COUNT_MIN))) {
+               (video || (count != REPEAT_COUNT_INFINITE && count < REPEAT_COUNT_MIN))) {
                LOGW("gapless is disabled");
                goto ERROR;
        }
 
-       num_of_list = g_list_length(player->uri_info.uri_list);
+       num_of_uri = g_list_length(player->uri_info.uri_list);
 
-       LOGD("repeat count = %d, num_of_list = %d", count, num_of_list);
+       LOGD("repeat count = %d, num_of_list = %d", count, num_of_uri);
 
-       if (num_of_list == 0) {
+       if (num_of_uri == ORIGINAL_URI_ONLY) {
                /* audio looping path */
                if (count >= REPEAT_COUNT_MIN) {
                        /* decrease play count */
@@ -6469,7 +6488,7 @@ __mmplayer_verify_gapless_play_path(mmplayer_t *player)
                        if (mm_attrs_commit_all(attrs))
                                LOGE("failed to commit attribute");
 
-               } else if (count != REPEAT_COUNT_INFINITELY) {
+               } else if (count != REPEAT_COUNT_INFINITE) {
                        LOGD("there is no next uri and no repeat");
                        goto ERROR;
                }