Without this patch vp8enc send header before and after first
key frame. On second keyframe vp8dec will crash without getting
decoded frame. With this pipe it is easy to reproduce this issue:
gst-launch-1.0 videotestsrc ! vp8enc ! vp8dec ! fakesink
https://bugzilla.gnome.org/show_bug.cgi?id=680667
I only tested that vp8enc ! vp8dec does not crash, as valgrind does not grok
at least one of the instructions used by vp8enc, preventing me from checking
a leak, and the lack of one after the patch.
libvpx 1.1.0 disallows a bitrate of 0, which was used by
vp8enc as a default value.
Instead, we use the default libvpx bitrate, scaled to our
video size, if no bitrate was specified.
This fixes encoding VP8 video with libvpx 1.1.0.
https://bugzilla.gnome.org/show_bug.cgi?id=676245
Avoid getting output_state for every buffer as that requires
getting the objectlock and doing reference counting. Store it locally
when it is created and use it.
Using the input state was causing a crash because the strides/offsets
would be wrong. Fix it by using the output as we are dealing with
the decoded frame.
libvpx 1.1.0 disallows a bitrate of 0, which was used by
vp8enc as a default value.
Instead, we use the default libvpx bitrate, scaled to our
video size, if no bitrate was specified.
This fixes encoding VP8 video with libvpx 1.1.0.
https://bugzilla.gnome.org/show_bug.cgi?id=676245
altref/invisible frames usually stored in container with same timestamp as
dependet frame. This make basevideodecoder to update timestamp for dependet
frame and couse TS colision on next frame:
^- here is altref
time : 1 2 3 4 5 6 7 8 9
webm ts : 1 3 5 5 7 9
vp8dec ts: 1 3 7 7 9
Fix bug: https://bugzilla.gnome.org/show_bug.cgi?id=655245
Signed-off-by: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net>
This is initial preset file, currently with only one profile
for realtime encoding.
Signed-off-by: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net>
It will fix handling of altref/invisible frames since matroska-mux
drop any fram with no timestamp.
see also:
http://www.webmproject.org/code/specs/container/
The encoder will currently set the AR's timestamp as close as possible
to the previous frame while attempting to provide a timestamp that is
strictly increasing. In cases where the time base given to the encoder
at configure time is not granular enough to allow for this the AR
will share the same timestamp as D, but should be
treated as having no duration.
Fixes bug #652951
Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
the commit f9b552f049 (vp8dec: set par to 1/1)
will fix situation where no aspect-ratio is set, but it brake
stream with available aspect-ratio. This patch fix it.
Fixes: #652902.
Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
While this changes API slightly (e.g. actually uses set_format now), which is OK
for unstable API, it has following merits:
* symmetric w.r.t. stop at state change
* in line with other base class practice
* otherwise no subclass method at state change (global activation time)
Moreover, subclassese are either unaffected or trivially adjusted accordingly.