Commit graph

58 commits

Author SHA1 Message Date
Sebastian Dröge
6af5e9ce38 [MOVED FROM BAD 085/134] vp8enc: Update for GstBaseVideoEncoder::finish() signature change 2012-09-16 15:27:15 +02:00
Olivier Crête
140bd5c092 [MOVED FROM BAD 084/134] vp8: Fix set-but-unused warnings 2012-09-16 15:27:15 +02:00
Sebastian Dröge
c498e188b9 [MOVED FROM BAD 083/134] vp8enc: Use destroy notify to free the coder hook 2012-09-16 15:27:15 +02:00
David Schleef
ec126d9589 [MOVED FROM BAD 082/134] vp8enc: update for new libvpx api 2012-09-16 15:27:15 +02:00
Alexey Fisher
2d8a989c95 [MOVED FROM BAD 081/134] vp8enc: generate a timestamp for alt-ref frames.
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>
2012-09-16 15:27:15 +02:00
Sebastian Dröge
24519a0ad3 [MOVED FROM BAD 078/134] vp8enc: Name max/min quantizer properties {max,min}-quantizer
Also improve quality property description.
2012-09-16 15:27:15 +02:00
Alexey Fisher
fbf253c632 [MOVED FROM BAD 077/134] vp8enc: Add properties to select a maximum and minimum quantizer
Fixes bug #641405.
2012-09-16 15:27:15 +02:00
Alexey Fisher
b6a52550b4 [MOVED FROM BAD 076/134] vp8enc: Fix quality to (constant) quantizer mapping
This now allows to select all possible quantizers between
0 and 63.

See bug #641405.
2012-09-16 15:27:15 +02:00
Mark Nauwelaerts
1d8a499ceb [MOVED FROM BAD 070/134] basevideoencoder: provide proper upstream flow return handling 2012-09-16 15:27:15 +02:00
Mark Nauwelaerts
ddd32f1b05 [MOVED FROM BAD 069/134] vp8enc: minor optimization in setting up image buffer 2012-09-16 15:27:15 +02:00
Mark Nauwelaerts
b6ca1c8171 [MOVED FROM BAD 068/134] vp8enc: refactor frame processing 2012-09-16 15:27:14 +02:00
Mark Nauwelaerts
a24df7d3c7 [MOVED FROM BAD 067/134] vp8enc: do init at set_format time 2012-09-16 15:27:14 +02:00
Mark Nauwelaerts
33ec5fd08f [MOVED FROM BAD 066/134] vp8enc: fix keyframe forcing 2012-09-16 15:27:14 +02:00
Mark Nauwelaerts
e68033782b [MOVED FROM BAD 065/134] basevideocodec: remove redundant caps field
... as it is already at hand as the src pad's negotiated caps.
2012-09-16 15:27:14 +02:00
Mark Nauwelaerts
402879a52e [MOVED FROM BAD 064/134] vp8enc: use baseclass event virtual handler 2012-09-16 15:27:14 +02:00
Alexey Fisher
4d5ad6d0ca [MOVED FROM BAD 061/134] vp8enc: Add description for bitrate units. 2012-09-16 15:27:14 +02:00
David Schleef
7734336a97 [MOVED FROM BAD 060/134] vp8enc: Readd setting of granulepos
Revert parts of last patch that removed setting of granulepos.
oggmux still requires correct granulepos in incoming packet.
2012-09-16 15:27:14 +02:00
David Schleef
161b89d552 [MOVED FROM BAD 059/134] vp8enc: Don't override timestamps set by base class
Because the base class does it correctly.
Fixes: #635720, #625558.
2012-09-16 15:27:14 +02:00
Edward Hervey
785bf960dd [MOVED FROM BAD 058/134] vp8: Remove dead assignments 2012-09-16 15:27:14 +02:00
David Schleef
49d0bcce24 [MOVED FROM BAD 057/134] basevideo: Move common fields/functions to basecodec 2012-09-16 15:27:14 +02:00
Sebastian Dröge
3509034bc9 [MOVED FROM BAD 054/134] vp8enc: Add support for enabling automatic insertion of alt-ref frames by the encoder 2012-09-16 15:27:14 +02:00
Sebastian Dröge
084d1588a9 [MOVED FROM BAD 053/134] vp8enc: Fix handling of invisible/alt ref frames 2012-09-16 15:27:14 +02:00
Sebastian Dröge
6be4d8efe0 [MOVED FROM BAD 052/134] vp8: Add initial documentation, based on the theoradec/theoraenc documentation 2012-09-16 15:27:14 +02:00
Sebastian Dröge
2856d8a6fa [MOVED FROM BAD 051/134] vp8: Move structure definitions, etc to public header files for gtk-doc 2012-09-16 15:27:14 +02:00
Sebastian Dröge
83ffb384d0 [MOVED FROM BAD 050/134] vp8enc: Implement multipass encoding
Fixes bug #621348.
2012-09-16 15:27:14 +02:00
Sebastian Dröge
7f3e1a1484 [MOVED FROM BAD 049/134] vp8enc: Set VP8E_SET_CPUUSED to 0
This setting controls how much CPU can be used by the encoder, specified
in fractions of 16. Negative values mean strict enforcement of this
while positive values are adaptive.

