Commit 1e315236 authored by michael's avatar michael

fix loop filter


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@5791 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent b51c4d96
...@@ -1869,7 +1869,7 @@ static void render_slice(Vp3DecodeContext *s, int slice) ...@@ -1869,7 +1869,7 @@ static void render_slice(Vp3DecodeContext *s, int slice)
(s->all_fragments[i - 1].coding_method != MODE_COPY)) )) { (s->all_fragments[i - 1].coding_method != MODE_COPY)) )) {
horizontal_filter( horizontal_filter(
output_plane + s->all_fragments[i].first_pixel + 7*stride, output_plane + s->all_fragments[i].first_pixel + 7*stride,
-stride, bounding_values); -stride, s->bounding_values_array + 127);
} }
/* perform the top edge filter if: /* perform the top edge filter if:
...@@ -1885,7 +1885,7 @@ static void render_slice(Vp3DecodeContext *s, int slice) ...@@ -1885,7 +1885,7 @@ static void render_slice(Vp3DecodeContext *s, int slice)
(s->all_fragments[i - fragment_width].coding_method != MODE_COPY)) )) { (s->all_fragments[i - fragment_width].coding_method != MODE_COPY)) )) {
vertical_filter( vertical_filter(
output_plane + s->all_fragments[i].first_pixel - stride, output_plane + s->all_fragments[i].first_pixel - stride,
-stride, bounding_values); -stride, s->bounding_values_array + 127);
} }
#endif #endif
} }
...@@ -1909,7 +1909,7 @@ static void horizontal_filter(unsigned char *first_pixel, int stride, ...@@ -1909,7 +1909,7 @@ static void horizontal_filter(unsigned char *first_pixel, int stride,
unsigned char *end; unsigned char *end;
int filter_value; int filter_value;
for (end= first_pixel + 8*stride; first_pixel < end; first_pixel += stride) { for (end= first_pixel + 8*stride; first_pixel != end; first_pixel += stride) {
filter_value = filter_value =
(first_pixel[-2] - first_pixel[ 1]) (first_pixel[-2] - first_pixel[ 1])
+3*(first_pixel[ 0] - first_pixel[-1]); +3*(first_pixel[ 0] - first_pixel[-1]);
...@@ -1990,6 +1990,7 @@ static void apply_loop_filter(Vp3DecodeContext *s) ...@@ -1990,6 +1990,7 @@ static void apply_loop_filter(Vp3DecodeContext *s)
stride = s->current_frame.linesize[2]; stride = s->current_frame.linesize[2];
plane_data = s->current_frame.data[2]; plane_data = s->current_frame.data[2];
} }
if (!s->flipped_image) stride = -stride;
for (y = 0; y < height; y++) { for (y = 0; y < height; y++) {
...@@ -1999,7 +2000,7 @@ START_TIMER ...@@ -1999,7 +2000,7 @@ START_TIMER
if ((x > 0) && if ((x > 0) &&
(s->all_fragments[fragment].coding_method != MODE_COPY)) { (s->all_fragments[fragment].coding_method != MODE_COPY)) {
horizontal_filter( horizontal_filter(
plane_data + s->all_fragments[fragment].first_pixel - 7*stride, plane_data + s->all_fragments[fragment].first_pixel,
stride, bounding_values); stride, bounding_values);
} }
...@@ -2007,7 +2008,7 @@ START_TIMER ...@@ -2007,7 +2008,7 @@ START_TIMER
if ((y > 0) && if ((y > 0) &&
(s->all_fragments[fragment].coding_method != MODE_COPY)) { (s->all_fragments[fragment].coding_method != MODE_COPY)) {
vertical_filter( vertical_filter(
plane_data + s->all_fragments[fragment].first_pixel + stride, plane_data + s->all_fragments[fragment].first_pixel,
stride, bounding_values); stride, bounding_values);
} }
...@@ -2018,7 +2019,7 @@ START_TIMER ...@@ -2018,7 +2019,7 @@ START_TIMER
(s->all_fragments[fragment].coding_method != MODE_COPY) && (s->all_fragments[fragment].coding_method != MODE_COPY) &&
(s->all_fragments[fragment + 1].coding_method == MODE_COPY)) { (s->all_fragments[fragment + 1].coding_method == MODE_COPY)) {
horizontal_filter( horizontal_filter(
plane_data + s->all_fragments[fragment + 1].first_pixel - 7*stride, plane_data + s->all_fragments[fragment + 1].first_pixel,
stride, bounding_values); stride, bounding_values);
} }
...@@ -2029,7 +2030,7 @@ START_TIMER ...@@ -2029,7 +2030,7 @@ START_TIMER
(s->all_fragments[fragment].coding_method != MODE_COPY) && (s->all_fragments[fragment].coding_method != MODE_COPY) &&
(s->all_fragments[fragment + width].coding_method == MODE_COPY)) { (s->all_fragments[fragment + width].coding_method == MODE_COPY)) {
vertical_filter( vertical_filter(
plane_data + s->all_fragments[fragment + width].first_pixel + stride, plane_data + s->all_fragments[fragment + width].first_pixel,
stride, bounding_values); stride, bounding_values);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment