Commit Graph

119 Commits

Author SHA1 Message Date
Deb Mukherjee
635bb7aed4 Change macros to be compatible with master branch
Changes image fmt and codec capability macro names.

Change-Id: Ic07fbd8de307cb1bfcf9ed4b4bc3feaa5767c53b
2014-09-12 11:47:39 -07:00
Alexander Voronov
7dc3cdba0c Make --output-bit-depth option working with variable resolution.
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
2014-09-10 16:30:30 +04:00
Alexander Voronov
f9b4008020 Fix chroma plane size in bit-depth conversion.
Change-Id: Ie75ef8f934d02b57b543ca308ae304458d3962a8
2014-09-10 15:03:50 +04:00
Deb Mukherjee
23b5c58174 Set scaled image format correctly
Change-Id: Ic4ced4208375ca31f8adb73a5ee9ddd7da50dfac
2014-08-22 23:33:29 -07:00
James Hutchinson
3489c19d2b Merge branch 'master' into highbitdepth
Conflicts:
	configure
	test/convolve_test.cc
	test/dct16x16_test.cc
	test/dct32x32_test.cc
	test/fdct4x4_test.cc
	test/fdct8x8_test.cc
	test/partial_idct_test.cc
	third_party/libyuv/README.libvpx
	vp9/common/vp9_enums.h
	vp9/common/vp9_idct.h
	vp9/common/vp9_rtcd_defs.pl
	vp9/decoder/vp9_decodeframe.c
	vp9/encoder/vp9_bitstream.c
	vp9/encoder/vp9_encodeframe.c
	vp9/encoder/vp9_encoder.c
	vp9/encoder/vp9_encoder.h
	vp9/encoder/vp9_extend.c
	vp9/encoder/vp9_quantize.c
	vp9/encoder/vp9_rd.c
	vp9/encoder/vp9_rdopt.c
	vp9/vp9_cx_iface.c
	vp9/vp9_dx_iface.c
	vp9/vp9_iface_common.h
	vpx/vp8cx.h
	vpx_scale/generic/yv12config.c
	vpxdec.c
	vpxenc.c

Change-Id: If4104c5a7cd0a29dd0bed7c3804837ba40ba7e0c
2014-08-19 10:58:02 -07:00
Deb Mukherjee
17ea6ab67b Initialization to prevent asan failure on google3
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
2014-08-13 08:41:40 -07:00
Jim Bankoski
f452961765 fixes several -Wunused-function warnings
Change-Id: I4dc2cb255f4fe30998b6ee61184895dee9f5da8e
2014-08-12 16:51:07 -07:00
Jim Bankoski
5c41891864 vpxdec warning errors addressed
Change-Id: I4e2aeaef3e6efd5be3cb963d2eba5e08dc89b803
2014-08-04 12:07:43 -07:00
James Hutchinson
41c8641b6b Merge branch 'master' into highbitdepth
Conflicts:
    configure
    test/convolve_test.cc
    test/dct16x16_test.cc
    test/dct32x32_test.cc
    test/fdct4x4_test.cc
    test/fdct8x8_test.cc
    vp9/common/vp9_alloccommon.c
    vp9/common/vp9_entropy.c
    vp9/common/vp9_enums.h
    vp9/common/vp9_quant_common.c
    vp9/common/vp9_quant_common.h
    vp9/common/vp9_rtcd_defs.pl
    vp9/common/vp9_scale.c
    vp9/decoder/vp9_decodeframe.c
    vp9/decoder/vp9_decodeframe.h
    vp9/decoder/vp9_detokenize.c
    vp9/encoder/vp9_aq_complexity.c
    vp9/encoder/vp9_bitstream.c
    vp9/encoder/vp9_encodeframe.c
    vp9/encoder/vp9_encodemb.c
    vp9/encoder/vp9_encoder.c
    vp9/encoder/vp9_firstpass.c
    vp9/encoder/vp9_mcomp.c
    vp9/encoder/vp9_pickmode.c
    vp9/encoder/vp9_quantize.c
    vp9/encoder/vp9_ratectrl.c
    vp9/encoder/vp9_rd.c
    vp9/encoder/vp9_rdopt.c
    vp9/encoder/vp9_temporal_filter.c
    vp9/encoder/vp9_tokenize.c
    vp9/vp9_cx_iface.c
    vp9/vp9_dx_iface.c
    vpx/vpx_codec.h
    vpx/vpx_image.h
    vpx_scale/generic/yv12config.c
    vpxdec.c
    vpxenc.c
    vpxenc.h
    y4menc.c
    y4minput.c

