if (gst_tag_list_get_date(tag_list, gsttag, &date)) {\
if (date != NULL) {\
string = g_strdup_printf("%d", g_date_get_year(date));\
+ if (string == NULL) {\
+ LOGD("failed to get date/time from tag");\
+ g_date_free(date);\
+ break;\
+ } \
mm_player_set_attribute((MMHandleType)player, NULL,\
playertag, string, strlen(string), NULL); \
SECURE_LOGD("metainfo year : %s", string);\
case GST_MESSAGE_ASYNC_DONE:
case GST_MESSAGE_STATE_CHANGED:
/* we only handle messages from pipeline */
+ MMPLAYER_RECONFIGURE_LOCK(player);
if ((message->src == (GstObject *)player->pipeline->mainbin[MMPLAYER_M_PIPE].gst) && (!player->gapless.reconfigure))
retval = TRUE;
else
retval = FALSE;
+ MMPLAYER_RECONFIGURE_UNLOCK(player);
break;
case GST_MESSAGE_BUFFERING:
{
{
if (MMPLAYER_USE_DECODEBIN(player))
break; /* drop msg */
- if (message->src == (GstObject *)player->pipeline->mainbin[MMPLAYER_M_ADAPTIVE_DEMUX].gst) {
- LOGD("pipeline is still under construction for adaptive streaming");
- retval = TRUE;
- break;
- }
if ((MMPLAYER_IS_HTTP_STREAMING(player)) &&
(!player->pipeline->mainbin[MMPLAYER_M_DEMUXED_S_BUFFER].gst) &&
LOGD("GST_MESSAGE_STREAMS_SELECTED");
player->no_more_pad = TRUE;
_mmplayer_set_reconfigure_state(player, FALSE);
- _mmplayer_pipeline_complete(NULL, player);
+ if (!MMPLAYER_IS_ADAPTIVE_STREAMING(player))
+ _mmplayer_pipeline_complete(NULL, player);
retval = TRUE;
break;
}
__mmplayer_gst_handle_state_message(mmplayer_t *player, GstMessage *msg)
{
mmplayer_gst_element_t *mainbin;
- const GValue *voldstate, *vnewstate, *vpending;
GstState oldstate = GST_STATE_NULL;
GstState newstate = GST_STATE_NULL;
GstState pending = GST_STATE_NULL;
if (msg->src != (GstObject *)mainbin[MMPLAYER_M_PIPE].gst)
return;
- /* get state info from msg */
- voldstate = gst_structure_get_value(gst_message_get_structure(msg), "old-state");
- vnewstate = gst_structure_get_value(gst_message_get_structure(msg), "new-state");
- vpending = gst_structure_get_value(gst_message_get_structure(msg), "pending-state");
-
- if (!voldstate || !vnewstate) {
- LOGE("received msg has wrong format.");
- return;
- }
-
- oldstate = (GstState)voldstate->data[0].v_int;
- newstate = (GstState)vnewstate->data[0].v_int;
- if (vpending)
- pending = (GstState)vpending->data[0].v_int;
+ gst_message_parse_state_changed(msg, &oldstate, &newstate, &pending);
LOGD("state changed [%s] : %s ---> %s final : %s",
GST_OBJECT_NAME(GST_MESSAGE_SRC(msg)),
return;
if (player->seek_state == MMPLAYER_SEEK_IN_PROGRESS) {
+ if (player->is_external_subtitle_present)
+ _mmplayer_sync_subtitle_pipeline(player);
+
if (MMPLAYER_TARGET_STATE(player) == MM_PLAYER_STATE_PAUSED) {
player->seek_state = MMPLAYER_SEEK_NONE;
MMPLAYER_POST_MSG(player, MM_MESSAGE_SEEK_COMPLETED, NULL);
GstStream *stream = gst_message_streams_selected_get_stream(msg, i);
mmplayer_track_type_e type = __mmplayer_convert_gst_stream_type_to_track_type(
gst_stream_get_stream_type(stream));
+ if (type == MM_PLAYER_TRACK_TYPE_MAX) {
+ LOGD("not supported track type");
+ gst_object_unref(stream);
+ break;
+ }
LOGD (" Stream #%d : %s\n", i, gst_stream_get_stream_id(stream));
if (player->track[type].active_track_index == INVALID_TRACK_INDEX) {
int stream_index = INVALID_TRACK_INDEX;
}
gst_object_unref(stream);
}
- gst_object_unref (collection);
+ gst_object_unref(collection);
}
} break;
g_object_get(G_OBJECT(mainbin[MMPLAYER_M_DEMUXED_S_BUFFER].gst),
"curr-size-bytes", &curr_size_bytes, NULL);
LOGD("curr_size_bytes of multiqueue = %d", curr_size_bytes);
- buffered_total += curr_size_bytes;
+ buffered_total += (gint64)curr_size_bytes;
}
if (avg_byterate > 0)