After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 794620 - x265enc flags all frames as delta
x265enc flags all frames as delta
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal major
: 1.14.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2018-03-23 13:40 UTC by James Stevenson
Modified: 2018-03-24 20:00 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Flag keyframe if IFrame or IDR (827 bytes, patch)
2018-03-23 13:45 UTC, James Stevenson
committed Details | Review

Description James Stevenson 2018-03-23 13:40:16 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
Comment 1 James Stevenson 2018-03-23 13:45:31 UTC
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
Comment 2 Tim-Philipp Müller 2018-03-24 20:00:02 UTC
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