Change-Id: I53b19ea1d9818a4440481920065d70164348d02e
2014-07-18 14:58:26 -07:00
Deb Mukherjee
090f4d4b5a Adds support for raw yuv files for 422/444
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
2014-07-16 09:44:30 -07:00
Deb Mukherjee
cc3e6d68df Support for raw yuv input in 422/444 sampling
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
2014-07-16 09:21:16 -07:00
Deb Mukherjee
f332c6305e Renames interface field in VpxInterface
Renames interface to codec_interface since it is a reserved
word on windows.

Change-Id: I84f2cbf257a4c44f16dc2464127e35ee405c2c3e
2014-07-15 16:55:12 -07:00
Deb Mukherjee
449e5f2aba Misc. bit-depth related changes
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
2014-07-14 11:48:04 -07:00
Peter de Rivaz
02c3221593 Allow more combinations for output bitdepth
Change-Id: I1e5de85320d825ffdf90be53720e581f72a5f701
2014-07-10 11:50:25 +01:00
Deb Mukherjee
5820c5d614 Adds support for reading and writing 10/12-bit y4m
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
2014-07-05 16:00:54 -07:00
Dmitry Kovalev
3643544fe0 Merge "Reverting "Adds support for reading and writing 10/12-bit y4m" for now because of Mac Build Failure." 2014-07-03 12:59:31 -07:00
Dmitry Kovalev
79199e465a Reverting "Adds support for reading and writing 10/12-bit y4m" for now because of Mac Build Failure.
This reverts commit 82dc1332af

Change-Id: I824bf42bf47c7df6985c79e451d6af913030d374
2014-07-02 22:23:38 -07:00
James Zern
4ac3b7ab13 Merge "vpxdec: add --keep-going option" 2014-07-02 19:28:40 -07:00
Deb Mukherjee
82dc1332af Adds support for reading and writing 10/12-bit y4m
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
2014-07-02 05:41:14 -07:00
James Zern
95853db8e2 vpxdec: add --keep-going option
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
2014-07-01 19:05:23 -07:00
Deb Mukherjee
7051f38e5a Extending y4m writing
Also adds some cleanups.

Change-Id: I0b35c6645236c7ca3f05e3ed9eae4571fd8249d2
2014-06-27 15:35:36 -07:00
Peter de Rivaz
8ca39ede47 Extended quantizer range for high bitdepth
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
2014-06-18 13:36:36 +01:00
Deb Mukherjee
093a32ffd7 Reworks high-bit-depth profiles
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
2014-06-10 17:30:45 -07:00
Deb Mukherjee
e91d29dea3 Alternate rounding
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
2014-06-06 05:10:31 -07:00
Peter de Rivaz
1ff621ec99 Added support for 10/12bit y4m
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
2014-06-03 17:46:06 +01:00
Peter de Rivaz
cab30216a5 Merge branch 'master' into highbitdepth
Merges from master (May 26) to highbitdepth.

Change-Id: I553888a7b169b48e7bea07325d1127627a8f944e
2014-05-27 09:53:35 -07:00
Peter de Rivaz
efd115c415 Merge commit '9e7b09bc' into highbitdepth
Change-Id: I0376c867e7abfa7713ac6e7a4e604c8384fff58b
2014-05-23 14:06:31 -07:00
Deb Mukherjee
47031c0a54 Updates libyuv to version 1005
Also adds compile check and a libyuv configure flag

Change-Id: Ib9f0f4a71c4083e6f0aea7b5a5d175531ef0f66b
2014-05-20 17:19:57 -07:00
Deb Mukherjee
747f0e3b8e Deprecates --input-shift parameter
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
2014-05-16 22:32:22 -07:00
Peter de Rivaz
4cba43ac3d Added rounding when using --output-shift
PSNR values are slightly improved by using
rounding when shifting images back to 8bit.

Change-Id: Ida70ca48588f933a92f906cd1ebc8e88134c07f5
2014-05-14 13:41:13 -07:00
Peter de Rivaz
aa2d8ca7e2 Changed --output-shift option
--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
2014-05-14 21:32:35 +01:00
James Zern
b6cce760de vpxdec: add some missing CONFIG_WEBM_IO checks
fixes build of this file in the dist directory when using
'--enable-install-srcs'

