Commit Graph

65 Commits

Author SHA1 Message Date
Tom Finegan
34d02b060d vp8cx_set_ref.c: Silence MSVC data loss warning.
Change-Id: I1210ce23cf8f98950c445a17ef51a73c6852c89f
2014-02-19 16:20:14 -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