Mercurial > mplayer.hg
changeset 3332:09f972eef7a3
fixed Video 1 bug which cut off decoding too soon, resulting in torn
frames
author | melanson |
---|---|
date | Wed, 05 Dec 2001 04:17:24 +0000 |
parents | 00ebfe9072e8 |
children | 5c6cdf5490f0 |
files | msvidc.c |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/msvidc.c Wed Dec 05 04:16:04 2001 +0000 +++ b/msvidc.c Wed Dec 05 04:17:24 2001 +0000 @@ -43,6 +43,7 @@ int bytes_per_pixel) { int block_ptr, pixel_ptr; + int total_blocks; int pixel_x, pixel_y; // pixel width and height iterators int block_x, block_y; // block width and height iterators int blocks_wide, blocks_high; // width and height in 4x4 blocks @@ -59,6 +60,7 @@ skip_blocks = 0; blocks_wide = width / 4; blocks_high = height / 4; + total_blocks = blocks_wide * blocks_high; block_inc = 4 * bytes_per_pixel; row_dec = (width + 4) * bytes_per_pixel; @@ -72,6 +74,7 @@ { block_ptr += block_inc; skip_blocks--; + total_blocks--; continue; } @@ -82,7 +85,7 @@ byte_b = encoded[stream_ptr++]; // check if the decode is finished - if ((byte_a == 0) && (byte_b == 0)) + if ((byte_a == 0) && (byte_b == 0) && (total_blocks == 0)) return; // check if this is a skip code @@ -204,6 +207,7 @@ } block_ptr += block_inc; + total_blocks--; } } } @@ -218,6 +222,7 @@ int bytes_per_pixel) { int block_ptr, pixel_ptr; + int total_blocks; int pixel_x, pixel_y; // pixel width and height iterators int block_x, block_y; // block width and height iterators int blocks_wide, blocks_high; // width and height in 4x4 blocks @@ -234,6 +239,7 @@ skip_blocks = 0; blocks_wide = width / 4; blocks_high = height / 4; + total_blocks = blocks_wide * blocks_high; block_inc = 4 * bytes_per_pixel; row_dec = (width + 4) * bytes_per_pixel; @@ -247,6 +253,7 @@ { block_ptr += block_inc; skip_blocks--; + total_blocks--; continue; } @@ -257,7 +264,7 @@ byte_b = encoded[stream_ptr++]; // check if the decode is finished - if ((byte_a == 0) && (byte_b == 0)) + if ((byte_a == 0) && (byte_b == 0) && (total_blocks == 0)) return; // check if this is a skip code @@ -376,6 +383,7 @@ } block_ptr += block_inc; + total_blocks--; } } }