diff options
author | Yaowu Xu <yaowu@google.com> | 2011-11-30 16:36:46 -0800 |
---|---|---|
committer | Yaowu Xu <yaowu@google.com> | 2011-12-02 14:43:33 -0800 |
commit | acf5d20ce5811ff8b6eb561f09c5751b25539fb8 (patch) | |
tree | 4020b7c7722e58eec1f43f05d8dd1fc4dfb7c165 /vp8/decoder/onyxd_if.c | |
parent | a8fbab8697c77dc82013862e0a9c7f82b6402db8 (diff) | |
download | libvpx-acf5d20ce5811ff8b6eb561f09c5751b25539fb8.tar libvpx-acf5d20ce5811ff8b6eb561f09c5751b25539fb8.tar.gz libvpx-acf5d20ce5811ff8b6eb561f09c5751b25539fb8.tar.bz2 libvpx-acf5d20ce5811ff8b6eb561f09c5751b25539fb8.zip |
added separate entropy context for alt_ref
This commit added code to keep track of separate entropy contexts for
normal frames and alt ref frames. The underly assumption was that the
two type of frames have different entropy characteristics given they
typically have quite different quantization levels. By keeping entropy
contexts separate, it helps the entropy context distribution to be more
closely adapted to each frame type.
Tests on derf set showed a good and very consistent gain on all clips
on all metrics, avg psnr: 0.89%, overall psnr: 0.84% and ssim 0.93%.
http://www.corp.google.com/~yaowu/no_crawl/mulcontext.html
Change-Id: I15bc9697f6ff7829042911fe0c62930585d7e65d
Diffstat (limited to 'vp8/decoder/onyxd_if.c')
-rw-r--r-- | vp8/decoder/onyxd_if.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/vp8/decoder/onyxd_if.c b/vp8/decoder/onyxd_if.c index a45d692d0..7862cbf90 100644 --- a/vp8/decoder/onyxd_if.c +++ b/vp8/decoder/onyxd_if.c @@ -80,6 +80,7 @@ void vp8_recon_write_yuv_frame(char *name, YV12_BUFFER_CONFIG *s) fclose(yuv_file); } #endif +//#define WRITE_RECON_BUFFER 1 #if WRITE_RECON_BUFFER void write_dx_frame_to_file(YV12_BUFFER_CONFIG *frame, int this_frame) { @@ -93,21 +94,24 @@ void write_dx_frame_to_file(YV12_BUFFER_CONFIG *frame, int this_frame) yframe = fopen(filename, "wb"); for (i = 0; i < frame->y_height; i++) - fwrite(frame->y_buffer + i * frame->y_stride, frame->y_width, 1, yframe); + fwrite(frame->y_buffer + i * frame->y_stride, + frame->y_width, 1, yframe); fclose(yframe); sprintf(filename, "dx\\u%04d.raw", this_frame); yframe = fopen(filename, "wb"); for (i = 0; i < frame->uv_height; i++) - fwrite(frame->u_buffer + i * frame->uv_stride, frame->uv_width, 1, yframe); + fwrite(frame->u_buffer + i * frame->uv_stride, + frame->uv_width, 1, yframe); fclose(yframe); sprintf(filename, "dx\\v%04d.raw", this_frame); yframe = fopen(filename, "wb"); for (i = 0; i < frame->uv_height; i++) - fwrite(frame->v_buffer + i * frame->uv_stride, frame->uv_width, 1, yframe); + fwrite(frame->v_buffer + i * frame->uv_stride, + frame->uv_width, 1, yframe); fclose(yframe); } @@ -579,9 +583,17 @@ int vp8dx_receive_compressed_data(VP8D_PTR ptr, unsigned long size, const unsign #if WRITE_RECON_BUFFER if(cm->show_frame) +<<<<<<< HEAD write_dx_frame_to_file(cm->frame_to_show, cm->current_video_frame); else write_dx_frame_to_file(cm->frame_to_show, cm->current_video_frame+1000); +======= + write_dx_frame_to_file(cm->frame_to_show, + cm->current_video_frame); + else + write_dx_frame_to_file(cm->frame_to_show, + cm->current_video_frame+1000); +>>>>>>> added separate entropy context for alt_ref #endif if(cm->filter_level) |