rtph264depay: bytestream/AU output doesn't output individual AUs/frames per buffer
gst-launch-1.0 videotestsrc pattern=ball ! video/x-raw,width=1280,height=720,framerate=25/1 ! timeoverlay halignment=center valignment=center ! tee name=t ! queue ! x264enc tune=zerolatency key-int-max=50 ! video/x-h264,profile=constrained-baseline ! rtph264pay config-interval=-1 aggregate-mode=zero-latency ! rtph264depay ! video/x-h264,stream-format=byte-stream,alignment=au ! fakesink silent=false -v
See e.g.
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (1191 bytes, dts: 1000:00:07.960000000, pts: 1000:00:07.960000000, duration: none, offset: -1, offset_end: -1, flags: 00002200 marker delta-unit , meta: none) 0x7fd45828e6c0
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (481 bytes, dts: 1000:00:08.000000000, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7fd45828e120
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (378 bytes, dts: none, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7fd45828ec60
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (438 bytes, dts: none, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7fd45828e6c0
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (6054 bytes, dts: 1000:00:08.000000000, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7fd450019900
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (378 bytes, dts: none, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7fd45828e5a0
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (746 bytes, dts: none, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7fd45828e6c0
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (563 bytes, dts: 1000:00:08.000000000, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7fd450019900
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (439 bytes, dts: none, pts: 1000:00:08.000000000, duration: none, offset: -1, offset_end: -1, flags: 00000200 marker , meta: none) 0x7fd450019ea0
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (2022 bytes, dts: 1000:00:08.040000000, pts: 1000:00:08.040000000, duration: none, offset: -1, offset_end: -1, flags: 00002200 marker delta-unit , meta: none) 0x7fd45828e360
All the buffers with 1000:00:08.000000000
timestamp are decoding to a single frame.
Having rtph264depay
output AVC/AU and then let h264parse
convert that to bytestream/AU works around this problem. Simply putting an h264parse disable-passthrough=true
there does not work around it, so there's probably also a bug in h264parse
here.