summaryrefslogtreecommitdiff
path: root/vp8/common
AgeCommit message (Collapse)Author
2012-01-20Overhauling the thresholds and mixing proportions for mfqe postprocessor.Deb Mukherjee
Makes the thresholds for the multiframe quality enhancement module depend on the difference between the base quantizers. Also modifies the mixing function to weigh the current low quality frame less if the difference in quantizer is large. With the above modifications mfqe works well for both scalable patterns as well as low quality key frames. Change-Id: If24e94f63f3c292f939eea94f627e7ebfb27cb75
2012-01-17Modifying the base q propagation in the mfqe post processingDeb Mukherjee
filter in a way such that when there is a single bad frame, the post-processing is applied not only to just that frame but a few subsequent frames as well. Change-Id: Iba5d9896eed77244eb76b4a74692a93f8ecff634
2012-01-10Allowing the mfqe post-processing filter to be used in conjunctionDeb Mukherjee
with deblock or demacroblock filters. When --mfqe is used together with --demacroblock or --deblock, mfqe is applied first and then demacroblock/deblock is applied to the mfqe result. Change-Id: Id83ee01f1b4a33a116f071dcf26d59c7f3497c32
2012-01-10Merge "fix: roundoff initializer is not a constant"John Koleszar
2012-01-10fix: roundoff initializer is not a constantJames Berry
precision used in initialization of roundoff is not a constant updated to use #define MFQE_PRECISION 4 Change-Id: If2fc3d3d633d58a7f4ab34d258c232ec1e5f0a79
2012-01-10vp8d - function to check if a reference frame is used.Jim Bankoski
Change-Id: Id683b4d7f46ffa99145fc4b824c7232ab4182f21
2012-01-09Merge "Multiframe quality enhancement postprocessing"Deb Mukherjee
2012-01-06Merge "Reduced the size of Y1Dequant and friends to [128][2]"John Koleszar
2012-01-06Reduced the size of Y1Dequant and friends to [128][2]Scott LaVarnway
This patch removes the local copies of the dequantize constants and implements John's idea as described in "Make a local copy of the dequantized data" commit. Change-Id: Ic6b7d681f00bf63263f71ff1e39ab2f80729e8b2
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
2012-01-05Merge "Removed unused diff buffer"Scott LaVarnway
2012-01-05Merge "SSE2 optimizations for vp8_build_intra_predictors_mby{,_s}()"Scott LaVarnway
2012-01-04Merge "Improved sse2 version of simple loopfilter"Scott LaVarnway
2012-01-04Merge "Make a local copy of the dequantized data"Scott LaVarnway
2012-01-03Merge "Remove useless g_common.h"Scott LaVarnway
2011-12-22Merge "Remove unnecessary ternary constructs"John Koleszar
2011-12-22Merge "Remove legacy integer types"John Koleszar
2011-12-22Remove unnecessary ternary constructsJohn Koleszar
The code had a number of constructs like (condition)?1:0, which is redundant with C's semantics. In the cases where a boolean operator was used in the condition, simply remove the ternary part. Otherwise adjust the surrounding expression to remove the condition (eg, for rounding up. See pickinter.c and rdopt.c) Change-Id: Icb2372defa3783cf31857d90b2630d06b2c7e1be
2011-12-22Remove legacy integer typesJohn Koleszar
Remove BOOL, INTn, UINTn, etc, in favor of C99-style fixed width types. Change-Id: I396636212fb5edd6b347d43cc940186d8cd1e7b5
2011-12-21Remove useless g_common.hJohn Koleszar
This file declared a bunch of nonexistent, unreferenced global function pointers. Change-Id: Ic26bb8c7712deba754c49fc01f383b53afc9e728
2011-12-21Remove opaque pointer VP8D_PTRJohn Koleszar
Use an opaque struct rather than typecasting through VP8D_PTR, an int*. Change-Id: Ia260b7d53d7e0950cfa1e00f4ecead1099bd3b87
2011-12-21Make a local copy of the dequantized dataJohann
Multithreaded encoding was breaking at low bitrates Please review/comment. Not sure if this is the best fix. Change-Id: I87468c765372593fd865bc82e25121ebb8ca6af2
2011-12-21Remove unreferenced includesJohn Koleszar
These files are legacy and have no current references. Change-Id: I38224961fafeb33bc3eb6150bb0c2249ccbb4f60
2011-12-21Improved sse2 version of simple loopfilterScott LaVarnway
Change-Id: Iae406d16fab5bace47fbcf5ef7ed021f08af159d
2011-12-21Remove opaque pointer VP8_PTRJohn Koleszar
Use an opaque struct rather than typecasting through VP8_PTR, an int*. Change-Id: I5ed4d9238ba2e8d51bfa07a8da87a2eb4c8fa43a
2011-12-15Moved dequant idct into commonScott LaVarnway
These functions are now used by the encoder. This is WIP with the goal of creating a common idct/add for the encoder and decoder. A boost of 1.8% was seen for the HD rt test clip used. [Tero] Added needed changes to ARM side. Change-Id: Ibbb8000be09034203d7adffc457d3c3f8b06a5bf
2011-12-12Removed unused diff bufferScott LaVarnway
Change-Id: I9211358cca89b1c4f84b53a202a63ecf9e79ae4c
2011-12-08Improved mmx/sse2 versions of iwalshScott LaVarnway
Removed unnecessary transposes. Change-Id: I029fbaf8afafee34d54a4f3333c22023c15003c3
2011-12-05Multiple-resolution encoderYunqing Wang
The example encoder down-samples the input video frames a number of times with a down-sampling factor, and then encodes and outputs bitstreams with different resolutions. Support arbitrary down-sampling factor, and down-sampling factor can be different for each encoding level. For example, the encoder can be tested as follows. 1. Configure with multi-resolution encoding enabled: ../libvpx/configure --target=x86-linux-gcc --disable-codecs --enable-vp8 --enable-runtime_cpu_detect --enable-debug --disable-install-docs --enable-error-concealment --enable-multi-res-encoding 2. Run make 3. Encode: If input video is 1280x720, run: ./vp8_multi_resolution_encoder 1280 720 input.yuv 1.ivf 2.ivf 3.ivf 1 (output: 1.ivf(1280x720); 2.ivf(640x360); 3.ivf(320x180). The last parameter is set to 1/0 to show/not show PSNR.) 4. Decode: ./simple_decoder 1.ivf 1.yuv ./simple_decoder 2.ivf 2.yuv ./simple_decoder 3.ivf 3.yuv 5. View video: mplayer 1.yuv -demuxer rawvideo -rawvideo w=1280:h=720 -loop 0 -fps 30 mplayer 2.yuv -demuxer rawvideo -rawvideo w=640:h=360 -loop 0 -fps 30 mplayer 3.yuv -demuxer rawvideo -rawvideo w=320:h=180 -loop 0 -fps 30 The encoding parameters can be modified in vp8_multi_resolution_encoder.c, for example, target bitrate, frame rate... Modified API. John helped a lot with that. Thanks! Change-Id: I03be9a51167eddf94399f92d269599fb3f3d54f5
2011-11-28Merge "Modified the inverse walsh to output directly"Scott LaVarnway
2011-11-25Modified the inverse walsh to output directlyScott LaVarnway
to the dqcoeff or qcoeff buffer. The encoder would populate the dc coeffs of the y blocks as a separate stage (recon_dcblock) and the decoder would use a special version of the idct. This change eliminates the extra copy and reduces the code footprint. [Tero] Added needed changes to armv6 and NEON assembly. Change-Id: I83202ffdbaf83f6e5dd69f4ba2519fcf0b13b3ba
2011-11-18Move shared data to shared locationJohann
Storing vp8_bilinear_filters_mmx in an mmx file and using it in an sse2 file is bad Moving towards allowing --disable-mmx Change-Id: I20493b35bdedcdcfc0915e6f05fdbe6c81a4a742
2011-11-11avoid resetting framerate during vpx_codec_enc_config_set()John Koleszar
The calculated frame_rate is a state variable in the codec, and shouldn't be maintained in the configuration struct. Move it to the main part of cpi so that it isn't clobbered when the configuration struct is updated. The initial framerate estimate is moved from the vp8_cx_iface.c wrapper into the body of init_config() in onyx_if.c, so that it is only called once and not reset on every call to vp8_change_config(). Change-Id: I8d9a3d1283330d1ee297d07e9d78d1f2875f2465
2011-11-09SSE2 optimizations for vp8_build_intra_predictors_mby{,_s}()Scott LaVarnway
Ronald recently sent me this patch that he did in April. > From: Ronald S. Bultje <rbultje@google.com> > Date: Thu, 28 Apr 2011 17:30:15 -0700 > Subject: [PATCH] SSE2 optimizations for > vp8_build_intra_predictors_mby{,_s}(). HD decode tests have shown a performance boost up to 1.5%, depending on material. Patch set 3: Fixed encoder crash. Change-Id: Ie1fd1fa3dc750eec1a7a20bfa2decc079dcf48c8
2011-11-09Merge "Relocated idct/add calls for encoder"Scott LaVarnway
2011-11-09Merge "ARMv6 optimized Intra4x4 prediction"Johann
2011-11-09Merge "Remove unused file recon.c"John Koleszar
2011-11-09Relocated idct/add calls for encoderScott LaVarnway
Call the idct/add after the tokenize. This is WIP with the goal of creating a common idct/add for the encoder and decoder. This move is necessary because the decoder's version of the idct clobbers qcoeff, which is used by the tokenize. Change-Id: I6b08d8e8397cd873647fa4fb9469884e3c876756
2011-11-09ARMv6 optimized Intra4x4 predictionTero Rintaluoma
Added ARM optimized intra 4x4 prediction - 2x faster on Profiler compared to C-code compiled with -O3 - Function interface changed a little to improve BLOCKD structure access Change-Id: I9bc2b723155943fe0cf03dd9ca5f1760f7a81f54
2011-11-08threading: avoid defining _WIN32_WINNTJames Zern
The referenced function (SignalObjectAndWait) isn't used. Reduces the warnings with mingw32-w64 which defines this. Change-Id: I4ce592879ec9372bf196dac640204c4d370bd210
2011-11-08Remove unused file recon.cJohn Koleszar
File not referenced from anywhere and no longer compiles. Change-Id: I38b11bd60db615c2c2c9d7ad35caba3a1adf1750
2011-11-04fix file permissionsJames Zern
all of googletest import (0ab00a22) was marked executable Change-Id: Id7b7ee03efc21ab998bb03349bd91644e8af25da
2011-11-04Merge "Changing decoder input partition API to input fragments."John Koleszar
2011-11-03Merge "Change use of eob in the encoder"Scott LaVarnway
2011-11-03Change use of eob in the encoderTero Rintaluoma
Changed 'int eob' to 'char *eob' in BLOCKD so that both encoder and decoder will use eobs[25] array from MACROBLOCKD structure. In future, this will enable use of the decoder side IDCT in the encoder. Change-Id: I6e1c011628cb8864fd4a0b80f0279ce16a5ca978
2011-11-01Changing decoder input partition API to input fragments.Stefan Holmer
Adding support for several partitions within one input fragment. This is necessary to fully support all possible packetization combinations in the VP8 RTP profile. Several partitions can be transmitted in the same packet, and they can only be split by reading the partition lengths from the bitstream. Change-Id: If7d7ea331cc78cb7efd74c4a976b720c9a655463
2011-10-28Merge "Improved decode_split_mv()"Scott LaVarnway
2011-10-27Improved decode_split_mv()Scott LaVarnway
Tests showed ~1.2% performance boost on the HD clip used. Performance will vary based on material. Change-Id: Icbcf1a828750d5b4ae5252bf596b3ef594042e8a
2011-10-27Merge "Improved mv_bias"Scott LaVarnway
2011-10-26Improved mv_biasScott LaVarnway
Small performance gains. Change-Id: I709b9390a8a27a70f5f23574313b8db85ac7f23d