summaryrefslogtreecommitdiff
path: root/vp8
AgeCommit message (Collapse)Author
2011-12-22Merge "Remove unnecessary ternary constructs"John Koleszar
2011-12-22Merge "Remove legacy integer types"John Koleszar
2011-12-22Merge "Use lookup tables for mode_check_freq"John Koleszar
2011-12-22Merge "Use lookup tables for thresh_mult"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-22Use lookup tables for mode_check_freqJohn Koleszar
Mostly cosmetic. Trying for a more compact representation of speed selection thresholds. Change-Id: I339e7840049b91ad569aabbdc9c702a496110d3b
2011-12-22Use lookup tables for thresh_multJohn Koleszar
Mostly cosmetic. Trying for a more compact representation of speed selection thresholds. Change-Id: Icaebea632c7bb71ca8e07b4def04a046d4515e27
2011-12-22Merge "Remove opaque pointer VP8D_PTR"John Koleszar
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-21squash some signed/unsigned comparison warningsJames Zern
Change-Id: Ifc64cf990ae04d77934da3324d0afb3993f061e7
2011-12-21Remove unreferenced includesJohn Koleszar
These files are legacy and have no current references. Change-Id: I38224961fafeb33bc3eb6150bb0c2249ccbb4f60
2011-12-21Merge "Remove opaque pointer VP8_PTR"John Koleszar
2011-12-21Merge "tokenizer: use correct block type context in stuff1st_order_b"John Koleszar
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-19remove armv6 files from armv5 buildJohn Koleszar
Make bilinearfilter_arm.c compiled only when HAVE_ARMV6, as its definitions are v6 only. This is normally not a problem for static builds as the file is elided at link time, but this was not being done properly for the --enable-shared --enable-pic build. Change-Id: Ic800a7cde751f74f22555c5b247f99f9df5e550d
2011-12-19Merge "Avoid heap allocation of firstpass stats"Johann
2011-12-19Merge "fix: make sure ss_err is large enough"John Koleszar
2011-12-19Merge "Merge mr_pick_inter_mode and pick_inter_mode"Yunqing Wang
2011-12-16Merge mr_pick_inter_mode and pick_inter_modeYunqing Wang
Merged multi-resolution motion estimation with regular motion estimation function in order to remove duplicated part. This caused slight changes in multi-resulotion encoder quality & performance. Change-Id: Ib4ecc7acfebfe5eea959b5b91febae6db7b95fd1
2011-12-16fix: make sure ss_err is large enoughJames Berry
increase size of ss_err by one to make sure there is room for 64 elements. Change-Id: I355cb8c499aa7da3b9675f2326a8d25a74bb88d2
2011-12-16Avoid heap allocation of firstpass statsJohn Koleszar
The total_stats, this_frame_stats, and total_left_stats structures were previously create by a heap allocation, despite being of fixed size. These structures were allocated and deallocated during {de,}allocate_compressor_data, which is reinvoked whenever the frame size changes. Unfortunately, this clobbers the total_stats and total_left_stats data. Historically, these were variable size at one time, due to the first pass motion map, which necessitated their being created by a unique heap allocation. However, this bug with the total_stats being clobbered has probably been present since that initial implementation. These structures are instead moved to be stored within the struct twopass_rc directly, rather than being heap allocated separately. Change-Id: I7f9e519e25c58b92969071f0e99fa80307e0682b
2011-12-16Fixed mb_skip_coeff bugScott LaVarnway
When mb_skip_coeff is set, the idct is not necessary. Prior to this patch, the code would call idcts based on leftover eob information. This patch will now skip the idct for SPLIT_MV and clear out the eobs for B_PRED, forcing the idct to be skipped. Change-Id: If5b0d2ed3ebd07789d30ec5160df927485fcaa17
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-15Merge "Only call vp8_find_near_mvs() once for each macroblock"Yunqing Wang
2011-12-15Only call vp8_find_near_mvs() once for each macroblockYunqing Wang
While doing motion search on a macroblock, we usually call vp8_find_near_mvs once per reference frame. Actually, for different reference frames, the only difference in calculating these near_mvs is they may have different sign_bias, which causes a sign change in resulting near_mvs. In this change, we only do find_near_mvs for the first reference frame. For other reference frames, only need to adjust the near_mvs according to that reference frame's sign_bias value. Change-Id: I661394b49c6ad79fed7d0f2eb2be239b9c56f149
2011-12-15Merge "Force realtime version 1 streams to only use simple loopfilter"Yunqing Wang
2011-12-14Merge "Avoid multiple test for same lvl in auto filter lvl pick"John Koleszar
2011-12-14Merge "add check to ensure that cq_level falls within min and max q"John Koleszar
2011-12-14Merge "fix: active_worst_quality could be set above 127"John Koleszar
2011-12-14add check to ensure that cq_level falls within min and max qJames Berry
Add the notion of deferred validation of parameters. We don't want to validate the cq_level at initialization time, because it won't have been set via set_param() yet. Change-Id: Ia1308395e8c10e0b1dc4e9af3a09b2bd6744cc30
2011-12-14Avoid multiple test for same lvl in auto filter lvl pickAttila Nagy
Sometimes same level is tested 2-3 times; store and reuse the calculated error value. Change-Id: Ia1c04a2568232edf9a5a62c4e2d8e8a50d85e00e
2011-12-14Force realtime version 1 streams to only use simple loopfilterAttila Nagy
...regardless of the speed settings. Change-Id: I4b91ac7a7208efd690dfc69e175f8eb769b6ce03
2011-12-13fix: active_worst_quality could be set above 127James Berry
add check to set active_worst_quality to 127 if it is set above 127 Change-Id: I7db353d5c1b1c8516a116542b6ed21c0110bb512
2011-12-13tokenizer: use correct block type context in stuff1st_order_bJohn Koleszar
The fast-path for skipped MBs was not correctly respecting the block type during update of the coefficient counts. Extracted this from part of change I365cfb6ac636f19c545f682e3aeac185253abaef Change-Id: I53d8cf0a00a98034b97b0ed3414b703bae74a739
2011-12-12Merge "vp8e - entropy stats per frame type"Jim Bankoski
2011-12-12Merge "Improved mmx/sse2 versions of iwalsh"Scott LaVarnway
2011-12-09vp8e - entropy stats per frame typeJim Bankoski
Change-Id: I4168eb6ea22ae541471738a7a3453e7d52059275
2011-12-08Improved mmx/sse2 versions of iwalshScott LaVarnway
Removed unnecessary transposes. Change-Id: I029fbaf8afafee34d54a4f3333c22023c15003c3
2011-12-07Merge "Reduce mem copies in encoder loopfilter level picking"Johann
2011-12-07Reduce mem copies in encoder loopfilter level pickingAttila Nagy
Do the test filtering in the existing backup frame buffer instead of the original. Copy the original data into extra buffer before doing the filtering. This way there is no need to restore the original unfiltered frame at the end of level picking process. This came up in some discussions with Johann. Thanks! Change-Id: I495f4301d983854673276c34ec0ddf9a9d622122
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-12-05Merge "Speed selection support for disabled reference frames"John Koleszar
2011-11-28Populate q_index in multi-thread encodingYunqing Wang
This value needs to be copied to each thread's data structure. This fixed artifact problem in multi-thread encoder. Change-Id: Iab6d9745a1d44846aa503184705376f63a505597
2011-11-28Added vp8_dequant_idct_add_y_block_sse2 setupScott LaVarnway
In Change I83202ffd, I deleted one too many lines. Change-Id: If05d7c8988eb5c00898dc7c833ad7d99b5eb23e7
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-23Merge "Move shared data to shared location"Johann
2011-11-23Merge "Fix encoder partitioned output on ARM"Johann
2011-11-23Fix encoder partitioned output on ARMAttila Nagy
API was not returning correct partition sizes on arm targets. The armv5 token packing functions were not storing the information to the partition size table. As a fix, have one boolcoder instance allocated for each partition so that partition sizes are internally available after all partitions were encoded. This will also allow more flexibility in producing several partitions in parallel. Use buffer validation (overflow check) in all ARM bitpacking functions. Change-Id: I31c8a11d8a7613676f0ff50928cb2a2ab14fd169