From: Sangchul Lee Date: Mon, 29 Mar 2021 11:32:03 +0000 (+0900) Subject: media_streamer_test: Free the data field of packet after receiving the data by pull API X-Git-Tag: submit/tizen_6.0/20210402.080422~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=82d5b1c7ad0efe5c285e17dcb4c44f3e2cf7fe34;p=platform%2Fcore%2Fapi%2Fmediastreamer.git media_streamer_test: Free the data field of packet after receiving the data by pull API It is fixed to free the text data after being used. "__" prefix are added to callback function names regarding custom nodes. [Version] 0.1.136 [Issue type] Test application Change-Id: I8f975a96447058ea53ce9001f3e55e8f642d5564 Signed-off-by: Sangchul Lee --- diff --git a/packaging/capi-media-streamer.spec b/packaging/capi-media-streamer.spec index bc5b87e..8c28c9a 100644 --- a/packaging/capi-media-streamer.spec +++ b/packaging/capi-media-streamer.spec @@ -1,6 +1,6 @@ Name: capi-media-streamer Summary: A Media Streamer API -Version: 0.1.135 +Version: 0.1.136 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/test/media_streamer_test.c b/test/media_streamer_test.c index 3e90b92..fdc19f0 100644 --- a/test/media_streamer_test.c +++ b/test/media_streamer_test.c @@ -148,6 +148,8 @@ typedef enum { #define DEFAULT_SEGMENT_PATH "/tmp/segment%05d.ts" #define DEFAULT_PLAYLIST_PATH "/tmp/playlist.m3u8" +#define MAX_PUSH_PACKET_COUNT 100 + #define ENTER g_print("%s:%d>%s\n",__FILE__, __LINE__, __FUNCTION__); /*--------------------------------------------------------------------------- @@ -1542,54 +1544,54 @@ static void _create_adaptive_playing_manual(void) media_streamer_node_link(audio_dec, "src", audio_sink, "sink"); } - -/* Application source callback */ -static void buffer_status_cb(media_streamer_node_h node, media_streamer_custom_buffer_status_e status, void *user_data) +static void __buffer_status_cb(media_streamer_node_h node, media_streamer_custom_buffer_status_e status, void *user_data) { - static int count = 0; - /* Try send only 10 packets */ - if (status == MEDIA_STREAMER_CUSTOM_BUFFER_UNDERRUN && count < 10) { - g_print("Buffer status cb got underflow\n"); + if (count >= MAX_PUSH_PACKET_COUNT) { + g_print("count is %d, call media_streamer_node_push_packet() with NULL\n", count); + media_streamer_node_push_packet(node, NULL); + return; + } + + if (status == MEDIA_STREAMER_CUSTOM_BUFFER_UNDERRUN) { + g_print("%s(), underflow\n", __func__); - char *test = g_strdup_printf("[%d]This is buffer_status_cb test!", count); + char *test = g_strdup_printf("This is __buffer_status_cb test_%d", ++count); guint64 size = strlen(test); media_packet_h packet; - media_packet_create_from_external_memory(vfmt_encoded, (void *)test, size, NULL, NULL, &packet); + media_packet_create_from_external_memory(vfmt_encoded, (void *)test, size + 1, NULL, NULL, &packet); media_streamer_node_push_packet(node, packet); - count++; media_packet_destroy(packet); - g_free(test); } else { - media_streamer_node_push_packet(node, NULL); - g_print("Buffer status cb got overflow\n"); + g_print("%s(), overflow\n", __func__); } } -/* Application sink callbacks */ -static void new_buffer_cb(media_streamer_node_h node, void *user_data) +static void __data_ready_cb(media_streamer_node_h node, void *user_data) { char *received_data = NULL; media_packet_h packet; media_streamer_node_pull_packet(node, &packet); media_packet_get_buffer_data_ptr(packet, (void **)&received_data); - g_print("Received new packet from appsink with data [%s]\n", received_data); + g_print("received data[%s]\n", received_data); + + g_free(received_data); media_packet_destroy(packet); } -static void eos_cb(media_streamer_node_h node, void *user_data) +static void __eos_cb(media_streamer_node_h node, void *user_data) { - g_print("Got EOS cb from appsink\n"); + g_print("%s() is called\n", __func__); } static void _create_custom_nodes(void) { - g_print("\n _create_custom_nodes \n"); + g_print("\n %s \n", __func__); media_streamer_node_h app_src = NULL; media_streamer_node_create_src(MEDIA_STREAMER_NODE_SRC_TYPE_CUSTOM, &app_src); @@ -1604,9 +1606,9 @@ static void _create_custom_nodes(void) media_streamer_node_link(app_src, "src", app_sink, "sink"); - media_streamer_src_set_buffer_status_cb(app_src, buffer_status_cb, NULL); - media_streamer_sink_set_data_ready_cb(app_sink, new_buffer_cb, NULL); - media_streamer_sink_set_eos_cb(app_sink, eos_cb, NULL); + media_streamer_src_set_buffer_status_cb(app_src, __buffer_status_cb, NULL); + media_streamer_sink_set_data_ready_cb(app_sink, __data_ready_cb, NULL); + media_streamer_sink_set_eos_cb(app_sink, __eos_cb, NULL); } /***************************************************************/