From 2f5e01b6a64a2155a892afb645afd05e7041987f Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Tue, 11 Apr 2023 09:00:09 +0900 Subject: [PATCH] [0.6.278] Free codec_data from media_packet_get_codec_data() - 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 --- packaging/libmm-player.spec | 2 +- src/mm_player_es.c | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 92ffdd0..0b6a946 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.277 +Version: 0.6.278 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_es.c b/src/mm_player_es.c index e244397..4df407f 100644 --- a/src/mm_player_es.c +++ b/src/mm_player_es.c @@ -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; } -- 2.7.4