[0.6.278] Free codec_data from media_packet_get_codec_data() 47/291147/2 accepted/tizen/unified/20230413.123730
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 11 Apr 2023 00:00:09 +0000 (09:00 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 11 Apr 2023 03:04:29 +0000 (12:04 +0900)
- The bug from media_packet_get_codec_data() has been fixed.
  : https://review.tizen.org/gerrit/#/c/platform/core/api/mediatool/+/291013/

Change-Id: I7ec4b6573c9b846f7b0667bb814703ad0cfe5d9e
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/libmm-player.spec
src/mm_player_es.c

index 92ffdd0..0b6a946 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.277
+Version:    0.6.278
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index e244397..4df407f 100644 (file)
@@ -876,18 +876,18 @@ __mm_player_is_codec_data_changed(mmplayer_t *player, media_packet_h packet,
                cur_caps = player->v_stream_caps;
        } else {
                LOGW("streamtype is not audio or video");
-               return FALSE;
+               goto __FAILED;
        }
 
        if (!cur_caps) {
                LOGW("Current caps is NULL");
-               return FALSE;
+               goto __FAILED;
        }
 
        str = gst_caps_get_structure(cur_caps, 0);
        if (!str) {
                LOGW("Failed to get caps info");
-               return FALSE;
+               goto __FAILED;
        }
 
        /* Check if the codec data in the saved caps have been changed */
@@ -897,7 +897,7 @@ __mm_player_is_codec_data_changed(mmplayer_t *player, media_packet_h packet,
                buffer = gst_value_get_buffer(value);
                if (!gst_buffer_map(buffer, &codec_data_map, GST_MAP_READ)) {
                        LOGW("codec data buffer map failed");
-                       return FALSE;
+                       goto __FAILED;
                }
                if (codec_data_map.size == codec_data_size) {
                        for (i = 0; i <= codec_data_map.size; i++) {
@@ -905,7 +905,7 @@ __mm_player_is_codec_data_changed(mmplayer_t *player, media_packet_h packet,
                                        break;
                        }
                        gst_buffer_unmap(buffer, &codec_data_map);
-                       return FALSE;
+                       goto __FAILED;
                }
                gst_buffer_unmap(buffer, &codec_data_map);
        }
@@ -913,14 +913,13 @@ __mm_player_is_codec_data_changed(mmplayer_t *player, media_packet_h packet,
        new_caps = gst_caps_copy(cur_caps);
        if (!new_caps) {
                LOGW("Failed to copy caps");
-               return FALSE;
+               goto __FAILED;
        }
 
        new_buffer = gst_buffer_new_allocate(NULL, codec_data_size, NULL);
        if (!new_buffer) {
                LOGW("Failed to alloc gst buffer for codec data");
-               gst_caps_unref(new_caps);
-               return FALSE;
+               goto __FAILED;
        }
        gst_buffer_fill(new_buffer, 0, codec_data, codec_data_size);
        gst_caps_set_simple(new_caps, "codec_data", GST_TYPE_BUFFER, new_buffer, NULL);
@@ -932,7 +931,18 @@ __mm_player_is_codec_data_changed(mmplayer_t *player, media_packet_h packet,
                player->v_stream_caps = new_caps;
 
        gst_caps_unref(cur_caps);
+       free(codec_data);
 
        LOGD("need to update caps due to codec data is changed");
+
        return TRUE;
+
+__FAILED:
+       if (new_caps)
+               gst_caps_unref(new_caps);
+
+       if (codec_data)
+               free(codec_data);
+
+       return FALSE;
 }