[0.6.174] Check the subtitle duration is valid 56/201456/4
authorGilbok Lee <gilbok.lee@samsung.com>
Thu, 14 Mar 2019 08:42:49 +0000 (17:42 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Mon, 18 Mar 2019 08:29:48 +0000 (17:29 +0900)
- The problem occurs by passing invalid subtitle duration.
- Adjust subtitle duration by calculating total duration and PTS.

Change-Id: Ifa1fe2061e2009e7d365283134d33808dd55e85a

packaging/libmm-player.spec
src/mm_player_priv.c

index bef7041..88a191d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.173
+Version:    0.6.174
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index a4efccb..05e93ff 100644 (file)
@@ -3821,7 +3821,6 @@ __mmplayer_update_subtitle(GstElement *object, GstBuffer *buffer, GstPad *pad, g
        gst_buffer_map(buffer, &mapinfo, GST_MAP_READ);
        text = mapinfo.data;
        text_size = mapinfo.size;
-       duration = GST_BUFFER_DURATION(buffer);
 
        if (player->set_mode.subtitle_off) {
                LOGD("subtitle is OFF.");
@@ -3834,6 +3833,17 @@ __mmplayer_update_subtitle(GstElement *object, GstBuffer *buffer, GstPad *pad, g
        }
 
        msg.data = (void *)text;
+
+       duration = GST_BUFFER_DURATION(buffer);
+
+       if (!GST_CLOCK_TIME_IS_VALID(duration)) {
+               if (player->duration > GST_BUFFER_PTS(buffer))
+                       duration = player->duration - GST_BUFFER_PTS(buffer);
+               else
+                       duration = 0;
+               LOGI("subtitle duration is invalid, subtitle duration change "
+                       "GST_CLOCK_TIME_NONE -> %" GST_TIME_FORMAT, GST_TIME_ARGS(duration));
+       }
        msg.subtitle.duration = GST_TIME_AS_MSECONDS(duration);
 
        LOGD("update subtitle : [%ld msec] %s", msg.subtitle.duration, (char *)msg.data);