Commit Graph

168 Commits

Author SHA1 Message Date
James Zern
3fa7c9eaaf Merge "vp8_set_maps.c: Silence signed/unsigned mismatch MSVC warnings." 2014-02-19 22:55:40 -08:00
Tom Finegan
34d02b060d vp8cx_set_ref.c: Silence MSVC data loss warning.
Change-Id: I1210ce23cf8f98950c445a17ef51a73c6852c89f
2014-02-19 16:20:14 -08:00
Tom Finegan
560119c4bc vp8_set_maps.c: Silence signed/unsigned mismatch MSVC warnings.
Use unsigned loop counters in set_roi_map() and set_active_map().

Change-Id: I9bbaed38b51ef73b82ba4ad4c4bc18ca5d2399f9
2014-02-19 16:13:15 -08:00
Tom Finegan
3118aba32c twopass_encoder.c: Silence MSVC data loss warnings.
Use unsigned int instead of uint64_t for duration and deadline
arguments to functions get_frame_stats() and encode_frame().

Change-Id: I1f26a7afc38ae89916b2c67415ced26fdc9d53e7
2014-02-19 14:44:35 -08:00
James Zern
33bb443550 Merge "decode_with_drops.c: Cast away MSVC data loss warning." 2014-02-19 14:04:34 -08:00
James Zern
68d49038c8 Merge "simple_decoder.c: Silence MSVC data loss warning." 2014-02-19 14:04:20 -08:00
James Zern
8491e3c882 Merge "postproc.c: Cast away MSVC data loss warning." 2014-02-19 14:04:01 -08:00
Tom Finegan
1ea12f5b5f Merge "vpx_temporal_scalable_patterns.c: Silence MSVC warnings." 2014-02-19 12:38:41 -08:00
Tom Finegan
ebf4550990 simple_decoder.c: Silence MSVC data loss warning.
Change-Id: I138d7f62ac7e905642405e60a49ac3d282695e3f
2014-02-19 12:08:18 -08:00
Tom Finegan
a3c521e143 postproc.c: Cast away MSVC data loss warning.
Change-Id: Ib80d4f394692a981e369dc5fecd5432cbec488d1
2014-02-19 11:58:28 -08:00
Tom Finegan
6811dbc4c8 decode_with_drops.c: Cast away MSVC data loss warning.
Change-Id: Ib8ee2b9a4cb785176ca1054489df5dced004837a
2014-02-19 11:55:06 -08:00
Tom Finegan
14e3d317cd Merge "error_resilient.c: Cast away MSVC data loss warning." 2014-02-19 11:45:58 -08:00
Tom Finegan
a63a8e1037 Merge "decode_to_md5.c: Silence warning with cast." 2014-02-19 11:45:11 -08:00
Tom Finegan
fb8a2cfd29 error_resilient.c: Cast away MSVC data loss warning.
Change-Id: I6d81f7d94cb724a9f5a302ca3551196f2d06f9b4
2014-02-19 11:39:21 -08:00
Tom Finegan
3d2f832cf7 force_keyframe.c: Cast away MSVC data loss warning.
Change-Id: Ibf09b76d5b8c8106b804354d9a7f007a0e3f6173
2014-02-19 11:37:28 -08:00
Tom Finegan
7e1d0e38ee vpx_temporal_scalable_patterns.c: Silence MSVC warnings.
Change floats to doubles in RateControlMetrics, and make loop
counter signs agree.

Change-Id: I845cf268d9ce837a543d052d8d0f8dfd32bd9817
2014-02-19 11:30:08 -08:00
Tom Finegan
fdf3bfa71f decode_to_md5.c: Silence warning with cast.
More size_t/unsigned int disagreement.

Change-Id: I2be01ee680f852f168f6fcac554a534ca3c83e5d
2014-02-19 10:59:40 -08:00
Dmitry Kovalev
49b4b72b7a Merge "Adapting vp8_set_maps.c example to use new APIs." 2014-02-13 16:23:10 -08:00
Marco Paniconi
e590e087d5 Fix target frame size setting, for 1pass cbr.
Only use layered average size if number_temporal_layers > 1.

Also removed unneeded commented-out line, and change some parameter
setting in vpx_temporal_scalable_patterns.c

