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 668095 - keyunits-scheduler: New element for scheduling GstForceKeyUnit events
keyunits-scheduler: New element for scheduling GstForceKeyUnit events
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on: 118142
Blocks: 668094
 
 
Reported: 2012-01-17 14:13 UTC by Andoni Morales
Modified: 2013-04-18 08:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Add keyunits scheduler element (12.55 KB, patch)
2012-01-17 14:14 UTC, Andoni Morales
none Details | Review

Description Andoni Morales 2012-01-17 14:13:50 UTC
New element that sends GstForceKeyUnit events at a regular interval downstream
Comment 1 Andoni Morales 2012-01-17 14:14:16 UTC
Created attachment 205446 [details] [review]
Add keyunits scheduler element
Comment 2 Andoni Morales 2012-01-18 12:20:18 UTC
I see some errors in configure.ac... I'll fix them first :)
Comment 3 Stefan Sauer (gstreamer, gtkdoc dev) 2012-07-08 18:26:35 UTC
Review of attachment 205446 [details] [review]:

::: gst/kuscheduler/gstkeyunitsscheduler.c
@@ +29,3 @@
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch videotestsrc ! keyunitsscheluer interval=10000000000 ! vp8enc ! webmmux ! hlssink

typo: keyunitscheduler
Comment 4 Stefan Sauer (gstreamer, gtkdoc dev) 2012-07-08 18:28:18 UTC
Isn't this a workaround for not having an encoder interface where we could specify the keyunit rate?
Comment 5 Andoni Morales 2012-07-09 12:37:23 UTC
In a multi-bitrate scenario, all encoders should produce a keyframe at the same stream position, at least for HLS, Smooth Streaming and the basic profiles of DASH (DASH supports having streams with keyframes not aligned, but not for the basic profiles). Also you should be able to add a new quality/encoder at any time for a live stream.

This element is therefore used for 2 goals at the encoder level:
  * Generate keyframes at a fixed interval.
  * Synchronize encoders to generate keyframes at the same instant and create streams that are keyframe-aligned at the fragment boundaries.

Most encoders have an API for creating keyframes at a regular interval but this wouldn't allow us inserting new encoders in the pipeline and create keyframe-aligned streams. Also, forcing keyframe at a regular interval in the encoder is suboptimal, instead we let the encoder decide whatever is best in the X seconds interval and force a keyframe only when needed.

Note that this event will flow downstream down to the sinks and it's also used by muxers and sinks to determine when a new fragment should be created.
Comment 6 Andoni Morales 2012-07-09 12:42:14 UTC
(In reply to comment #4)
> Isn't this a workaround for not having an encoder interface where we could
> specify the keyunit rate?

I miss-read your question, so forget my comments about forcing a keyframe at fixed interval in the encoders :)
Generating the keyunit event in the encoder wouldn't let us synchronize them and that's why it should be done in the raw source.
Comment 7 Olivier Crête 2013-04-17 23:48:25 UTC
I see that your newer BaseAdaptive produces regular upstream events, is this still used/necessary/better ?
Comment 8 Andoni Morales 2013-04-18 08:13:12 UTC
That's no longer needed since the sink supports multibitrate and the synchronization happens in a single sink element.