From: Hyunil Park Date: Mon, 6 Jul 2015 05:57:25 +0000 (+0900) Subject: resolve getting content-length issue when http streaming X-Git-Tag: submit/tizen/20150707.042913~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4fe666e159b632837049654efe20c71c6a75b6a1;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git resolve getting content-length issue when http streaming Change-Id: I4ab68e6f017f40ffa098e53166feb3296eded91e Signed-off-by: Hyunil Park --- diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 11e49e7..9246d61 100755 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -2281,9 +2281,9 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @ } break; - case GST_MESSAGE_DURATION: + case GST_MESSAGE_DURATION_CHANGED: { - debug_log("GST_MESSAGE_DURATION\n"); + debug_log("GST_MESSAGE_DURATION_CHANGED\n"); ret = __mmplayer_gst_handle_duration(player, msg); if (!ret) { @@ -2384,7 +2384,6 @@ __mmplayer_gst_callback(GstBus *bus, GstMessage *msg, gpointer data) // @ static gboolean __mmplayer_gst_handle_duration(mm_player_t* player, GstMessage* msg) { - GstFormat format; gint64 bytes = 0; MMPLAYER_FENTER(); @@ -2392,23 +2391,22 @@ __mmplayer_gst_handle_duration(mm_player_t* player, GstMessage* msg) return_val_if_fail(player, FALSE); return_val_if_fail(msg, FALSE); - gst_message_parse_duration (msg, &format, &bytes); - - if (MMPLAYER_IS_HTTP_STREAMING(player) && format == GST_FORMAT_BYTES ) + if ((MMPLAYER_IS_HTTP_STREAMING(player)) && + (msg->src) && (msg->src == (GstObject *)player->pipeline->mainbin[MMPLAYER_M_SRC].gst)) { - debug_log("data total size of http content: %lld", bytes); - player->http_content_size = bytes; + debug_log("msg src : [%s]", GST_ELEMENT_NAME(GST_ELEMENT_CAST(msg->src))); + + if (gst_element_query_duration(GST_ELEMENT_CAST(msg->src), GST_FORMAT_BYTES, &bytes)) + { + debug_log("data total size of http content: %lld", bytes); + player->http_content_size = bytes; + } } - else if (format == GST_FORMAT_TIME) + else { /* handling audio clip which has vbr. means duration is keep changing */ _mmplayer_update_content_attrs (player, ATTR_DURATION ); } - else - { - debug_warning("duration is neither BYTES or TIME"); - return FALSE; - } MMPLAYER_FLEAVE(); @@ -6853,7 +6851,7 @@ __mmplayer_check_useful_message(mm_player_t *player, GstMessage * message) case GST_MESSAGE_CLOCK_LOST: case GST_MESSAGE_NEW_CLOCK: case GST_MESSAGE_ELEMENT: - case GST_MESSAGE_DURATION: + case GST_MESSAGE_DURATION_CHANGED: case GST_MESSAGE_ASYNC_START: retval = TRUE; break; @@ -6942,7 +6940,7 @@ __mmplayer_bus_sync_callback (GstBus * bus, GstMessage * message, gpointer data) #endif break; - case GST_MESSAGE_DURATION: + case GST_MESSAGE_DURATION_CHANGED: __mmplayer_gst_handle_duration(player, message); break; case GST_MESSAGE_ASYNC_DONE: @@ -15747,22 +15745,6 @@ __gst_send_event_to_sink( mm_player_t* player, GstEvent* event ) { debug_log("sending event[%s] to sink element [%s] success!\n", GST_EVENT_TYPE_NAME(event), GST_ELEMENT_NAME(sink) ); - - /* rtsp case, asyn_done is not called after seek during pause state */ - if (MMPLAYER_IS_RTSP_STREAMING(player)) - { - if (strstr(GST_EVENT_TYPE_NAME(event), "seek")) - { - if (MMPLAYER_TARGET_STATE(player) == MM_PLAYER_STATE_PAUSED) - { - debug_log("RTSP seek completed, after pause state..\n"); - player->doing_seek = FALSE; - MMPLAYER_POST_MSG ( player, MM_MESSAGE_SEEK_COMPLETED, NULL ); - } - - } - } - #ifdef TEST_ES if( MMPLAYER_IS_ES_BUFF_SRC(player)) {