Change-Id: Ic86e43e7daf0313e8c5a4aba1497299158111955
2014-02-13 15:21:09 -08:00
Dmitry Kovalev
8837b022d9 Adapting vp8_set_maps.c example to use new APIs.
Change-Id: Id6e6b5a96c907261abe4348624241b4568707c1d
2014-02-13 14:18:05 -08:00
Dmitry Kovalev
f2d9525a79 Calling vpx_img_read() from vpx_temporal_scalable_patterns.
Change-Id: I7aa0f9afbd802a1d8686cad9fc6eae4baa6a53c3
2014-02-13 12:07:11 -08:00
Marco Paniconi
2eb499a5c6 Update to vpx_temporal_scalable_patterns test:
Add some rate control metrics.

Change-Id: Ie87c617bbdc31b0324c7c96a042f7bdb8aaa9c7e
2014-02-13 08:54:54 -08:00
Dmitry Kovalev
374eaf20e7 Flushing the encoder in simple_decoder example.
Change-Id: I39d78facc79a364cdc529b8cc4930d74f766d413
2014-02-12 18:38:09 -08:00
Dmitry Kovalev
70d9664fb2 Adding API to get vpx encoder/decoder interface.
Change-Id: I137e5e6585356792913e1e84da6c0a439c5153a5
2014-02-11 21:12:23 -08:00
Tom Finegan
b37e0a33c1 vpx_temporal_scalable_patterns: Remove extra const.
Silences MSVC warning.

Change-Id: I43191cdd8f0231b259ec091be24325ec99d2e962
2014-02-10 18:08:31 -08:00
Dmitry Kovalev
c761bd78fa Merge "Cleaning up {simple, twopass}_encoder examples." 2014-02-10 14:27:48 -08:00
Dmitry Kovalev
592936b497 Cleaning up {simple, twopass}_encoder examples.
Change-Id: Ide9c408f4cee7408741ef8c0ffac01645a5a67ca
2014-02-07 11:37:39 -08:00
Dmitry Kovalev
4f8a30b116 Converting vpx_temporal_scalable_patterns to use VpxVideoWriter.
Change-Id: I69e868295b9798ba1599a411926de0891680032f
2014-02-07 11:07:55 -08:00
Dmitry Kovalev
6adaec4f50 Merge "Adding video reader/writer APIs." 2014-02-06 12:52:32 -08:00
Marco Paniconi
4864ab21b0 Layer based rate control for CBR mode.
This patch adds a buffer-based rate control for temporal layers,
under CBR mode.

Added vpx_temporal_scalable_patters.c encoder for testing temporal
layers, for both vp9 and vp8 (replaces the old vp8_scalable_patterns).

Updated datarate unittest with tests for temporal layer rate-targeting.

Change-Id: I8900a854288b9354d9c697cfeb0243a9fd6790b1
2014-02-06 09:24:45 -08:00
Dmitry Kovalev
37e6fd3d76 Adding video reader/writer APIs.
Right now only IVF format is supported which is enough for example code.
Other formats like y4m, webm, raw yuv will be supported later.

Change-Id: I34c6f20731c1851947587ca5c589d7856b675164
2014-02-05 20:34:51 -08:00
James Zern
7474aebf8c vp8_set_maps.c: silence some type warnings
Change-Id: I371863fc68f4984a223a684f9e89b25e9991e1e7
2014-02-05 19:33:39 -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
99d39e5b99 Merge "Adapting decode_with_drops example to use new file reading API." 2014-01-29 11:21:08 -08:00
Dmitry Kovalev
834f2fbcec Adapting decode_with_drops example to use new file reading API.
Change-Id: Idd1acfcf8bb16a2ddb9c6c1c841a7741e90589d9
2014-01-29 11:02:17 -08:00
Dmitry Kovalev
2e862ce71c Adapting postproc example to use new file reading API.
Change-Id: Ib3747c81db8cc89b5d7012db557411a3b49712aa
2014-01-29 10:55:59 -08:00
Dmitry Kovalev
7ec2769687 Adapting simple_decoder to use new file reading API.
Change-Id: I374a0c4bb4a66c0d3dc874c6e57fdee9d1ab72df
2014-01-27 13:40:29 -08:00
Dmitry Kovalev
c2b336815d Implementing simple API to read video files.
New API is supposed to be used from example code. Current implementation
only supports IVF containers (will be extended to Y4M).

Change-Id: Ib7da87237690b1a28297bdf03bc41c6836a84b7e
2014-01-24 11:20:09 -08:00
Dmitry Kovalev
98254a441b Moving vp8_multi_resolution_encoder to examples folder.
Change-Id: If0e1cd13aecd1620d26c28bf95e4f84469f78456
2014-01-17 16:57:37 -08:00
Dmitry Kovalev
0f8787d6be Adding VP9 support to decode_to_md5 example.
This is still work in progress, there are many another planned updates
for all example files.

