From: Jeongmo Yang Date: Fri, 8 Jan 2021 07:52:57 +0000 (+0900) Subject: Add reference count to media packet X-Git-Tag: submit/tizen/20210113.021956^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=09d72b178da2c2d54563771ee5cd5b3058297bd7;p=platform%2Fcore%2Fapi%2Fmediatool.git Add reference count to media packet [Version] 0.1.31 [Issue Type] New feature Change-Id: Ib83dd9b883832fe78722d1e609c409ff90cb546d Signed-off-by: Jeongmo Yang --- diff --git a/include/media_packet_private.h b/include/media_packet_private.h index aab463a..d3f54e7 100644 --- a/include/media_packet_private.h +++ b/include/media_packet_private.h @@ -120,7 +120,6 @@ typedef enum { } media_buffer_type_e; typedef struct _media_packet_s { - uint64_t pts; uint64_t dts; uint64_t duration; @@ -140,6 +139,7 @@ typedef struct _media_packet_s { media_buffer_flags_e flags; media_packet_rotate_method_e method; + int ref_count; } media_packet_s; #ifdef __cplusplus diff --git a/packaging/capi-media-tool.spec b/packaging/capi-media-tool.spec index d8e3267..641bd96 100755 --- a/packaging/capi-media-tool.spec +++ b/packaging/capi-media-tool.spec @@ -1,6 +1,6 @@ Name: capi-media-tool Summary: A Core API media tool library in Tizen Native API -Version: 0.1.30 +Version: 0.1.31 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/media_packet.c b/src/media_packet.c index 24dd93c..e14cbe7 100644 --- a/src/media_packet.c +++ b/src/media_packet.c @@ -62,11 +62,11 @@ static int __pkt_init(media_buffer_type_e type, media_format_h fmt, return MEDIA_PACKET_ERROR_OUT_OF_MEMORY; } + g_atomic_int_set(&new_handle->ref_count, 1); new_handle->type = type; new_handle->format = MEDIA_FORMAT_CAST(fmt); new_handle->finalizecb_func = fcb; new_handle->userdata = fcb_data; - media_format_ref((media_format_h)new_handle->format); *handle = new_handle; @@ -1143,6 +1143,11 @@ int media_packet_destroy(media_packet_h packet) handle = (media_packet_s *)packet; + if (!g_atomic_int_dec_and_test(&handle->ref_count)) { + LOGD("ref count %d", g_atomic_int_get(&handle->ref_count)); + return MEDIA_PACKET_ERROR_NONE; + } + /* finalize callback */ if (handle->finalizecb_func) { int finalize_cb_ret; @@ -1151,6 +1156,7 @@ int media_packet_destroy(media_packet_h packet) /* creator do not want to destroy media packet handle */ if (finalize_cb_ret == MEDIA_PACKET_REUSE) { LOGI("the media packet handle will be reused."); //LCOV_EXCL_LINE + g_atomic_int_set(&handle->ref_count, 1); return MEDIA_PACKET_ERROR_NONE; } }