[FFmpeg-cvslog] r19350 - trunk/libavcodec/vp3.c
reimar
subversion
Sun Jul 5 20:25:58 CEST 2009
Author: reimar
Date: Sun Jul 5 20:25:58 2009
New Revision: 19350
Log:
Extend init_loop_filter to work for filter limit values up to 127 instead
of only up to 64. 127 is the maximum value allowed by the theora specification.
Modified:
trunk/libavcodec/vp3.c
Modified: trunk/libavcodec/vp3.c
==============================================================================
--- trunk/libavcodec/vp3.c Sun Jul 5 18:01:51 2009 (r19349)
+++ trunk/libavcodec/vp3.c Sun Jul 5 20:25:58 2009 (r19350)
@@ -517,23 +517,30 @@ static void init_dequantizer(Vp3DecodeCo
/*
* This function initializes the loop filter boundary limits if the frame's
* quality index is different from the previous frame's.
+ *
+ * The filter_limit_values may not be larger than 127.
*/
static void init_loop_filter(Vp3DecodeContext *s)
{
int *bounding_values= s->bounding_values_array+127;
int filter_limit;
int x;
+ int value;
filter_limit = s->filter_limit_values[s->qps[0]];
/* set up the bounding values */
memset(s->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;
bounding_values[x] = x;
- bounding_values[x + filter_limit] = filter_limit - x;
}
+ for (x = value = filter_limit; x < 128 && value; x++, value--) {
+ bounding_values[ x] = value;
+ bounding_values[-x] = -value;
+ }
+ if (value)
+ bounding_values[128] = value;
bounding_values[129] = bounding_values[130] = filter_limit * 0x02020202;
}
More information about the ffmpeg-cvslog
mailing list