The default value is -4, which means that we're not running as fast
as possible and probably are wasting some quality. 0 is the recommended
default by libvpx upstream.
2012-09-16 15:27:14 +02:00
Sebastian Dröge
ec2c2b5fcc [MOVED FROM BAD 048/134] vp8enc: Use VPX defines for REALTIME, GOOD/BEST quality deadlines instead of our own
These are the values used for the speed property.
2012-09-16 15:27:14 +02:00
Tim-Philipp Müller
87fee9151b [MOVED FROM BAD 047/134] vp8enc: fix printf format warning in log message
gstvp8enc.c:564: error: format ‘%d’ expects type ‘int’, but argument 8 has type ‘size_t’
gstvp8enc.c:744: error: format ‘%d’ expects type ‘int’, but argument 8 has type ‘size_t’
2012-09-16 15:27:14 +02:00
Sebastian Dröge
2014a7eee2 [MOVED FROM BAD 044/134] vp8: Use VPX_PLANE_* instead of PLANE_* 2012-09-16 15:27:14 +02:00
Philip Jägenstedt
70305a8088 [MOVED FROM BAD 042/134] vp8dec: s/IMG_FMT_I420/VPX_IMG_FMT_I420/
This corresponds to upstream libvpx commit 6cd4a10e167203d1deb79abf60ee72599e97891b
2012-09-16 15:27:14 +02:00
Sebastian Dröge
0de97a2e85 [MOVED FROM BAD 041/134] vp8enc: Allow a maximum keyframe distance of 0, i.e. all frames are keyframes 2012-09-16 15:27:14 +02:00
Sebastian Dröge
8e3994ad8f [MOVED FROM BAD 039/134] vp8enc: Move debug output one line above where the packet is still valid 2012-09-16 15:27:13 +02:00
Sebastian Dröge
e0aa93f455 [MOVED FROM BAD 038/134] vp8enc: Correctly ignore non-frame packets from the encoder
Fixes bug #619916.
2012-09-16 15:27:13 +02:00
Sebastian Dröge
13dbfc2fa9 [MOVED FROM BAD 035/134] vp8enc: Use GST_VIDEO_CAPS_YUV(I420) instead of handwritten I420 caps for the pad template
Fixes bug #619344.
2012-09-16 15:27:13 +02:00
Philip Jägenstedt
ee152678af [MOVED FROM BAD 033/134] vp8enc: threads property
Increasing from 1 to 2 threads on an Thinkpad X60s decreased encode time
in a test from ~24 s to ~19 s, so this is quite useful.

