<div dir="ltr"><div><div><div>On Mon, 26 Dec 2016 16:22:05 +0000, Tim wrote:<br><br>> You can use appsink sync=true to make appsink sync to the pipeline<br>
> clock, then you get the frames in "real time" according to the<br>
> timestamps in the file.<br>
<br>
> In C code: g_object_set (appsink, "sync", TRUE, NULL);<br><br></div>Thanks, Tim.<br><br>I have already set sync parameter to appsink and it still not works. So, I wrote small example to reproduce this <span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-">behavior and noticed that timestamps are very strange.</span></span><br><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-"></span></span></div><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-"><br>#include <gst/gst.h><br>#include <gst/app/gstappsink.h><br><br>...<br><br>GstFlowReturn callback_new_sample(<wbr>GstAppSink* sink, gpointer opaque)<br>{<br> GstSample* sample = gst_app_sink_pull_sample(GST_<wbr>APP_SINK(sink));<br> GstBuffer* buffer = gst_sample_get_buffer(sample);<br><br> unsigned int pts = GST_BUFFER_PTS(buffer) / 1000000;<br><br> GST_INFO("pts %u", pts);<br><br> gst_sample_unref(sample);<br><br> return GST_FLOW_OK;<br>}<br><br></span></span></div><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-">...<br></span></span><div><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-"><br>int main(int arc, char* argv[])<br>{<br> const char* filename = argv[1];<br><br> ...<br><br> source_ = gst_element_factory_make("<wbr>filesrc", nullptr);<br> g_object_set(G_OBJECT(source_)<wbr>, "location", filename, nullptr);<br><br> demux_ = gst_element_factory_make("<wbr>qtdemux", nullptr);<br> g_signal_connect(G_OBJECT(<wbr>demux_), "pad-added", G_CALLBACK(callback_pad_added)<wbr>, nullptr);<br><br> sink_ = gst_element_factory_make("<wbr>appsink", nullptr);<br> g_object_set(G_OBJECT(sink_), "sync", TRUE, nullptr);<br> GstAppSinkCallbacks callbacks;<br> callbacks.eos = callback_eos;<br> callbacks.new_preroll = callback_new_preroll;<br> callbacks.new_sample = callback_new_sample;<br> gst_app_sink_set_callbacks(<wbr>GST_APP_SINK(sink_), &callbacks, nullptr, nullptr);<br><br> pipeline_ = gst_pipeline_new(nullptr);<br> gst_bin_add_many(GST_BIN(<wbr>pipeline_), source_, demux_, sink_, nullptr);<br> gst_element_link_many(source_, demux_, nullptr);<br><br> gst_element_set_state(<wbr>pipeline_, GST_STATE_PLAYING);<br><br> ... <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <br><br> return 0;<br></span></span></div><div><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-">}<br><br>Log looks like:</span></span><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-"><br></span></span></div><div><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-"><br></span></span></div><div><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-"># GST_DEBUG=4 ./a.out test.mp4</span></span><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-"><br>0:00:00.000024789 1351 0xedf600 INFO GST_INIT gst.c:511:init_pre: Initializing GStreamer Core Library version 1.8.3<br>0:00:00.000046383 1351 0xedf600 INFO GST_INIT gst.c:512:init_pre: Using library installed in /usr/lib64<br>0:00:00.000051828 1351 0xedf600 INFO GST_INIT gst.c:523:init_pre: Linux work 4.4.6-gentoo #1 SMP Mon Jun 20 21:47:25 MSK 2016 x86_64<br>0:00:00.000166972 1351 0xedf600 INFO GST_INIT gstmessage.c:119:_priv_gst_<wbr>message_initialize: init messages<br>0:00:00.000382660 1351 0xedf600 INFO GST_INIT gstcontext.c:83:_priv_gst_<wbr>context_initialize: init contexts<br>0:00:00.000474209 1351 0xedf600 INFO GST_PLUGIN_LOADING gstplugin.c:316:_priv_gst_<wbr>plugin_initialize: registering 0 static plugins<br>0:00:00.000517428 1351 0xedf600 INFO GST_PLUGIN_LOADING gstplugin.c:224:gst_plugin_<wbr>register_static: registered static plugin "staticelements"<br>0:00:00.000523021 1351 0xedf600 INFO GST_PLUGIN_LOADING gstplugin.c:226:gst_plugin_<wbr>register_static: added static plugin "staticelements", result: 1<br>0:00:00.000533622 1351 0xedf600 INFO GST_REGISTRY gstregistry.c:1723:ensure_<wbr>current_registry: reading registry cache: /home/sonntex/.cache/<wbr>gstreamer-1.0/registry.x86_64.<wbr>bin<br>0:00:00.006085663 1351 0xedf600 INFO GST_REGISTRY gstregistrybinary.c:619:priv_<wbr>gst_registry_binary_read_<wbr>cache: loaded /home/sonntex/.cache/<wbr>gstreamer-1.0/registry.x86_64.<wbr>bin in 0.005544 seconds<br>0:00:00.006109244 1351 0xedf600 INFO GST_REGISTRY gstregistry.c:1579:scan_and_<wbr>update_registry: Validating plugins from registry cache: /home/sonntex/.cache/<wbr>gstreamer-1.0/registry.x86_64.<wbr>bin<br>0:00:00.006453591 1351 0xedf600 INFO GST_REGISTRY gstregistry.c:1681:scan_and_<wbr>update_registry: Registry cache has not changed<br>0:00:00.006459902 1351 0xedf600 INFO GST_REGISTRY gstregistry.c:1758:ensure_<wbr>current_registry: registry reading and updating done, result = 1<br>0:00:00.006463467 1351 0xedf600 INFO GST_INIT gst.c:724:init_post: GLib runtime version: 2.48.2<br>0:00:00.006467367 1351 0xedf600 INFO GST_INIT gst.c:726:init_post: GLib headers version: 2.48.2<br>0:00:00.006470279 1351 0xedf600 INFO GST_INIT gst.c:727:init_post: initialized GStreamer successfully<br>0:00:00.006688576 1351 0xedf600 INFO GST_PLUGIN_LOADING gstplugin.c:842:_priv_gst_<wbr>plugin_load_file_for_registry: plugin "/usr/lib64/gstreamer-1.0/<wbr>libgstcoreelements.so" loaded<br>0:00:00.006696099 1351 0xedf600 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_<wbr>element_factory_create: creating element "filesrc"<br>0:00:00.006751118 1351 0xedf600 INFO GST_ELEMENT_PADS gstelement.c:659:gst_element_<wbr>add_pad:<GstBaseSrc@0x1042110> adding pad 'src'<br>0:00:00.006767442 1351 0xedf600 INFO filesrc gstfilesrc.c:262:gst_file_src_<wbr>set_location: filename : test.mp4<br>0:00:00.006771123 1351 0xedf600 INFO filesrc gstfilesrc.c:263:gst_file_src_<wbr>set_location: uri : file:///home/sonntex/devel/<wbr>test/test.mp4<br>0:00:00.007559798 1351 0xedf600 INFO GST_PLUGIN_LOADING gstplugin.c:842:_priv_gst_<wbr>plugin_load_file_for_registry: plugin "/usr/lib64/gstreamer-1.0/<wbr>libgstisomp4.so" loaded<br>0:00:00.007568188 1351 0xedf600 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_<wbr>element_factory_create: creating element "qtdemux"<br>0:00:00.007619874 1351 0xedf600 INFO GST_ELEMENT_PADS gstelement.c:659:gst_element_<wbr>add_pad:<GstQTDemux@0x104fa00> adding pad 'sink'<br>0:00:00.007698294 1351 0xedf600 INFO GST_PLUGIN_LOADING gstplugin.c:842:_priv_gst_<wbr>plugin_load_file_for_registry: plugin "/usr/lib64/gstreamer-1.0/<wbr>libgstapp.so" loaded<br>0:00:00.007704788 1351 0xedf600 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_<wbr>element_factory_create: creating element "appsink"<br>0:00:00.007763602 1351 0xedf600 INFO GST_ELEMENT_PADS gstelement.c:659:gst_element_<wbr>add_pad:<GstBaseSink@0x10551f0<wbr>> adding pad 'sink'<br>0:00:00.007775545 1351 0xedf600 INFO GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_<wbr>element_factory_create: creating element "pipeline"<br>0:00:00.007807031 1351 0xedf600 INFO GST_ELEMENT_PADS gstutils.c:1573:gst_element_<wbr>link_pads_full: trying to link element filesrc0:(any) to element qtdemux0:(any)<br>0:00:00.007813983 1351 0xedf600 INFO GST_PADS gstutils.c:932:gst_pad_check_<wbr>link: trying to link filesrc0:src and qtdemux0:sink<br>0:00:00.007825108 1351 0xedf600 INFO GST_PADS gstutils.c:1446:prepare_link_<wbr>maybe_ghosting: filesrc0 and qtdemux0 in same bin, no need for ghost pads<br>0:00:00.007831980 1351 0xedf600 INFO GST_PADS gstpad.c:2315:gst_pad_link_<wbr>prepare: trying to link filesrc0:src and qtdemux0:sink<br>0:00:00.007837913 1351 0xedf600 INFO GST_PADS gstpad.c:2521:gst_pad_link_<wbr>full: linked filesrc0:src and qtdemux0:sink, successful<br>0:00:00.007841939 1351 0xedf600 INFO GST_EVENT gstevent.c:1382:gst_event_new_<wbr>reconfigure: creating reconfigure event<br>0:00:00.007845735 1351 0xedf600 INFO GST_EVENT gstpad.c:5634:gst_pad_send_<wbr>event_unchecked:<filesrc0:src> Received event on flushing pad. Discarding<br>0:00:00.007856986 1351 0xedf600 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<appsink0> current NULL pending VOID_PENDING, desired next READY<br>0:00:00.007863943 1351 0xedf600 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<appsink0> completed state change to READY<br>0:00:00.007867942 1351 0xedf600 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>appsink0> notifying about state-changed NULL to READY (VOID_PENDING pending)<br>0:00:00.007876749 1351 0xedf600 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'appsink0' changed state to 2(READY) successfully<br>0:00:00.007882375 1351 0xedf600 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<qtdemux0> current NULL pending VOID_PENDING, desired next READY<br>0:00:00.007886530 1351 0xedf600 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<qtdemux0> completed state change to READY<br>0:00:00.007889458 1351 0xedf600 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>qtdemux0> notifying about state-changed NULL to READY (VOID_PENDING pending)<br>0:00:00.007894090 1351 0xedf600 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'qtdemux0' changed state to 2(READY) successfully<br>0:00:00.007898132 1351 0xedf600 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<filesrc0> current NULL pending VOID_PENDING, desired next READY<br>0:00:00.007906107 1351 0xedf600 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<filesrc0> completed state change to READY<br>0:00:00.007910314 1351 0xedf600 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>filesrc0> notifying about state-changed NULL to READY (VOID_PENDING pending)<br>0:00:00.007915219 1351 0xedf600 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'filesrc0' changed state to 2(READY) successfully<br>0:00:00.007921417 1351 0xedf600 INFO GST_STATES gstelement.c:2347:gst_element_<wbr>continue_state:<pipeline0> committing state from NULL to READY, pending PLAYING, next PAUSED<br>0:00:00.007925725 1351 0xedf600 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>pipeline0> notifying about state-changed NULL to READY (PLAYING pending)<br>0:00:00.007929851 1351 0xedf600 INFO GST_STATES gstelement.c:2354:gst_element_<wbr>continue_state:<pipeline0> continue state change READY to PAUSED, final PLAYING<br>0:00:00.007935450 1351 0xedf600 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<appsink0> current READY pending VOID_PENDING, desired next PAUSED<br>0:00:00.007942516 1351 0xedf600 INFO GST_STATES gstbin.c:2770:gst_bin_change_<wbr>state_func:<pipeline0> child 'appsink0' is changing state asynchronously to PAUSED<br>0:00:00.007947776 1351 0xedf600 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<qtdemux0> current READY pending VOID_PENDING, desired next PAUSED<br>0:00:00.007953441 1351 0xedf600 INFO filesrc gstfilesrc.c:465:gst_file_src_<wbr>start:<filesrc0> opening file test.mp4<br>0:00:00.007964619 1351 0xedf600 WARN basesrc gstbasesrc.c:3489:gst_base_<wbr>src_start_complete:<filesrc0> pad not activated yet<br>0:00:00.007975058 1351 0xedf600 INFO filesrc gstfilesrc.c:465:gst_file_src_<wbr>start:<filesrc0> opening file test.mp4<br>0:00:00.007991495 1351 0xedf600 INFO task gsttask.c:451:gst_task_set_<wbr>lock: setting stream lock 0x10462e0 on task 0x105a050<br>0:00:00.007996993 1351 0xedf600 INFO GST_PADS gstpad.c:5980:gst_pad_start_<wbr>task:<qtdemux0:sink> created task 0x105a050<br>0:00:00.008024612 1351 0xedf600 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<qtdemux0> completed state change to PAUSED<br>0:00:00.008030469 1351 0xedf600 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>qtdemux0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)<br>0:00:00.008037059 1351 0xedf600 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'qtdemux0' changed state to 3(PAUSED) successfully<br>0:00:00.008042842 1351 0xedf600 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<filesrc0> current READY pending VOID_PENDING, desired next PAUSED<br>0:00:00.008049092 1351 0xedf600 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<filesrc0> completed state change to PAUSED<br>0:00:00.008053129 1351 0xedf600 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>filesrc0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)<br>0:00:00.008058672 1351 0xedf600 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'filesrc0' changed state to 3(PAUSED) successfully<br>0:00:00.008089488 1351 0x104c2d0 INFO qtdemux qtdemux.c:12065:qtdemux_parse_<wbr>tree:<qtdemux0> timescale: 1800<br>0:00:00.008099620 1351 0x104c2d0 INFO qtdemux qtdemux.c:12066:qtdemux_parse_<wbr>tree:<qtdemux0> duration: 107969<br>0:00:00.008105428 1351 0x104c2d0 WARN qtdemux qtdemux.c:2651:qtdemux_parse_<wbr>trex:<qtdemux0> failed to find fragment defaults for stream 1<br>0:00:00.008125053 1351 0x104c2d0 INFO qtdemux qtdemux.c:9770:qtdemux_parse_<wbr>trak:<qtdemux0> type avc1 caps video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)<wbr>014d0028ffe1000d674d00288d8d28<wbr>0a00b760201001000468ee3c80<br>0:00:00.008165490 1351 0x104c2d0 WARN basesrc gstbasesrc.c:2396:gst_base_<wbr>src_update_length:<filesrc0> processing at or past EOS<br>0:00:00.008170281 1351 0x104c2d0 INFO GST_SCHEDULING gstpad.c:4757:gst_pad_get_<wbr>range_unchecked:<filesrc0:src> getrange failed, flow: eos<br>0:00:00.008175076 1351 0x104c2d0 INFO GST_SCHEDULING gstpad.c:4972:gst_pad_pull_<wbr>range:<qtdemux0:sink> pullrange failed, flow: eos<br>0:00:00.008195578 1351 0x104c2d0 INFO GST_ELEMENT_PADS gstelement.c:907:gst_element_<wbr>get_static_pad: found pad qtdemux0:sink<br>0:00:00.008214760 1351 0x104c2d0 INFO GST_EVENT gstevent.c:679:gst_event_new_<wbr>caps: creating caps event video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)<wbr>014d0028ffe1000d674d00288d8d28<wbr>0a00b760201001000468ee3c80, width=(int)1280, height=(int)720, framerate=(fraction)30000/<wbr>1001, pixel-aspect-ratio=(fraction)<wbr>1/1<br>0:00:00.008230859 1351 0x104c2d0 INFO GST_ELEMENT_PADS gstelement.c:659:gst_element_<wbr>add_pad:<qtdemux0> adding pad 'video_0'<br>0:00:00.008243006 1351 0x104c2d0 INFO default main.cpp:42:callback_pad_<wbr>added: pad video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)<wbr>014d0028ffe1000d674d00288d8d28<wbr>0a00b760201001000468ee3c80, width=(int)1280, height=(int)720, framerate=(fraction)30000/<wbr>1001, pixel-aspect-ratio=(fraction)<wbr>1/1<br>0:00:00.008249071 1351 0x104c2d0 INFO default main.cpp:46:callback_pad_<wbr>added: pad linking<br>0:00:00.008252887 1351 0x104c2d0 INFO GST_ELEMENT_PADS gstutils.c:1573:gst_element_<wbr>link_pads_full: trying to link element qtdemux0:video_0 to element appsink0:sink<br>0:00:00.008258225 1351 0x104c2d0 INFO GST_ELEMENT_PADS gstelement.c:907:gst_element_<wbr>get_static_pad: found pad qtdemux0:video_0<br>0:00:00.008262557 1351 0x104c2d0 INFO GST_ELEMENT_PADS gstelement.c:907:gst_element_<wbr>get_static_pad: found pad appsink0:sink<br>0:00:00.008266602 1351 0x104c2d0 INFO GST_PADS gstutils.c:1446:prepare_link_<wbr>maybe_ghosting: qtdemux0 and appsink0 in same bin, no need for ghost pads<br>0:00:00.008272895 1351 0x104c2d0 INFO GST_PADS gstpad.c:2315:gst_pad_link_<wbr>prepare: trying to link qtdemux0:video_0 and appsink0:sink<br>0:00:00.008281034 1351 0x104c2d0 INFO GST_PADS gstpad.c:2521:gst_pad_link_<wbr>full: linked qtdemux0:video_0 and appsink0:sink, successful<br>0:00:00.008285766 1351 0x104c2d0 INFO GST_EVENT gstevent.c:1382:gst_event_new_<wbr>reconfigure: creating reconfigure event<br>0:00:00.008303260 1351 0x104c2d0 INFO GST_EVENT gstevent.c:760:gst_event_new_<wbr>segment: creating segment event time segment start=39:01:02.610400000, offset=0:00:00.000000000, stop=39:02:02.593177777, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 39:01:02.610400000, duration 99:99:99.999999999<br>0:00:00.008322506 1351 0x104c2d0 INFO GST_EVENT gstevent.c:679:gst_event_new_<wbr>caps: creating caps event video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)<wbr>014d0028ffe1000d674d00288d8d28<wbr>0a00b760201001000468ee3c80, width=(int)1280, height=(int)720, framerate=(fraction)30000/<wbr>1001, pixel-aspect-ratio=(fraction)<wbr>1/1<br>0:00:00.008384508 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462610<br>0:00:00.008406598 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462643<br>0:00:00.008416023 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462677<br>0:00:00.008424983 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462710<br>0:00:00.008433337 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462744<br>0:00:00.008441179 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462777<br>0:00:00.008449325 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462810<br>0:00:00.008457575 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462844<br>0:00:00.008465503 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462877<br>0:00:00.008473565 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462911<br>0:00:00.008481699 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462944<br>0:00:00.008489477 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140462977<br>0:00:00.008497337 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140463011<br><br>...<br><br>0:00:00.023391797 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140522493<br>0:00:00.023399748 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140522526<br>0:00:00.023407601 1351 0x104c2d0 INFO default main.cpp:30:callback_new_<wbr>sample: pts 140522560<br>0:00:00.023414189 1351 0x104c2d0 INFO default main.cpp:15:callback_eos: eos<br>0:00:00.023424894 1351 0x104c2d0 INFO GST_STATES gstbin.c:3238:bin_handle_<wbr>async_done:<pipeline0> committing state from READY to PAUSED, old pending PLAYING<br>0:00:00.023430630 1351 0x104c2d0 INFO GST_STATES gstbin.c:3267:bin_handle_<wbr>async_done:<pipeline0> continue state change, pending PLAYING<br>0:00:00.023435062 1351 0x104c2d0 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>pipeline0> notifying about state-changed READY to PAUSED (PLAYING pending)<br>0:00:00.023471893 1351 0x7fb220009370 INFO GST_STATES gstbin.c:3061:gst_bin_<wbr>continue_func:<pipeline0> continue state change PAUSED to PLAYING, final PLAYING<br>0:00:00.023551495 1351 0x7fb220009370 INFO GST_EVENT gstevent.c:1253:gst_event_new_<wbr>latency: creating latency event 0:00:00.000000000<br>0:00:00.023567781 1351 0x7fb220009370 INFO bin gstbin.c:2593:gst_bin_do_<wbr>latency_func:<pipeline0> configured latency of 0:00:00.000000000<br>0:00:00.023580785 1351 0x7fb220009370 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<appsink0> current PAUSED pending VOID_PENDING, desired next PLAYING<br>0:00:00.023588790 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<appsink0> completed state change to PLAYING<br>0:00:00.023594097 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>appsink0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)<br>0:00:00.023598944 1351 0x104c2d0 INFO task gsttask.c:316:gst_task_func:<<wbr>qtdemux0:sink> Task going to paused<br>0:00:00.023600873 1351 0x7fb220009370 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'appsink0' changed state to 4(PLAYING) successfully<br>0:00:00.023610995 1351 0x7fb220009370 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<qtdemux0> current PAUSED pending VOID_PENDING, desired next PLAYING<br>0:00:00.023616256 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<qtdemux0> completed state change to PLAYING<br>0:00:00.023620188 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>qtdemux0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)<br>0:00:00.023625923 1351 0x7fb220009370 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'qtdemux0' changed state to 4(PLAYING) successfully<br>0:00:00.023630932 1351 0x7fb220009370 INFO GST_STATES gstbin.c:2316:gst_bin_element_<wbr>set_state:<filesrc0> current PAUSED pending VOID_PENDING, desired next PLAYING<br>0:00:00.023635868 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<filesrc0> completed state change to PLAYING<br>0:00:00.023639614 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>filesrc0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)<br>0:00:00.023644775 1351 0x7fb220009370 INFO GST_STATES gstbin.c:2764:gst_bin_change_<wbr>state_func:<pipeline0> child 'filesrc0' changed state to 4(PLAYING) successfully<br>0:00:00.023650205 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2372:gst_element_<wbr>continue_state:<pipeline0> completed state change to PLAYING<br>0:00:00.023654303 1351 0x7fb220009370 INFO GST_STATES gstelement.c:2277:_priv_gst_<wbr>element_state_changed:<<wbr>pipeline0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)<br></span></span></div>^C<br><div><br><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-">As you </span></span><span id="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-result_box" class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-short_text" lang="en"><span class="gmail-m_1158085447727731347gmail-m_6663836607881118357gmail-">can see all frames were read before pipeline moved to playing state and timestamps counted not from zero. Why? Is it a problem of my test.mp4 file?<br><br># gst-discoverer-1.0 -v test.mp4<br>Analyzing file:///home/sonntex/devel/test/test.mp4<br>Done discovering file:///home/sonntex/devel/test/test.mp4<br><br>Topology:<br> container: video/quicktime, variant=(string)iso<br> video: video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)014d0028ffe1000d674d00288d8d280a00b760201001000468ee3c80, width=(int)1280, height=(int)720, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)1/1<br> Tags:<br> video codec: H.264 / AVC<br> bitrate: 4938555<br> language code: en<br> datetime: 2016-12-26T15:02:36Z<br> container format: ISO MP4/M4A<br> <br> Codec:<br> video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)014d0028ffe1000d674d00288d8d280a00b760201001000468ee3c80, width=(int)1280, height=(int)720, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)1/1<br> Additional info:<br> None<br> Stream ID: d83440ba6fe683cff74bed3048a01ab4826a1e09dc9345c944fb75c69014812e/001<br> Width: 1280<br> Height: 720<br> Depth: 24<br> Frame rate: 30000/1001<br> Pixel aspect ratio: 1/1<br> Interlaced: false<br> Bitrate: 4938555<br> Max bitrate: 0<br><br>Properties:<br> Duration: 0:00:59.982777777<br> Seekable: yes<br> Tags: <br> video codec: H.264 / AVC<br> bitrate: 4938555<br> language code: en<br> datetime: 2016-12-26T15:02:36Z<br> container format: ISO MP4/M4A<br></span></span><br></div></div>