- 24 Oct, 2011 - 1 commit
-
-
Paul Wilkins authored
This quite large check in includes the following: Merge in some code from Ronald (mbgraph.c) that scans a Gf/arf group. This is used as a basis for a simple segmentation for the normal frames in a gf/arf group. This code also uses satd functions from Yaowu. Adds functionality for coding the latest possible position of an EOB for blocks in the segment. (Currently 0-15 only, hence just for 4x4 dct). Where the EOB position is 0 this acts like "skip" and the normal coding of skip at the per mb level is disabled. Added functions (seg_common.c) for setting and reading segment feature elements. These may want to be optimized away at some point but while the mecahnism is in a state of flux they provide a single location for making changes and keep things a bit cleaner. This is still proof of concept code. Currently the tested feature set:- Quantizer, Loop Filter level, Reference frame, Prediction Mode, EOB end stop. TBD:- Add functions for setting and reading the feature...
-
- 08 Oct, 2011 - 1 commit
-
-
Yaowu Xu authored
When 8x8 transform is enabled, the decoder does an extra reconstruct on MBs that are coded using 8x8. This commit fixed the logic around the decoding of mb encoded with 8x8 transform. Change-Id: I6926557c9ef00eecb375f62946f7e140c660bf6f
-
- 19 Sep, 2011 - 1 commit
-
-
Stefan Holmer authored
These changes fixes a glitch between the RTP profile and the input partitions interface. Since there's no way for the user to know the actual number of partitions, the decoder have to read the multi_token_paritition bits also when input partitions mode is enabled. Included are also a couple of fixes for issues with independent partitions and uninitialized memory reads. Change-Id: I6f93b15287d291169ed681898ed3fbcc5dc81837
-
- 16 Sep, 2011 - 1 commit
-
-
Yaowu Xu authored
Patch 1 to Patch 3 is an initial implementation of 8x8 intra prediction modes, here are with the following assumptions: a. 8x8 has 4 prediction modes DC, H, V and TM b. UV 4x4 block use the same mode as corresponding 8x8 area c. i8x8 modes are enabled for key frame only for now Patch 4: d. removed debug code from previous patches Patch 5: e. added stats code to collect entropy stats and further cleaned up Patch 6: f. changed mode stats code to collect finer stats of modes Patch 7: g. normalized i8x8 modes distribution to total at 256 (8bits). Patch 8: h. fixed a bug in decoder and removed debug printf output. Patch 9: i. more cleanups to address paul's comment Patch 10: j. messy rebase/merges to bring the commit up to date. Tests on HD clips encoded with all key frame showing consistent gain on all clips and all metrics:~0.5%(psnr) and 0.6%(ssim): http://www.corp.google.com/~yaowu/no_crawl/i8x8hd_allkey_fixedq.html To build and test, configure with: --enable-experimental --enable-i8x8 Change-Id: I9813fe07ae48cab5fdb5d904bca022514ad01e7f
-
- 15 Sep, 2011 - 1 commit
-
-
Paul Wilkins authored
Plumbing for tuning new segment features on and off. Change-Id: If86cd6f103296b73030e8af7cf85c5b9bbffdbaf
-
- 13 Sep, 2011 - 3 commits
-
-
Paul Wilkins authored
Code all the features for one segment (grouped together) then all for the next etc. etc. rather than grouping the data by feature. Change-Id: I2a65193b3a70aca78f92e855e35d8969d857b6dd
-
Paul Wilkins authored
This data structure is now [Segment ID][Features] rather than [Features][Segment_ID] I propose as a separate modification to make the experimental bit stream reflect this such that all the features for a segment are coded together. Change-Id: I581e4e3ca2033bdbdef3d9300977a8202f55b4fb
-
Paul Wilkins authored
Some basic plumbing added for a range of segment level features. MB_LVL_* changed to SEG_LVL_* to better reflect meaning. Change-Id: Iac96da36990aa0e40afc0d86e990df337fd0c50b
-
- 24 Aug, 2011 - 1 commit
-
-
Scott LaVarnway authored
for SPLITMV and B_PRED modes. Modified code to use the bmi found in mode_info_context instead of BLOCKD. On the decode side, the uvmvs are calculated only when required, instead of every macroblock. This is WIP. (bmi should eventually be removed from BLOCKD) Small performance gains noticed for RT encodes and decodes.(VGA) Change-Id: I2ed7f0fd5ca733655df684aa82da575c77a973e7
-
- 12 Aug, 2011 - 3 commits
-
-
Stefan Holmer authored
When error concealment is enabled the first key frame must be successfully received before error concealment is activated. Error concealment will be activated when the delta following delta frame is received. Also fixed a couple of bugs related to error tracking in multi-threading. And avoiding decoding corrupt residual when we have multiple non-resilient partitions. Change-Id: I45c4bb296e2f05f57624aef500a874faf431a60d
-
John Koleszar authored
This patch fixes an OOB read when error concealment is enabled and the partition sizes are corrupt. The partition size read from the bitstream was not being validated in EC mode. Change-Id: Ia81dfd4bce1ab29ee78e42320abe52cee8318974
-
Stefan Holmer authored
When error concealment is enabled the first key frame must be successfully received before error concealment is activated. Error concealment will be activated when the delta following delta frame is received. Also fixed a couple of bugs related to error tracking in multi-threading. And avoiding decoding corrupt residual when we have multiple non-resilient partitions. Change-Id: I45c4bb296e2f05f57624aef500a874faf431a60d
-
- 11 Aug, 2011 - 1 commit
-
-
John Koleszar authored
This patch fixes an OOB read when error concealment is enabled and the partition sizes are corrupt. The partition size read from the bitstream was not being validated in EC mode. Change-Id: Ia81dfd4bce1ab29ee78e42320abe52cee8318974
-
- 22 Jul, 2011 - 1 commit
-
-
Johann authored
sharpness was not recalculated in vp8cx_pick_filter_level_fast remove last_filter_type. all values are calculated, don't need to update the lfi data when it changes. always use cm->sharpness_level. the extra indirection was annoying. don't track last frame_type or sharpness_level manually. frame type only matters for motion search and sharpness_level is taken care of in frame_init move function declarations to their proper header Change-Id: I7ef037bd4bf8cf5e37d2d36bd03b5e22a2ad91db
-
- 21 Jul, 2011 - 1 commit
-
-
Yaowu Xu authored
With this fix, the experimental branch now builds and encodes correctly with the following two configure options respectively: --enable-experimental --enable-t8x8 --enable-experimental Change-Id: I3147c33c503fe713a85fd371e4f1a974805778bf
-
- 20 Jul, 2011 - 1 commit
-
-
Deb Mukherjee authored
Please refer to previous commit messages for detailed info: https://on2-git.corp.google.com/g/#change,5940 https://on2-git.corp.google.com/g/#change,6045 Change-Id: I8b16992f2f69c5a808ad40a3e32ef589cce7c59d
-
- 28 Jun, 2011 - 3 commits
-
-
John Koleszar authored
There were many instances in the code of vp8_coef_tokens and vp8_coef_tokens-1, which was a preprocessor macro despite the naming convention. Replace these with MAX_ENTROPY_TOKENS and ENTROPY_NODES, respectively. Change-Id: I72c4f6c7634c94e1fa066cd511471e5592c748da
-
Gaute Strokkenes authored
Change-Id: Ieb2f3827ae7896ae594203b702b3e8fa8fb63d37
-
Stefan Holmer authored
With this commit frames can be received partition-by-partition from the encoder and passed partition-by-partition to the decoder. At the encoder-side this makes it easier to split encoded frames at partition boundaries, useful when packetizing frames. When VPX_CODEC_USE_OUTPUT_PARTITION is enabled, several VPX_CODEC_CX_FRAME_PKT packets will be returned from vpx_codec_get_cx_data(), containing one partition each. The partition_id (starting at 0) specifies the decoding order of the partitions. All partitions but the last has the VPX_FRAME_IS_FRAGMENT flag set. At the decoder this opens up the possibility of decoding partition N even though partition N-1 was lost (given that independent partitioning has been enabled in the encoder) if more info about the missing parts of the stream is available through external signaling. Each partition is passed to the decoder through the vpx_codec_decode() function, with the data pointer pointing to the start of the partition, and with data_sz equal to the size of the partition. Missing partitions can be signaled to the decoder by setting data != NULL and data_sz = 0. When all partitions have been given to the decoder "end of data" should be signaled by calling vpx_codec_decode() with data = NULL and data_sz = 0. The first partition is the first partition according to the VP8 bitstream + the uncompressed data chunk + DCT address offsets if multiple residual partitions are used. Change-Id: I5bc0682b9e4112e0db77904755c694c3c7ac6e74
-
- 27 Jun, 2011 - 1 commit
-
-
Stefan Holmer authored
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
-
- 14 Jun, 2011 - 1 commit
-
-
James Zern authored
If setup_token_decoder reported an internal error the memory allocated there would not be freed in the resulting call to _remove_decompressor. Change-Id: Ib459de222d76b1910d6f449cdcd01663447dbdf6
-
- 02 Jun, 2011 - 1 commit
-
-
Scott LaVarnway authored
Declared the bmi in BLOCKD as a union instead of B_MODE_INFO. Then removed B_MODE_INFO completely. Change-Id: Ieb7469899e265892c66f7aeac87b7f2bf38e7a67
-
- 24 May, 2011 - 2 commits
-
-
Scott LaVarnway authored
Change-Id: I6e5e921f03dc15a72da89a457848d519647677a3
-
Scott LaVarnway authored
Declared the bmi in MODE_INFO as a union instead of B_MODE_INFO. This reduced the memory footprint by 518,400 bytes for 1080 resolutions. The decoder performance improved by ~4% for the clip used and the encoder showed very small improvements. (0.5%) This reduction was first mentioned to me by John K. and in a later discussion by Yaowu. This is WIP. Change-Id: I8e175fdbc46d28c35277302a04bee4540efc8d29
-
- 19 May, 2011 - 1 commit
-
-
Stefan Holmer authored
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
-
- 28 Apr, 2011 - 1 commit
-
-
Scott LaVarnway authored
Code cleanup. Change-Id: Ic8b0167851116c64ddf08e8a3d302fb09ab61146
-
- 27 Apr, 2011 - 1 commit
-
-
Ronald S. Bultje authored
decoding before 10.425 10.432 10.423 =10.426 after: 10.405 10.416 10.398 =10.406, 0.2% faster encoding before 14.252 14.331 14.250 14.223 14.241 14.220 14.221 =14.248 after 14.095 14.090 14.085 14.095 14.064 14.081 14.089 =14.086, 1.1% faster Change-Id: I483d3d8f0deda8ad434cea76e16028380722aee2
-
- 26 Apr, 2011 - 1 commit
-
-
Scott LaVarnway authored
Fixed test vector mismatch that was introduced in the "Removed dc_diff from MB_MODE_INFO" (Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931) Change-Id: I98fa509b418e757b5cdc4baa71202f4168dc14ec
-
- 21 Apr, 2011 - 2 commits
-
-
Scott LaVarnway authored
ref_frame is set to INTRA_FRAME for keyframes. The B_PRED mode is only used in intra frames. Change-Id: I9bac8bec7c736300d47994f3cb570329edf11ec0
-
Scott LaVarnway authored
The dc_diff flag is used to skip loopfiltering. Instead of setting this flag in the decoder/encoder, we now check for this condition in the loopfilter. Change-Id: Ie2b9cdf9e0f4e8b932bbd36e0878c05bffd28931
-
- 20 Apr, 2011 - 1 commit
-
-
Scott LaVarnway authored
Code cleanup. The build inter predictor functions are redundantly checking the mode_info_context for either INTRA_FRAME or SPLITMV. Change-Id: I4d58c3a5192a4c2cec5c24ab1caf608bf13aebfb
-
- 18 Mar, 2011 - 1 commit
-
-
John Koleszar authored
A large number of functions were defined with external linkage, even though they were only used from within one file. This patch changes their linkage to static and removes the vp8_ prefix from their names, which should make it more obvious to the reader that the function is contained within the current translation unit. Functions that were not referenced were removed. These symbols were identified by: $ nm -A libvpx.a | sort -k3 | uniq -c -f2 | grep ' [A-Z] ' \ | sort | grep '^ *1 ' Change-Id: I59609f58ab65312012c047036ae1e0634f795779
-
- 11 Mar, 2011 - 1 commit
-
-
John Koleszar authored
The vp8_build_intra_predictors_mby and vp8_build_intra_predictors_mby_s functions had global function pointers rather than using the RTCD framework. This can show up as a potential data race with tools such as helgrind. See https://bugzilla.mozilla.org/show_bug.cgi?id=640935 for an example. Change-Id: I29c407f828ac2bddfc039f852f138de5de888534
-
- 18 Feb, 2011 - 1 commit
-
-
John Koleszar authored
Change-Id: I64fa47889c54cfed094a674c49ef0996d49bdd42
-
- 10 Feb, 2011 - 1 commit
-
-
John Koleszar authored
Allow compiling without adding vp8/{common,encoder,decoder} to the include paths. Change-Id: Ifeb5dac351cdfadcd659736f5158b315a0030b6c
-
- 09 Feb, 2011 - 1 commit
-
-
Gaute Strokkenes authored
Change-Id: Icf4b692099d7d249fe3553852b1022b027b28e4b
-
- 04 Feb, 2011 - 1 commit
-
-
Johann authored
we were holding on to this "just in case." purge it instead Change-Id: I77a367b36d0821d731019f2566ecfffdae1d4b8a
-
- 19 Jan, 2011 - 1 commit
-
-
Henrik Lundin authored
A new vpx_codec_control called VP8D_GET_FRAME_CORRUPTED. The output from the function is non-zero if the last decoded frame contains corruption due to packet losses. The decoder is also modified to accept encoded frames of zero length. A zero length frame indicates to the decoder that one or more frames have been completely lost. This will mark the last decoded reference buffer as corrupted. The data pointer can be NULL if the length is zero. Change-Id: Ic5902c785a281c6e05329deea958554b7a6c75ce
-
- 11 Jan, 2011 - 1 commit
-
-
Henrik Lundin authored
Removing unused local variables causing compiler warnings in Visual Studio. Change-Id: I0e2096303be1fdbc01428a6e57cca9796bb32c8a
-
- 11 Nov, 2010 - 1 commit
-
-
Suman Sunkara authored
- Used three probability approach for temporal context as follows: P0 - probability of no change if both above and left not changed P1 - probability of no change if one of above and left has changed P2 - probability of no change if both above and left have changed In addition, a 1 bit/frame has been used to decide whether to use temporal context or to encode directly. The cost of using both the schemes is calculated ahead and the temporal_update flag is set if the cost of using temporal context is lower than encoding the segment ids directly. This approach has given around 20% reduction in cost of bits needed to encode segmentation ids. Change-Id: I44a5509599eded215ae5be9554314280d3d35405
-