Change-Id: I2ba5dc6cd19a4bea9fbc6f1ee84cc2bd85925966
2014-01-15 14:38:27 -08:00
Dmitry Kovalev
a31dd326ea Cleaning up md5 example.
Change-Id: Ifee528b1663b10dbe45e0bfef79010370c914e3a
2014-01-10 14:50:58 -08:00
Dmitry Kovalev
50fa58592b Removing examples code generation and making them static.
All documentation will be provided as comments in the source files.

Change-Id: Ie609852747733c181191f864204c787a6b23ef3a
2014-01-07 15:15:25 -08:00
Yaowu Xu
b905dab377 Added necessary includes
To avoid the dependency on the order of header files included.

Change-Id: Ic142638d75fe95e6aba41b11664bfa15f076f793
2013-10-18 13:49:31 -07:00
John Koleszar
5ebe94f9f1 Build fixes to merge vp9-preview into master
Various fixups to resolve issues when building vp9-preview under the more stringent
checks placed on the experimental branch.

Change-Id: I21749de83552e1e75c799003f849e6a0f1a35b07
2012-12-26 11:21:09 -08:00
John Koleszar
7b8dfcb5a2 Rough merge of master into experimental
Creates a merge between the master and experimental branches. Fixes a
number of conflicts in the build system to allow *either* VP8 or VP9
to be built. Specifically either:

  $ configure --disable-vp9 $ configure --disable-vp8
  --disable-unit-tests

VP9 still exports its symbols and files as VP8, so that will be
resolved in the next commit.

Unit tests are broken in VP9, but this isn't a new issue. They are
fixed upstream on origin/experimental as of this writing, but rebasing
this merge proved difficult, so will tackle that in a second merge
commit.

Change-Id: I2b7d852c18efd58d1ebc621b8041fe0260442c21
2012-11-07 11:30:16 -08:00
Ronald S. Bultje
4b2c2b9aa4 Rename vp8/ codec directory to vp9/.
Change-Id: Ic084c475844b24092a433ab88138cf58af3abbe4
2012-11-01 16:31:22 -07:00
Christian Duvivier
a1168155a7 Fix warnings.
Change-Id: I4b911e4173da30c164bde7ea50bc80a70fbbb745
2012-08-14 16:23:32 -07:00
John Koleszar
4d3c3be6ba examples: fix memory leak
Free used resources before exiting.

Change-Id: If6cde6541615fbf17bf56ed335b76e676eabba93
2012-07-13 17:14:18 -07:00
Johann
c8a88a7642 Explicitly discard fwrite/fread return values
Using if(); triggers an empty body warning with clang

Change-Id: I0fa2ee676400a974b40f8eaafca9ae668107eebb
2012-06-04 15:50:44 -07:00
Yaowu Xu
6035da5448 WebM Experimental Codec Branch Snapshot
This is a code snapshot of experimental work currently ongoing for a
next-generation codec.

The codebase has been cut down considerably from the libvpx baseline.
For example, we are currently only supporting VBR 2-pass rate control
and have removed most of the code relating to coding speed, threading,
error resilience, partitions and various other features.  This is in
part to make the codebase easier to work on and experiment with, but
also because we want to have an open discussion about how the bitstream
will be structured and partitioned and not have that conversation
constrained by past work.

Our basic working pattern has been to initially encapsulate experiments
using configure options linked to #IF CONFIG_XXX statements in the
code. Once experiments have matured and we are reasonably happy that
they give benefit and can be merged without breaking other experiments,
we remove the conditional compile statements and merge them in.

Current changes include:
* Temporal coding experiment for segments (though still only 4 max, it
  will likely be increased).
* Segment feature experiment - to allow various bits of information to
  be coded at the segment level. Features tested so far include mode
  and reference frame information, limiting end of block offset and
  transform size, alongside Q and loop filter parameters, but this set
  is very fluid.
* Support for 8x8 transform - 8x8 dct with 2nd order 2x2 haar is used
  in MBs using 16x16 prediction modes within inter frames.
* Compound prediction (combination of signals from existing predictors
  to create a new predictor).
* 8 tap interpolation filters and 1/8th pel motion vectors.
* Loop filter modifications.
* Various entropy modifications and changes to how entropy contexts and
  updates are handled.
* Extended quantizer range matched to transform precision improvements.

