@ -130,7 +130,8 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe,
AVFrame * const oldpic = c93 - > pictures [ c93 - > currentpic ^ 1 ] ;
GetByteContext gb ;
uint8_t * out ;
int stride , ret , i , x , y , b , bt = 0 ;
int ret , i , x , y , b , bt = 0 ;
ptrdiff_t stride ;
if ( ( ret = ff_set_dimensions ( avctx , WIDTH , HEIGHT ) ) < 0 )
return ret ;
@ -156,7 +157,6 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe,
out = newpic - > data [ 0 ] + y * stride ;
for ( x = 0 ; x < WIDTH ; x + = 8 ) {
uint8_t * copy_from = oldpic - > data [ 0 ] ;
unsigned int offset , j ;
uint8_t cols [ 4 ] , grps [ 4 ] ;
C93BlockType block_type ;
@ -165,16 +165,17 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe,
block_type = bt & 0x0F ;
switch ( block_type ) {
case C93_8X8_FROM_PREV :
offset = bytestream2_get_le16 ( & gb ) ;
case C93_8X8_FROM_PREV : {
int offset = bytestream2_get_le16 ( & gb ) ;
if ( ( ret = copy_block ( avctx , out , copy_from , offset , 8 , stride ) ) < 0 )
return ret ;
break ;
}
case C93_4X4_FROM_CURR :
copy_from = newpic - > data [ 0 ] ;
case C93_4X4_FROM_PREV :
for ( j = 0 ; j < 8 ; j + = 4 ) {
for ( int j = 0 ; j < 8 ; j + = 4 ) {
for ( i = 0 ; i < 8 ; i + = 4 ) {
int offset = bytestream2_get_le16 ( & gb ) ;
int from_x = offset % WIDTH ;
@ -203,7 +204,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe,
case C93_4X4_2COLOR :
case C93_4X4_4COLOR :
case C93_4X4_4COLOR_GRP :
for ( j = 0 ; j < 8 ; j + = 4 ) {
for ( int j = 0 ; j < 8 ; j + = 4 ) {
for ( i = 0 ; i < 8 ; i + = 4 ) {
if ( block_type = = C93_4X4_2COLOR ) {
bytestream2_get_buffer ( & gb , cols , 2 ) ;
@ -226,7 +227,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe,
break ;
case C93_8X8_INTRA :
for ( j = 0 ; j < 8 ; j + + )
for ( int j = 0 ; j < 8 ; j + + )
bytestream2_get_buffer ( & gb , out + j * stride , 8 ) ;
break ;