Sebastian Dröge
351bb1bbb6
vp8enc: Implement multipass encoding
...
Fixes bug #621348 .
2010-06-15 11:51:41 +02:00
Sebastian Dröge
0679c76b64
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.
2010-06-14 15:56:24 +02:00
Sebastian Dröge
c2809e6843
vp8enc: Use VPX defines for REALTIME, GOOD/BEST quality deadlines instead of our own
...
These are the values used for the speed property.
2010-06-14 15:52:28 +02:00
Tim-Philipp Müller
f49f4c0bd4
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’
2010-06-03 10:49:40 +01:00
Tim-Philipp Müller
9b1ee36328
basevideo, vp8: guard unstable API with GST_USE_UNSTABLE_API
...
Add some guards and fat warnings to the header files with still unstable
API, so people who just look at the installed headers know that it
actually is unstable API.
Merging previous commit into current codebase.
2010-06-02 19:28:15 -07:00
David Schleef
bdb5926cda
basevideo: Move base video from vp8 to gst-libs
2010-06-02 00:01:10 -07:00
Sebastian Dröge
443af97a41
vp8: Use VPX_PLANE_* instead of PLANE_*
2010-06-01 11:19:46 +02:00
Sebastian Dröge
637a12a028
vp8: Add compatilibity defines to work with older versions of libvpx too
2010-06-01 11:19:46 +02:00
Philip Jägenstedt
4c552be9d9
vp8dec: s/IMG_FMT_I420/VPX_IMG_FMT_I420/
...
This corresponds to upstream libvpx commit 6cd4a10e167203d1deb79abf60ee72599e97891b
2010-06-01 11:19:46 +02:00
Sebastian Dröge
b43afeffd7
vp8enc: Allow a maximum keyframe distance of 0, i.e. all frames are keyframes
2010-06-01 11:19:46 +02:00
Sebastian Dröge
24027dd9f2
vp8dec: Set decoder deadline from the QoS information
2010-06-01 11:19:45 +02:00
Sebastian Dröge
e9c48d1671
vp8enc: Move debug output one line above where the packet is still valid
2010-05-28 16:35:50 +02:00
Sebastian Dröge
1e1d52f4fc
vp8enc: Correctly ignore non-frame packets from the encoder
...
Fixes bug #619916 .
2010-05-28 15:01:15 +01:00
Sebastian Dröge
179555c45b
basevideodecoder: Take the frame duration into account when calculating the earliest time
...
This formula is used in many other elements too.
Fixes bug #619318 .
2010-05-22 11:01:13 +02:00
Sebastian Dröge
71ebf1add6
basevideodecoder: Reset QoS values when necessary
2010-05-22 11:01:06 +02:00
Sebastian Dröge
2fa8d69d82
vp8enc: Use GST_VIDEO_CAPS_YUV(I420) instead of handwritten I420 caps for the pad template
...
Fixes bug #619344 .
2010-05-22 11:00:44 +02:00
Philip Jägenstedt
0285cff300
vp8dec: drop late frames after decoding them
...
This saves a memcpy, which is always something.
2010-05-21 22:23:27 +02:00
Philip Jägenstedt
7ce969720f
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).
2010-05-21 22:23:13 +02:00
Philip Jägenstedt
17ab21dae3
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.
2010-05-21 22:23:04 +02:00
Sebastian Dröge
b740f4c8dd
vp8dec: Only enable postprocessing if the decoder supports it
2010-05-21 10:54:57 +02:00
Philip Jägenstedt
c01e89d07e
vp8: typo: s/HAVE_VP8_DECODER/HAVE_VP8_ENCODER/
...
Fixup for bug #619172 .
2010-05-21 10:18:31 +02:00
Philip Jägenstedt
54e6f65ef3
vp8: move #ifdef HAVE_VP8_ENCODER/DECODER
...
Otherwise we'll try including e.g. <vpx/vp8cx.h> which doesn't exist.
2010-05-21 08:27:06 +02:00
Sebastian Dröge
d0f09279ed
vp8enc: Write GStreamer element and version in the vorbiscomment vendor string
2010-05-20 20:06:09 +02:00
Sebastian Dröge
d3c9d84fdf
vp8: Only enable the encoder or decoder if it's available in libvpx
...
Fixes bug #619172 .
2010-05-20 16:49:55 +02:00
Philip Jägenstedt
e428c10605
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
2010-05-20 16:49:55 +02:00
Philip Jägenstedt
2f4ea3b734
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.
2010-05-20 10:37:24 +02:00
Sebastian Dröge
fd77b419a4
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.
2010-05-20 09:56:25 +02:00
Sebastian Dröge
973267747c
vp8enc: Some more minor adjustments for the Ogg mapping
2010-05-20 08:55:44 +02:00
Sebastian Dröge
e3925075f9
vp8dec: Fix memory leak
2010-05-19 23:04:07 +02:00
Sebastian Dröge
9b0cd2ef95
vp8enc: Adjust Ogg mapping for the changes
2010-05-19 21:34:42 +02:00
Sebastian Dröge
5dd5a8292a
vp8dec: Add properties to control the VP8 decoder post processing feature
...
This is disabled by default for now.
2010-05-19 19:24:04 +02:00
Sebastian Dröge
28736fa1d4
vp8enc: Rename keyframe-interval to max-keyframe-distance
...
And use default settings for buffer sizes until we expose this
somehow.
2010-05-19 19:24:04 +02:00
Sebastian Dröge
ab14c8cf5a
vp8: Improve error handling and debug output
2010-05-19 19:24:04 +02:00
Sebastian Dröge
31d603b3c9
vp8: Use correct strides and plane offsets for GStreamer
2010-05-19 19:24:03 +02:00
Sebastian Dröge
10a02618c2
vp8enc: Implement GstTagSetter interface
2010-05-19 19:24:03 +02:00
Sebastian Dröge
09c879ea21
vp8enc: Fix setting of the keyframe flag on encoded frames
2010-05-19 19:24:03 +02:00
Sebastian Dröge
dd97378702
vp8enc: Post an error message on the bus if encoder initialization fails
2010-05-19 19:24:03 +02:00
Sebastian Dröge
66844e24d1
vp8dec: Fix memory leaks and fail if initializing the decoder fails
2010-05-19 19:24:03 +02:00
David Schleef
95ddcc24fd
vp8enc: Set timebase
...
Also misc cleanup.
2010-05-19 19:24:03 +02:00
Sebastian Dröge
557fe5c0e4
vp8dec: Fix decoding of invisible frames
2010-05-19 19:24:03 +02:00
Sebastian Dröge
53c47c361d
vp8enc: Update the latency when initializing the encoder
2010-05-19 19:24:03 +02:00
Sebastian Dröge
ac7cba4ac2
vp8dec: Correctly initialize stream info before peeking at the stream
...
Otherwise peeking will fail and we'll get invalid values
2010-05-19 19:24:03 +02:00
Sebastian Dröge
16f6ed7195
vp8dec: Make sure to pass a keyframe as first frame to the decoder, copy output frames only once and require width/height/etc on the input caps
2010-05-19 19:24:02 +02:00
Sebastian Dröge
29328031ad
vp8enc: Add support for invisible frames and the Ogg mapping
2010-05-19 19:24:02 +02:00
David Schleef
bf8ae5a18e
vp8dec: Fix reset after seeking
...
Also remove some unused code.
2010-05-19 19:24:02 +02:00
Sebastian Dröge
45011174e7
vp8enc: Set frame numbers as buffer offsets
2010-05-19 19:24:02 +02:00
Sebastian Dröge
3c2c565fff
vp8enc: Always get as many frames as possible from the encoder
2010-05-19 19:24:02 +02:00
Sebastian Dröge
620e31efab
vp8enc: Fill the oldest pending frame instead of the newest
2010-05-19 19:24:02 +02:00
Sebastian Dröge
370ba5cac7
vp8enc: Correctly set delta unit flag for non-keyframes
2010-05-19 19:24:02 +02:00
David Schleef
4991d5fef3
vp8: Add encoder/decoder
2010-05-19 19:24:02 +02:00