Ideally we should let 0 be the default and automatically match the number
of CPU cores (or something).
2012-09-16 15:27:13 +02:00
Philip Jägenstedt
109a4f4e12 [MOVED FROM BAD 032/134] vp8enc: add mode property to switch between CBR/VBR
Always using CBR when bitrate is used isn't that great, VBR mode
can produce meaningful results too.
2012-09-16 15:27:13 +02:00
Philip Jägenstedt
7f56565f76 [MOVED FROM BAD 029/134] vp8: move #ifdef HAVE_VP8_ENCODER/DECODER
Otherwise we'll try including e.g. <vpx/vp8cx.h> which doesn't exist.
2012-09-16 15:27:13 +02:00
Sebastian Dröge
70015da68e [MOVED FROM BAD 028/134] vp8enc: Write GStreamer element and version in the vorbiscomment vendor string 2012-09-16 15:27:13 +02:00
Sebastian Dröge
9cb55fb96b [MOVED FROM BAD 027/134] vp8: Only enable the encoder or decoder if it's available in libvpx
Fixes bug #619172.
2012-09-16 15:27:13 +02:00
Philip Jägenstedt
2c0d247ad9 [MOVED FROM BAD 026/134] vp8: exlcude dec/enc based on CONFIG_VP8_DECODER/ENCODER
This may not be very autotoolish, but works with libvpx in the state
that libvpx is actually in. Moved the debug init to the elements
themselves to minimize amount of #ifdefs
2012-09-16 15:27:13 +02:00
Philip Jägenstedt
80d2b43443 [MOVED FROM BAD 025/134] vp8enc: Limit max-latency to 25 to match libvpx
From libvpx/vp8/encoder/onyx_int.h:
 #define MAX_LAG_BUFFERS (CONFIG_REALTIME_ONLY? 1 : 25)

While we don't need to be tied to what libvpx does internally, it
doesn't make sense to pretend to support longer frame lags than are
actually possible.
2012-09-16 15:27:13 +02:00
Sebastian Dröge
67adf511fd [MOVED FROM BAD 024/134] vp8: Undef HAVE_CONFIG_H before including libvpx headers
A public libvpx header includes private headers if this is
defined, causing compilation failures because the private headers
are not installed of course.
2012-09-16 15:27:13 +02:00
Sebastian Dröge
78fc2011db [MOVED FROM BAD 023/134] vp8enc: Some more minor adjustments for the Ogg mapping 2012-09-16 15:27:13 +02:00
Sebastian Dröge
b7e64c7c69 [MOVED FROM BAD 021/134] vp8enc: Adjust Ogg mapping for the changes 2012-09-16 15:27:13 +02:00
Sebastian Dröge
f4f6bc62f4 [MOVED FROM BAD 019/134] vp8enc: Rename keyframe-interval to max-keyframe-distance
And use default settings for buffer sizes until we expose this
somehow.
2012-09-16 15:27:13 +02:00
Sebastian Dröge
6ce8a5609f [MOVED FROM BAD 018/134] vp8: Improve error handling and debug output 2012-09-16 15:27:13 +02:00
Sebastian Dröge
3028d1abc0 [MOVED FROM BAD 017/134] vp8: Use correct strides and plane offsets for GStreamer 2012-09-16 15:27:13 +02:00
Sebastian Dröge
5d397656f9 [MOVED FROM BAD 016/134] vp8enc: Implement GstTagSetter interface 2012-09-16 15:27:13 +02:00
Sebastian Dröge
e3ede57f5e [MOVED FROM BAD 015/134] vp8enc: Fix setting of the keyframe flag on encoded frames 2012-09-16 15:27:13 +02:00
Sebastian Dröge
b1f35fff9d [MOVED FROM BAD 014/134] vp8enc: Post an error message on the bus if encoder initialization fails 2012-09-16 15:27:13 +02:00