Change-Id: I7743611bea9e0bddb473777e2e007e6eadebfc1f
2014-05-12 22:43:11 -07:00
Peter de Rivaz
99e1518a16 Added high bitdepth decoder scaling support
Change-Id: Id88da51d7f200ff347658140be3b5f6fe2d78121
2014-05-12 10:54:47 +01:00
Peter de Rivaz
2535202902 Decoder can now output 16bit YUV
Change-Id: I9c390030571388fe4e9a463a3ee959364c9c7386
2014-05-12 10:49:36 +01:00
Peter de Rivaz
bdd7f74c3f Added initial support for 16-bit framebuffers.
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
2014-04-28 22:11:19 -07:00
Deb Mukherjee
20c30771b0 Rename FilterMode for compatibility with libyuv
Renames FilterMode to FilterModeEnum for compatibility
with google3 libyuv

Change-Id: Iec845e6a6aeac4171790c87ce3dd9000ab840a36
2014-04-22 11:15:19 -07:00
Vignesh Venkatasubramanian
0ffa3836f3 Adding a configure flag to control WebM container support
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
2014-03-14 14:44:47 -07:00
Dmitry Kovalev
4334c07357 Reusing mem_get_le{16, 32} defined in vpx_ports/mem_opts.h.
Change-Id: If4b5209ac14aaba6f1c1014bc0497baa8eabfaff
2014-02-26 16:32:09 -08:00
James Yu
6d15132742 Change dx_time data type in vpxdec.c
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>
2014-02-25 09:17:06 +08:00
Jim Bankoski
24025c0477 vp9_cx_iface vp9_dx_iface vpxdec vs warnings
Change-Id: I747982e7d1157a8b45f4034ddf207306f9f957e0
2014-02-15 09:14:02 -08:00
Alex Converse
2eccbd0f4b Fix build error caused by a merge conflict.
Commit 70d9664f removed 'int i' required by a4f30a50.

Change-Id: I4e7e14e9e8532f753e43a57b5bba4589d58e0c32
2014-02-13 17:05:13 -08:00
Frank Galligan
fb8c246b70 Merge "Add VP9 decoder support for external frame buffers" 2014-02-13 15:29:52 -08:00
Frank Galligan
a4f30a5023 Add VP9 decoder support for external frame buffers
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
2014-02-13 13:14:19 -08:00
Dmitry Kovalev
2bdd43d8d4 Adding and reusing vpx_img_plane_{width, height}() functions.
Change-Id: I668afb50614644d2eac2e968e1fafd6d73170bec
2014-02-12 18:36:36 -08:00
Dmitry Kovalev
70d9664fb2 Adding API to get vpx encoder/decoder interface.
Change-Id: I137e5e6585356792913e1e84da6c0a439c5153a5
2014-02-11 21:12:23 -08:00
James Zern
75d7ee3330 vpxdec: normalize frame size types
int -> size_t for threshold values. this silences a few signed/unsigned
comparison warnings

Change-Id: Ic7b7af61f75f60a1b6d04167640cea2d09bbd967
2014-02-04 20:06:28 -08:00
James Zern
4a703576f7 remove duplicate const from vpx_codec_iface_t use
the public typedef already includes a const, quiets
'same type qualifier used more than once' warnings

Change-Id: Ib118b3b116fba59d4c6ead84d85b26e5d3ed363d
2014-01-31 16:32:42 -08:00
Dmitry Kovalev
5260b39e5f vpxdec: restoring old md5 behavior for y4m files.
Fix of https://code.google.com/p/webm/issues/detail?id=698 issue.

Change-Id: I7a92d91481dbbae28d8953f146e9faafdcd7a310
2014-01-28 11:12:58 -08:00
Frank Galligan
c6d537155c Merge "Revert external frame buffer code." 2014-01-24 11:31:23 -08:00
Frank Galligan
b1c72b633e Revert external frame buffer code.
A future CL will add external frame buffers
differently.

Squash commit of four revert commits:
Revert "Increase required number of external frame buffers"

This reverts commit 9e41d569d7.

Revert "Add external constants."

This reverts commit bbf53047b0.

Revert "Add frame buffer lru cache."

This reverts commit fbada948fa.

Conflicts:
	vpxdec.c

Change-Id: I76fe42419923a6ea6c75d9997cbbf941d73d3005

Revert "Add support to pass in external frame buffers."

This reverts commit 10f891696b.

Conflicts:
	test/external_frame_buffer_test.cc
	vp9/common/vp9_alloccommon.c
	vp9/common/vp9_reconinter.c
	vp9/decoder/vp9_decodeframe.c
	vp9/encoder/vp9_onyx_if.c
	vp9/vp9_dx_iface.c
	vpx/vpx_decoder.h
	vpx/vpx_external_frame_buffer.h
	vpx_scale/generic/yv12config.c
	vpxdec.c

Change-Id: I7434cf590f1c852b38569980e4247fad0d939c2e
2014-01-24 10:10:20 -08:00