avidemux doesn't set PTS on keyframes when operating in push mode
Submitted by Maroš Ondrášek
Link to original bug (#740961)
Description
1.pull mode(PTS written on KF):
gst-launch-1.0 -v filesrc location='/tmp/xvid_packed_AS.avi' !avidemux!fakesink silent=false
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2486 bytes, dts: 0:00:00.000000000, pts: 0:00:00.000000000, duration: 0:00:00.040000000, offset: 0, offset_end: 1, flags: 00000040 discont ) 0x76b02840
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (125 bytes, dts: 0:00:00.040000000, pts: none, duration: 0:00:00.040000000, offset: 1, offset_end: 2, flags: 00002000 delta-unit ) 0x76b02a20
....
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (6576 bytes, dts: 0:00:04.400000000, pts: none, duration: 0:00:00.040000000, offset: 110, offset_end: 111, flags: 00002000 delta-unit ) 0x76b02c00
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (25142 bytes, dts: 0:00:04.440000000, pts: 0:00:04.440000000, duration: 0:00:00.040000000, offset: 111, offset_end: 112, flags: 00000000 ) 0x76b02d40
2.push mode(PTS not written on KF):
gst-launch-1.0 -v souphttpsrc location='https://dl.dropboxusercontent.com/u/38760017/xvid_packed_AS.avi' !queue2!avidemux!fakesink silent=false
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2486 bytes, dts: 0:00:00.000000000, pts: none, duration: 0:00:00.040000000, offset: 0, offset_end: 1, flags: 00004040 discont tag-memory ) 0x75b02140
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (125 bytes, dts: 0:00:00.040000000, pts: none, duration: 0:00:00.040000000, offset: 1, offset_end: 2, flags: 00004000 tag-memory ) 0x75b02000
....
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (6576 bytes, dts: 0:00:04.400000000, pts: none, duration: 0:00:00.040000000, offset: 110, offset_end: 111, flags: 00000000 ) 0x74933a30
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (25142 bytes, dts: 0:00:04.440000000, pts: none, duration: 0:00:00.040000000, offset: 111, offset_end: 112, flags: 00000000 ) 0x75c02320
Our HW decoder expects PTS to be written on keyframes when dealing with mpeg4 part2 codecs, but when avidemux operates in PUSH mode, there is no PTS available so playback doesn't work.
Version: 1.4.4