summaryrefslogtreecommitdiff
path: root/vpxdec.c
AgeCommit message (Collapse)Author
2014-01-15Merge "Removing VpxInputContext dependency from {ivf, raw}_read_frame()."Dmitry Kovalev
2014-01-14Merge "Change the strategy for deciding the display size"Adrian Grange
2014-01-13Removing VpxInputContext dependency from {ivf, raw}_read_frame().Dmitry Kovalev
File type check inside ivf_read_frame() is not necessary (it is done before this function get called). Change-Id: Iede8feb358d25878b340473d85c3b01d701fc624
2014-01-13Change the strategy for deciding the display sizeAdrian Grange
There are three contributors to the definition of how the display size is set: (1) display width/height set in the container. (2) display size (optional in the frame header) (3) decoded frame size (from the frame header) This patch modifies the way that vpxdec defines the display size to give preference to these three criteria in the order given above. If the container sets a non-zero size, it is used, otherwise the display size specified in the first decoded frame is used (if specified), with the raw decoded frame size of the first frame used as a last resort. The display size set in frames other than the first is always ignored in this implementation. Change-Id: I7e98d817d3f5894d559dd2aeb0a6cb1959b9092b
2014-01-13Adding raw_read_frame() function to vpxdec.Dmitry Kovalev
Change-Id: Ie2a4606daf35b327d6f2ac8d7fd8f6cacf4c5b6a
2013-12-27Removing CONFIG_MD5.Dmitry Kovalev
We don't need compile time md5 configuration because --md5 is a runtime option. Change-Id: Ic0a2427ae5de5a18f31e5ee60c3732481b377ca1
2013-12-15Add frame buffer lru cache.Frank Galligan
Add an option for libvpx to return the least recently used frame buffer. Change-Id: I886a96ffb94984f1c42de53086e0131922df3260
2013-12-15Add support to pass in external frame buffers.Frank Galligan
VP9 decoder can now use frame buffers passed in by the application. Change-Id: I599527ec85c577f3f5552831d79a693884fafb73
2013-12-04Modified spatial scalable encoder & unit testsAdrian Grange
Modifications to the spatial scalable encoder to match changes made to the scaling code in the decoder. In particular, the use of a dummy first frame was removed now that the decoder is able to handle a smaller first frame. SvcTest.FirstFrameHasLayers unit test re-enabled. Change-Id: Ic2e91fbe4eadf95895569947670d36d68abaf458
2013-11-22Merge "Fix bug in extend_frame chroma extended too far"Yaowu Xu
2013-11-22Fix decoder to handle display size correctlyAdrian Grange
The decoder ignored the display width & height specified in the frame header. This patch adds a control, VP9D_GET_DISPLAY_SIZE, to allow the application to obtain the display width and height from the frame header. vpxdec has been modified to scale the output frame to this size. Should the request for the display size fail vpxdec will use the native width and height of the raw decoded frame instead. Change-Id: I25db04407426dac730263720c75a7dd6400af68a
2013-11-22Fix bug in extend_frame chroma extended too farAdrian Grange
This fixes issue 667. In the case where the frame was an odd number of pixels wide or high, the border was being extended by one col or row too far. The calculation of color plane dimensions was modified to use those already computed at the time the frame buffer was allocated. Also freed the temporary scaling buffer in vpxdec to prevent a memory leak. Change-Id: Ied04bdcdfd77469731408c05da205db1a6f89bf5
2013-11-19vpxdec: Relocate WebM input support.Tom Finegan
- Move it to webmdec.c and webmdec.h. - Also, tidy up obvious style nits in the vicinity of code I was already touching. Change-Id: Ie2898d06e73c1e9030d9c8d465b73ee7edc3c02a
2013-11-18vpxdec: Include frame number when decode fails.Tom Finegan
Change-Id: I6ea460af884d522319735e4416a2dd66c2f35d27
2013-11-16vpxdec: Restore IVF support.Tom Finegan
Refactored IVF frame reading code out into ivf_read_frame(). Forgot to actually make the function call in read_frame(). Change-Id: Ie9f6917e70bd26d0352a761932465c60a29a1f81
2013-11-15vpx[dec|enc]: Extract IVF support from the apps.Tom Finegan
- Move IVF reading support into ivfdec.c and ivfdec.h - Move IVF writing support into ivfenc.c and ivfenc.h - Removed IVF writing code from the SVC example in favor of ivfenc. Change-Id: I70adf6240d0320fdd232d8546ed573f0f68dd793
2013-11-11vpx[dec|enc]: Clean up target OS based IO focused preproc abuse.Tom Finegan
Relocate it to tools_common.h so we can stop duping this code everywhere. BUG=https://code.google.com/p/webm/issues/detail?id=660 Change-Id: If8aa49b74d297273cd9fd7006b2767837055a359
2013-11-06Move WebM writing support out of vpxenc.c.Tom Finegan
This is mainly a clean up patchset. It moves the WebM writing support out of vpxenc and into its own source file. Changes to tools_common and vpxdec result from relocation of shared bits of code. Change-Id: Iee55d3285f56e0a548f791094fb14c5ac5346a26
2013-10-24vpxdec: Fix webm fps check.Frank Galligan
If the webm file did not have a Cues then vpxdec would fail when creating a y4m file. If there is no Cues element print out a warning and set fps to 30. Change-Id: Ieea7040265dfdac7dff4ccf917c6f756160a96bc
2013-06-12vpxdec: add --loops optionJohn Koleszar
Allows vpxdec to operate multiple times on the same input. Mostly useful for debugging/development. Change-Id: Icf25ece22e387052eade4438971eee5ff4f798ba
2013-06-11Merge branch 'master' into experimentalJohn Koleszar
Change-Id: Ie648398b82f7311143709f55c0e30ba452f50eff
2013-06-10Fix a crash in vpxdecJohn Koleszar
If the codec fails to return a frame on the second frame (as in a VP8 alt-ref, then img will be a null pointer and dereferencing it while trying to write the color format (again) will crash. Change-Id: Ie48710d4c5715f532d453c879c71c20ccdeb81cc
2013-06-07Modified vpxdec loopScott LaVarnway
to work like vpxenc. This is required for the frame-based multithreading. Change-Id: I338ae9c7d52b0541f3536cc033d6b89f00866e74
2013-05-09Subsampling aware allocs and bitstreamJohn Koleszar
Make framebuffer allocations according to the chroma subsamping factors in use. A bit is placed in the raw part of the frame header for each of the two subsampling factors. This will be moved in a future commit to make them part of the TBD feature set bits, probably only set on keyframes, etc. Change-Id: I59ed38d3a3c0d4af3c7c277617de28d04a001853
2013-04-30Change to fourcc to enable decoding of ffmpeg files.Jim Bankoski
Change-Id: Ia16f167d904d53bc38cb3a8c841c6c52daad500f (cherry picked from commit 296421d84cd1ffd074ff3fe4a772238c897f1bda) reverts: dbd050c vpxdec: correct VP[89] fourccs
2013-04-29Change to fourcc to enable decoding of ffmpeg files.Jim Bankoski
Change-Id: Ia16f167d904d53bc38cb3a8c841c6c52daad500f
2013-04-18vpxdec: correct VP[89] fourccsJames Zern
should have no effect as they are used in nestegg mappings, but aligns the defines with vpxenc.c Change-Id: Ic2295cd63701894c2963274239602b54cbb58631
2013-03-11vpxdec: fix use of uninitialized do_scale argumentJohn Koleszar
This fixes a potential crash with VP8 streams that have an alt-ref on the first frame, as well as potentially scaling the output in cases where that wasn't desired. Change-Id: I1fd74b5ab43329fbbffecb004dfd44de34c4dc22
2013-03-04vpxdec: support scaling outputJohn Koleszar
Adds an option, --scale, that will rescale any frames produced by the decoder that don't match the resolution of the first frame to that resolution. This is useful for playback of files that use spatial resampling. Change-Id: I867adc650d535df7ec5b107549359712ea3aaaa0
2012-11-15webm: add support for V_VP9John Koleszar
Tags VP9 tracks with the V_VP9 video type when writing to .webm files, and supports decoding both from vpxdec without specifying --codec. Change-Id: I0ef61dee06f4db2a74032b142a4b4976c51faf6e
2012-11-15support building vp8 and vp9 into a single libJohn Koleszar
Change-Id: Ib8f8a66c9fd31e508cdc9caa662192f38433aa3d
2012-11-07Rough merge of master into experimentalJohn Koleszar
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-06vpxdec: merge with masterJohn Koleszar
Change-Id: I69fd876dd51eb2b4a4a449faa5922225e9508b42
2012-11-01Rename vp8/ codec directory to vp9/.Ronald S. Bultje
Change-Id: Ic084c475844b24092a433ab88138cf58af3abbe4
2012-10-11added the ablility to skip first n frames for vpxdecYaowu Xu
Change-Id: Id7d1f25078be92dd6cda246738ad6fb50579f555
2012-09-19Moved vp8dx_get_raw_frame() call to vp8_get_frame()Scott LaVarnway
This change is necessary for the frame-based multithreading implementation. Since the postproc occurs in this call, vpxdec was modified to time around vpx_codec_get_frame() Change-Id: I389acf78b6003cd35e41becc16c893f7d3028523
2012-08-20silent compiling warnings for VC9 buildYaowu Xu
Change-Id: Iaa947e640f27e6f6eaf7d845f243536bca2df513
2012-07-23Dll build of libvpxJim Bankoski
Change-Id: I74e50b4dfbe73eb98e1dce1695a9973f637220c0
2012-07-17Restyle codeJohn Koleszar
Approximate the Google style guide[1] so that that there's a written document to follow and tools to check compliance[2]. [1]: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml [2]: http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py Change-Id: Idf40e3d8dddcc72150f6af127b13e5dab838685f
2012-06-11Fix pedantic compiler warningsJohn Koleszar
Allows building the library with the gcc -pedantic option, for improved portabilty. In particular, this commit removes usage of C99/C++ style single-line comments and dynamic struct initializers. This is a continuation of the work done in commit 97b766a46, which removed most of these warnings for decode only builds. Change-Id: Id453d9c1d9f44cc0381b10c3869fabb0184d5966
2012-06-04Explicitly discard fwrite/fread return valuesJohann
Using if(); triggers an empty body warning with clang Change-Id: I0fa2ee676400a974b40f8eaafca9ae668107eebb
2012-03-15WebM Experimental Codec Branch SnapshotYaowu Xu
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-01-05Multiframe quality enhancement postprocessingDeb Mukherjee
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
2011-11-09vpxdec: avoid redefining fileno() on mingwJames Zern
Correct ifdef check for Visual Studio's compiler, mingw builds can use unistd.h. Change-Id: I25c5ee46ef75ffbff03f560293dfb3d6bed55f70
2011-09-22vpxdec updated to use !feof() instead of *buf_sz in readframe()James Berry
For partial droped frames using *buf_sz could incorrectly terminate a decode. Change-Id: Id4a1166fa9ae6c0aa7e9f214bfa4c0be0ea82c1c
2011-05-19Adding error-concealment to the decoder.Stefan Holmer
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-09clean up unused variable warningsJohann
Change-Id: I9467d7a50eac32d8e8f3a2f26db818e47c93c94b
2011-04-27vpxdec: test for frame corruptionJohn Koleszar
This change simply exercises the VP8D_GET_FRAME_CORRUPTED control, outputting a warning message at the end if the bit was set for any frames. Should never produce any output for good input. Change-Id: Idaf6ba8f53660f47763cd563fa1485938580a37d
2011-01-28Adds "armvX-none-rvct" targetsTero Rintaluoma
Adds following targets to configure script to support RVCT compilation without operating system support (for Profiler or bare metal images). - armv5te-none-rvct - armv6-none-rvct - armv7-none-rvct To strip OS specific parts from the code "os_support"-config was added to script and CONFIG_OS_SUPPORT flag is used in the code to exclude OS specific parts such as OS specific includes and function calls for timers and threads etc. This was done to enable RVCT compilation for profiling purposes or running the image on bare metal target with Lauterbach. Removed separate AREA directives for READONLY data in armv6 and neon assembly files to fix the RVCT compilation. Otherwise "ldr <reg>, =label" syntax would have been needed to prevent linker errors. This syntax is not supported by older gnu assemblers. Change-Id: I14f4c68529e8c27397502fbc3010a54e505ddb43
2010-11-23vpxdec: fix use of uninitialized memory for raw filesJohn Koleszar
The sz member of the vpx_codec_stream_info_t structure must be initialized when passed to vpx_codec_peek_stream_info(). Change-Id: I2d13d287d9639262b932cf44671a595fdf3c38ef