There are also ongoing further experiments that we hope to merge in the
near future: For example, coding of motion and other aspects of the
prediction signal to better support larger image formats, use of larger
block sizes (e.g. 32x32 and up) and lossless non-transform based coding
options (especially for key frames). It is our hope that we will be
able to make regular updates and we will warmly welcome community
contributions.

Please be warned that, at this stage, the codebase is currently slower
than VP8 stable branch as most new code has not been optimized, and
even the 'C' has been deliberately written to be simple and obvious,
not fast.

The following graphs have the initial test results, numbers in the
tables measure the compression improvement in terms of percentage. The
build has  the following optional experiments configured:
--enable-experimental --enable-enhanced_interp --enable-uvintra
--enable-high_precision_mv --enable-sixteenth_subpel_uv

CIF Size clips:
http://getwebm.org/tmp/cif/
HD size clips:
http://getwebm.org/tmp/hd/
(stable_20120309 represents encoding results of WebM master branch
build as of commit#7a15907)

They were encoded using the following encode parameters:
--good --cpu-used=0 -t 0 --lag-in-frames=25 --min-q=0 --max-q=63
--end-usage=0 --auto-alt-ref=1 -p 2 --pass=2 --kf-max-dist=9999
--kf-min-dist=0 --drop-frame=0 --static-thresh=0 --bias-pct=50
--minsection-pct=0 --maxsection-pct=800 --sharpness=0
--arnr-maxframes=7 --arnr-strength=3(for HD,6 for CIF)
--arnr-type=3

Change-Id: I5c62ed09cfff5815a2bb34e7820d6a810c23183c
2012-03-15 07:36:47 -07:00
Deb Mukherjee
87aa846b47 Multiframe quality enhancement postprocessing
Adds a multiframe postprocessing module to enhance the quality of
certain frames that are coded at lower quality than preceding frames.
The module can be invoked from the commandline by use of the --mfqe
option, and will be most beneficial for enhancing the quality of
frames decoded using scalable patterns.

Uses the vp8_variance_var16x16 and vp8_variance_sad16x16 function
pointers to compute SAD and Variance of blocks.

Change-Id: Id73d2a6e3572d07f9f8e36bbce00a4fc5ffd8961
2012-01-05 10:21:48 -08:00
Adrian Grange
217591fde5 Added rate-targeted temporal scalability
Added the ability to create rate-targeted, temporally
scalable, VP8 compatible bitstreams.

The application vp8_scalable_patterns.c demonstrates how
to use this capability. Users can create output bitstreams
containing upto 5 temporally separable streams encoded
as a single VP8 bitstream.
(previously abandoned as:
I92d1483e887adb274d07ce9e567e4d0314881b0a)

Change-Id: I156250a3fe930be57c069d508c41b6a7a4ea8d6a
2011-10-11 12:49:12 -07:00
John Koleszar
6aea309a93 Fix odd-sized image support in decoder examples
Odd sized images need their chroma plane sizes rounded up.

Change-Id: I3cd6fa60551f05697b67ece5b6928bef2a41bad8
2011-09-14 11:25:24 -04:00
Stefan Holmer
ba0822ba96 Adding support for error concealment in multi-threaded decoding
Also includes a couple of error concealment bug fixes:
- the segment_id wasn't properly initialized when missing
- when interpolating and no neighbors are found, set to zero
- clear the qcoef buffer when concealing an MB

Change-Id: Id79c876b41d78b559a2241e9cd0fd2cae6198f49
2011-06-27 09:03:06 -04:00
Stefan Holmer
d04f852368 Adding error-concealment to the decoder.
The error-concealer is plugged in after any motion vectors have been
decoded. It tries to estimate any missing motion vectors from the
motion vectors of the previous frame. Intra blocks with missing
residual are replaced with inter blocks with estimated motion vectors.

This feature was developed in a separate sandbox
(sandbox/holmer/error-concealment).

Change-Id: I5c8917b031078d79dbafd90f6006680e84a23412
2011-05-19 13:46:33 -04:00
Johann
a7d4d3c550 clean up unused variable warnings
Change-Id: I9467d7a50eac32d8e8f3a2f26db818e47c93c94b
2011-05-09 12:56:20 -04:00
John Koleszar
987ac89403 examples: use function to get iface pointers
MSVC can't pass the address of global variables in a DLL correctly
across DLL boundaries. This patch allows linking the examples to
a libvpx dll build. Fixes issue #268.

Change-Id: I1c52d076cfc68efb3efdfba019f12d53c5019f58
2011-02-28 20:06:59 -05:00
John Koleszar
7ee516d2b3 vp8_set_maps: remove hard-coded width/height
The example for disabling the active map used a hard-coded 320x240
resolution, rather than using what was passed on the command line.

Fixes #218

Change-Id: I3aed713e8aa7fcbf18dfbffd57f142b5cd9ee492
2010-11-17 09:24:05 -05:00
Timothy B. Terriberry
c4d7e5e67e Eliminate more warnings.
This eliminates a large set of warnings exposed by the Mozilla build
 system (Use of C++ comments in ISO C90 source, commas at the end of
 enum lists, a couple incomplete initializers, and signed/unsigned
 comparisons).
It also eliminates many (but not all) of the warnings expose by newer
 GCC versions and _FORTIFY_SOURCE (e.g., calling fread and fwrite
 without checking the return values).
There are a few spurious warnings left on my system:

../vp8/encoder/encodemb.c:274:9: warning: 'sz' may be used
 uninitialized in this function
gcc seems to be unable to figure out that the value shortcut doesn't
 change between the two if blocks that test it here.

../vp8/encoder/onyx_if.c:5314:5: warning: comparison of unsigned
 expression >= 0 is always true
../vp8/encoder/onyx_if.c:5319:5: warning: comparison of unsigned
 expression >= 0 is always true
This is true, so far as it goes, but it's comparing against an enum, and the C
 standard does not mandate that enums be unsigned, so the checks can't be
 removed.

Change-Id: Iaf689ae3e3d0ddc5ade00faa474debe73b8d3395
2010-10-27 18:08:04 -07:00
John Koleszar
c2140b8af1 Use WebM in copyright notice for consistency
Changes 'The VP8 project' to 'The WebM project', for consistency
with other webmproject.org repositories.

Fixes issue #97.

Change-Id: I37c13ed5fbdb9d334ceef71c6350e9febed9bbba
2010-09-09 10:01:21 -04:00
John Koleszar
94c52e4da8 cosmetics: trim trailing whitespace
When the license headers were updated, they accidentally contained
trailing whitespace, so unfortunately we have to touch all the files
again.

Change-Id: I236c05fade06589e417179c0444cb39b09e4200d
2010-06-18 13:06:11 -04:00
Andres Mejia
1856f2213d Use public domain implementation for MD5 algorithm
The RSA Data Security, Inc. implementation license bears a requirement
similar to the old problematic BSD license with advertising clause.

Change-Id: I877b71ff0548934b1c4fd87245696f53dedbdf26
2010-06-14 08:48:22 -04:00
John Koleszar
09202d8071 LICENSE: update with latest text
Change-Id: Ieebea089095d9073b3a94932791099f614ce120c
2010-06-04 16:19:40 -04:00
John Koleszar
6b76e3fb69 examples: use I420 input for encoders
The output of simple_decoder, as well as the default format for the
ivf{enc,dec} tools, is I420. The encoder examples are changed to default
to I420 as well. This is desirable because passing the output of
simple_encoder to simple_decoder would otherwise have the chroma planes
flipped, which is unexpected.

Change-Id: I9d4f10ace594a54a7fc4f9a1f9187365c01fd638
2010-05-25 08:34:02 -04:00
John Koleszar
b7492341ac install includes in DIST_DIR/include/vpx, move vpx_codec/ to vpx/
This renames the vpx_codec/ directory to vpx/, to allow applications
to more consistently reference these includes with the vpx/ prefix.
This allows the includes to be installed in /usr/local/include/vpx
rather than polluting the system includes directory with an
excessive number of includes.

Change-Id: I7b0652a20543d93f38f421c60b0bbccde4d61b4f
2010-05-24 20:27:42 -04:00
James Zern
6cd4a10e16 Put img_fmt in the vpx namespace
Avoid an potential name clashes and match other external types.
s/IMG_FMT/VPX_$&/g
s/img_fmt/vpx_$&/g

Change-Id: Ia7ad5bbb6424416b37e71e5f5eb1eca31c3c707f
2010-05-21 09:19:13 -04:00
John Koleszar
1df0314e7b configure: remove HAVE_CONFIG_H
This doesn't play well with autotools, and the preprocessor magic is
confusing and unhelpful in the vp8-only context.

Change-Id: I2fcb57e6eb7876ecb58509da608dc21f26077ff1
2010-05-21 05:53:48 -04:00
John Koleszar
0ea50ce9cb Initial WebM release 2010-05-18 11:58:33 -04:00