# HG changeset patch # User michael # Date 1116264156 0 # Node ID 979a847cb943ef1e005099f95213a8e24a1b241d # Parent bdd509b4b5545ed894aa7e4c75f0333bb52803e0 various 10l fixes for the loop filter diff -r bdd509b4b554 -r 979a847cb943 vp3.c --- a/vp3.c Mon May 16 14:55:22 2005 +0000 +++ b/vp3.c Mon May 16 17:22:36 2005 +0000 @@ -2269,7 +2269,9 @@ int fragment; int stride; unsigned char *plane_data; - int bounding_values[256]; + + int bounding_values_array[256]; + int *bounding_values= bounding_values_array+127; int filter_limit; /* find the right loop limit value */ @@ -2277,10 +2279,10 @@ if (vp31_ac_scale_factor[x] >= s->quality_index) break; } - filter_limit = vp31_filter_limit_values[x]; + filter_limit = vp31_filter_limit_values[s->quality_index]; /* set up the bounding values */ - memset(bounding_values, 0, 256 * sizeof(int)); + memset(bounding_values_array, 0, 256 * sizeof(int)); for (x = 0; x < filter_limit; x++) { bounding_values[-x - filter_limit] = -filter_limit + x; bounding_values[-x] = -x; @@ -2321,7 +2323,7 @@ if ((x > 0) && (s->all_fragments[fragment].coding_method != MODE_COPY)) { horizontal_filter( - plane_data + s->all_fragments[fragment].first_pixel, + plane_data + s->all_fragments[fragment].first_pixel - 7*stride, stride, bounding_values); } @@ -2329,7 +2331,7 @@ if ((y > 0) && (s->all_fragments[fragment].coding_method != MODE_COPY)) { vertical_filter( - plane_data + s->all_fragments[fragment].first_pixel, + plane_data + s->all_fragments[fragment].first_pixel + stride, stride, bounding_values); } @@ -2340,7 +2342,7 @@ (s->all_fragments[fragment].coding_method != MODE_COPY) && (s->all_fragments[fragment + 1].coding_method == MODE_COPY)) { horizontal_filter( - plane_data + s->all_fragments[fragment + 1].first_pixel, + plane_data + s->all_fragments[fragment + 1].first_pixel - 7*stride, stride, bounding_values); } @@ -2351,7 +2353,7 @@ (s->all_fragments[fragment].coding_method != MODE_COPY) && (s->all_fragments[fragment + width].coding_method == MODE_COPY)) { vertical_filter( - plane_data + s->all_fragments[fragment + width].first_pixel, + plane_data + s->all_fragments[fragment + width].first_pixel + stride, stride, bounding_values); } @@ -2740,7 +2742,6 @@ reverse_dc_prediction(s, 0, s->fragment_width, s->fragment_height); render_fragments(s, 0, s->width, s->height, 0); -// apply_loop_filter(s); if ((avctx->flags & CODEC_FLAG_GRAY) == 0) { reverse_dc_prediction(s, s->u_fragment_start, @@ -2754,6 +2755,7 @@ memset(s->current_frame.data[2], 0x80, s->width * s->height / 4); } + apply_loop_filter(s); #if KEYFRAMES_ONLY } #endif