GNOME Bugzilla – Bug 794620
x265enc flags all frames as delta
Last modified: 2018-03-24 20:00:23 UTC
x265enc tags all frames as delta frames. Test case for it is simple. Use the h265parser to confirm the output. The x265encoder is also setup to output a keyframe at a maximum gop size of 250. While running GST_DEBUG="3,x265enc:4" gst-launch-1.0 -v videotestsrc ! x265enc tune=4 ! identity silent=false ! h265parse ! fakesink silent=false 2>&1 |grep -vE "delta|FIXME|event" We never see a keyframe (not delta) before the h264parse /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (7838 bytes, dts: 0:00:00.000000000, pts: 0:00:00.000000000, duration: 0:00:00.033333333, offset: 0, offset_end: -1, flags: 00000440 discont header , meta: none) 0x7f0cc81113a0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (10215 bytes, dts: 0:00:08.333333333, pts: 0:00:08.333333333, duration: 0:00:00.033333333, offset: 1636598, offset_end: -1, flags: 00000000 , meta: none) 0x7f0cc81113a0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (10232 bytes, dts: 0:00:16.666666666, pts: 0:00:16.666666666, duration: 0:00:00.033333333, offset: 3279809, offset_end: -1, flags: 00000000 , meta: none) 0x7f0cc81113a0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (10231 bytes, dts: 0:00:25.000000000, pts: 0:00:25.000000000, duration: 0:00:00.033333333, offset: 4922676, offset_end: -1, flags: 00000000 , meta: none) 0x7f0cc81113a0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (10202 bytes, dts: 0:00:33.333333333, pts: 0:00:33.333333333, duration: 0:00:00.033333333, offset: 6565588, offset_end: -1, flags: 00000000 , meta: none) 0x7f0cc81113a0
Created attachment 370052 [details] [review] Flag keyframe if IFrame or IDR Same test case as original but now we have matching keyframes between identity and fakesink /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (7838 bytes, dts: 0:00:00.000000000, pts: 0:00:00.000000000, duration: 0:00:00.033333333, offset: 0, offset_end: -1, flags: 00000440 discont header , meta: none) 0x7efd4c1113a0 /GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (10215 bytes, dts: 0:00:08.333333333, pts: 0:00:08.333333333, duration: 0:00:00.033333333, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7efd4c1113a0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (10215 bytes, dts: 0:00:08.333333333, pts: 0:00:08.333333333, duration: 0:00:00.033333333, offset: 1636598, offset_end: -1, flags: 00000000 , meta: none) 0x7efd4c1113a0 /GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (10232 bytes, dts: 0:00:16.666666666, pts: 0:00:16.666666666, duration: 0:00:00.033333334, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7efd4c1113a0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (10232 bytes, dts: 0:00:16.666666666, pts: 0:00:16.666666666, duration: 0:00:00.033333333, offset: 3279809, offset_end: -1, flags: 00000000 , meta: none) 0x7efd4c1113a0 /GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (10231 bytes, dts: 0:00:25.000000000, pts: 0:00:25.000000000, duration: 0:00:00.033333333, offset: -1, offset_end: -1, flags: 00000000 , meta: none) 0x7efd4c1113a0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (10231 bytes, dts: 0:00:25.000000000, pts: 0:00:25.000000000, duration: 0:00:00.033333333, offset: 4922676, offset_end: -1, flags: 00000000 , meta: none) 0x7efd4c1113a0
Thanks! commit add2c0c35a8c0912dfc30b45f50b82f14081f2e7 Author: James Stevenson <james@stev.org> Date: Fri Mar 23 13:42:05 2018 +0000 x265: Fix tagging of keyframes on output buffers https://bugzilla.gnome.org/show_bug.cgi?id=794620