<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
{margin-top:0;
margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Hello, Tany</p>
<p><br>
</p>
<p>Small help to you.</p>
<p><br>
</p>
<p><span><span>GMainLoop* </span>_loop = g_main_loop_new(NULL, FALSE);</span><br>
</p>
<p><span></p>
<div>GstBus* bus = gst_pipeline_get_bus(GST_PIPELINE(_pipeline));</div>
<div><span style="font-size:12pt">gst_bus_add_watch(bus, BusCallback, this);</span><br>
</div>
<div><span style="font-size:12pt"><span>g_main_loop_run(_loop);</span><br>
</span></div>
<div><span style="font-size:12pt"><span><br>
</span></span></div>
<div><span style="font-size:12pt"><span>
<div>int GStreamerPlayer::BusCallback(GstBus*, GstMessage* message, void* data)</div>
<div>{</div>
<div><span class="x_Apple-tab-span" style="white-space:pre"></span>GStreamerPlayer* player = (GStreamerPlayer*)data;</div>
<div><br>
</div>
<div><span class="x_Apple-tab-span" style="white-space:pre"></span>switch (GST_MESSAGE_TYPE(message))</div>
<div><span class="x_Apple-tab-span" style="white-space:pre"></span>{</div>
<div>
<div><span class="x_Apple-tab-span" style="font-size:12pt; white-space:pre"></span><span style="font-size:12pt">case GST_MESSAGE_WARNING:</span><br>
</div>
<div><span class="x_Apple-tab-span" style="white-space:pre"></span>case GST_MESSAGE_ERROR:</div>
<div><span class="x_Apple-tab-span" style="font-size:12pt; white-space:pre"></span><span style="font-size:12pt">case GST_MESSAGE_ASYNC_DONE:</span><br>
</div>
<div><span class="x_Apple-tab-span" style="white-space:pre"></span>case GST_MESSAGE_EOS:</div>
<div>....</div>
</div>
<div><br>
</div>
<div>Mikl</div>
</span></span></div>
<br>
</span>
<p></p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> gstreamer-devel <gstreamer-devel-bounces@lists.freedesktop.org> on behalf of Tany <tany0007@gmail.com><br>
<b>Sent:</b> Wednesday, February 15, 2017 4:25:42 AM<br>
<b>To:</b> gstreamer-devel@lists.freedesktop.org<br>
<b>Subject:</b> Issue burning subtitle into video when seeking</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Hi,<br>
<br>
My goal is to transcode a video with burning subtitle(by using textoverlay).<br>
I reference Gstreamer tutorial and write a little program to test 2<br>
pipeline:<br>
<br>
pipeline 1(without subtitle):<br>
multiqueue max-size-buffers=10000 max-size-bytes=0 max-size-time=0 name=mq<br>
splitfilesrc<br>
location="/share/Multimedia/debug/harry/Harry.Potter.and.the.Deathly.Hallows.Part.1.2010.BluRay.1080p.AAC.4Audio.x264-CHD.mkv"<br>
! matroskademux name=dmx dmx. ! queue ! identity sync=false ! h264parse !<br>
omxh264dec ! omxh264enc force-keyframe-period=40 scaling-width=1920<br>
scaling-height=800 ! h264parse ! mq.sink_0 mq.src_0 ! mpegtsmux name=mux !<br>
filesink location="/share/Public/aaa.ts" dmx. ! aacparse ! queue ! identity<br>
sync=false ! faad name=adec ! audioconvert ! audioresample !<br>
audio/x-raw,channels=2,rate=44100 ! queue ! voaacenc !<br>
audio/mpeg,mpegversion=4,stream-format=raw ! aacparse ! mq.sink_1 mq.src_1<br>
! audio/mpeg,mpegversion=4,stream-format=raw ! mux.<br>
<br>
pipeline 2(with subtitle):<br>
multiqueue max-size-buffers=10000 max-size-bytes=0 max-size-time=0 name=mq<br>
textoverlay wait-text=false name=txo splitfilesrc<br>
location="/share/Multimedia/debug/harry/Harry.Potter.and.the.Deathly.Hallows.Part.1.2010.BluRay.1080p.AAC.4Audio.x264-CHD.mkv"<br>
! matroskademux name=dmx dmx. ! queue ! identity sync=false ! h264parse !<br>
omxh264dec ! txo.video_sink txo.src ! omxh264enc force-keyframe-period=40<br>
scaling-width=1920 scaling-height=800 ! h264parse ! mq.sink_0 mq.src_0 !<br>
mpegtsmux name=mux ! filesink location="/share/Public/aaa.ts" filesrc<br>
location="/share/Multimedia/debug/harry/Harry.Potter.and.the.Deathly.Hallows.Part.1.2010.BluRay.1080p.AAC.4Audio.x264-CHD.zh-TW.srt"<br>
! subparse subtitle-encoding=UTF-8 ! txo.text_sink dmx. ! aacparse ! queue !<br>
identity sync=false ! faad name=adec ! audioconvert ! audioresample !<br>
audio/x-raw,channels=2,rate=44100 ! queue ! voaacenc !<br>
audio/mpeg,mpegversion=4,stream-format=raw ! aacparse ! mq.sink_1 mq.src_1<br>
! audio/mpeg,mpegversion=4,stream-format=raw ! mux.<br>
<br>
Pipeline 1 works correctly whether seek event is performed or not.<br>
Pipeline 2 is also working correctly without seeking but have issue while<br>
seek is performed.<br>
It will block at <br>
ret = gst_element_seek_simple (pipeline, GST_FORMAT_TIME,
<br>
GST_SEEK_FLAG_KEY_UNIT, 7280 * GST_SECOND);<br>
<br>
and never return.<br>
<br>
Is there anything I can do about this? the attached file is my test code.<br>
<br>
regards,<br>
Tany<br>
<br>
gst_seek.c<br>
<<a href="http://gstreamer-devel.966125.n4.nabble.com/file/n4681885/gst_seek.c">http://gstreamer-devel.966125.n4.nabble.com/file/n4681885/gst_seek.c</a>>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/Issue-burning-subtitle-into-video-when-seeking-tp4681885.html">
http://gstreamer-devel.966125.n4.nabble.com/Issue-burning-subtitle-into-video-when-seeking-tp4681885.html</a><br>
Sent from the GStreamer-devel mailing list archive at Nabble.com.<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
gstreamer-devel@lists.freedesktop.org<br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div>
</span></font>
</body>
</html>