Buffer for bit-depth conversion was allocated only on the first frame.
The next frame with resolution different from the first one led to
decoding error. With this changes decoder performs buffer reallocation
in such case.
Change-Id: I3a701ca8df53a60246354876856624e70efe81aa
Reinstates an assignment to prevent an asan failurere on google3.
Not sure why the failure happens. This was removed in a recent patch
https://gerrit.chromium.org/gerrit/#/c/71068/.
Change-Id: Ifd9ccffd4c2164f4de38b21821ffb28bd779b0f3
Adds support for raw yuv inputs in 422/444 sampling for use
in profiles 1 and 3.
New options added to vpxenc are:
--i422 and --i444, which are to be used in conjunction with
--width, --height, and --fps for proper raw yuv handling.
A new option is added to vpxdec:
--rawvideo, which enforces raw yuv video output for the
bit-stream decoded irrespective of 420, 422 or 444 sampling.
The existing options --i420 and --yv12
are specialized for use only for 420 content.
Change-Id: I2e3028380709afa673bf2e2c25ad5e271a626055
Adds options --i422 and --i444 which along with --input-bit-depth
will allow raw video input in 422 and 444 sampling at the given
bit-depth. For the decoder, the new option --rawvideo allows
decoding to raw yuv at the color sampling of the decoded bit-stream.
Change-Id: I5b3979be66c0dd2672391400850c97260cc8e1e8
Sets the bit-depth field as default 8 in the image structure in vp8.
Generalizes yuv read in preparation for support for reading 422/444
for 8-bit and 10/12-bit.
Change-Id: I560c13c348b122fd028e408431156376b895058c
The y4m extension used is the same as the one used in ffmpeg/x264.
The patch is adapted from the highbitdepth branch.
Also adds unit tests for y4m header parsing and md5 check
of the raw frame data, as well as y4m writing.
[build fix for Mac/VS by not using tuples with strings]
Change-Id: I40897ee37d289e4b6cea6fedc67047d692b8cb46
The y4m extension used is the same as the one used in ffmpeg/x264.
The patch is adapted from the highbitdepth branch.
Also adds unit tests for y4m header parsing and md5 check
of the raw frame data, as well as y4m writing.
Change-Id: Ie2794daf6dbafd2f128464f9b9da520fc54c0dd6
for debugging purposes.
continues decoding after receiving a decode error. will still exit with
an error after the current loop, ignoring remaining --loops
Change-Id: I011a71b866ff493a3f3bbb59e9bff998d19daee3
These changes allow 10 and 12 bit depth streams
to encode at higher quality by using a finer
quantizer. Category 6 tokens now transmit 18
extra bits instead of 14 in order to be able to
encode the greater range of output coefficients.
The extended quantizer range is only used when
configured with the following options:
--enable-vp9-high
--enable-high-transforms
--enable-high-quant
Change-Id: I58d2981676d67b65cc022e98cf443603d38ba6ff
Splits profile 2 into Profile 2 and 3, where profile 2
ony supports 420 sampling, while profile 3 adds 422/444 and
alpha. Keeps room for further expansion.
Also makes some minor changes in the decoder parameters,
replacing --convert-to-8bit with output-bit-depth.
Change-Id: I713525880512de6c36698d212795db1543c1d0dd
Improves performance on derf by 0.89% for 10-bit internal
and by 0.55% for 12-bit internal, both for 8-bit sources.
Change-Id: I181fd9fb10e2259233d67cdd7933fb3cae334afc
vpxenc now accepts high bitdepth y4m files
vpxdec now produces high bitdepth y4m files
(Only if the bitstream is high bitdepth)
Can force 8bit output via --covert-to-8bit
Change-Id: Ife9fc40772aceed32ba47d7ca81024ed09563721
Deprecates --input-shift parameter and instead derives that from
bit-depth assuming 8-bit input source. Eventually this needs to be
derived from the input-bit-depth parameter once we support high
bit depth input. Another parameter --test-high-internal is added
to force use of 16 bit internal buffers for testing purposes, in
profile 0 and 1.
Also --bit-depth parameter now uses values 8/10/12 which is more
intuitive than 0/1/2.
Also includes some cleanups.
Change-Id: I0bdd6d9caae8bb339d217551bb35a001057805ec
--output-shift now infers the amount to shift
from the bitdepth of the decoded file.
Option has been renamed to
--convert-to-8bit
Change-Id: Ieb2945bb282bb81c52a0c4f1b691c82bec5ec18c
Changes in this patch are only enabled if configured with
--enable-experimental --enable-vp9_high
Using a encoder command line argument of --input-shift=0 tells the coder
to work with 16bit framebuffers.
The output should be identical to before. Some features (such as input
image resizing) are not yet supported in 16bit mode.
Specifically, the behavior of the input-shift parameter is as follows:
* No argument : Behaviour as before, using 8bit frame buffers
* --experimental-bitstream --profile=2 --input-shift=0: Uses
16bit frame buffers to store 8-bit data, should give identical output
to before.
* --experimental-bitstream --profile=2 --input-shift=2 --bit-depth=1: Uses
16bit frame buffers to store 10-bit data, encodes a version 2 stream
with bitdepth 10
* --experimental-bitstream --profile=2 --input-shift=4 --bit-depth=2: Uses
16bit frame buffers to store 12-bit data, encodes a version 2 stream
with bitdepth 12
The decoder has an --output-shift argument which should be used when
decoding profile 2 streams.
So far support for the following has been added:
Intra filtering
Deblocking
Motion compensation
Variance calculation
Sad calculation
Transform
Change-Id: If345c88234aafdd40caea0d88935b1f07aaebe22
Adding a --(enable|disable)-webm-io flag to control WebM container input and
output support. For now, enabling WebM IO by default only when there is a C++
compiler. Doing so because eventually we will move WebM IO to libwebm and it
is built using C++.
Change-Id: I210ac36c23528e382ed41d3c4322291720481492
Change dx_time data type to int64_t to prevent
test time overflow when decoding long video.
Change-Id: I3dd5e324a246843e07e635fd25c50e71e385ed70
Signed-off-by: James Yu <james.yu@linaro.org>
Added support for external frame buffers to libvpx's VP9 decoder.
If the external frame buffer functions are set then libvpx will
call the get function whenever it needs a new frame buffer to
decode a frame into. And it will call the release function
whenever there are no more references to that buffer.
Change-Id: Id2934d005f606af6e052fb6db0d5b7c02f567522
the public typedef already includes a const, quiets
'same type qualifier used more than once' warnings
Change-Id: Ib118b3b116fba59d4c6ead84d85b26e5d3ed363d