Browse Source

simplify ff_h261_reorder_mb_index

Originally committed as revision 3649 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 21 years ago
parent
commit
87b9e6b2dd
1 changed files with 10 additions and 27 deletions
  1. +10
    -27
      libavcodec/h261.c

+ 10
- 27
libavcodec/h261.c View File

@@ -150,38 +150,21 @@ static void h261_encode_gob_header(MpegEncContext * s, int mb_line){
}

void ff_h261_reorder_mb_index(MpegEncContext* s){
int index= s->mb_x + s->mb_y*s->mb_width;

if(index % 33 == 0)
h261_encode_gob_header(s,0);

/* for CIF the GOB's are fragmented in the middle of a scanline
that's why we need to adjust the x and y index of the macroblocks */
if(ff_h261_get_picture_format(s->width,s->height) == 1){ // CIF
if((s->mb_x == 0 && (s->mb_y % 3 == 0) ) || (s->mb_x == 11 && ((s->mb_y -1 )% 3 == 0) ))
h261_encode_gob_header(s,0);
if(s->mb_x < 11 ){
if((s->mb_y % 3) == 1 ){
s->mb_x += 0;
s->mb_y += 1;
}
else if( (s->mb_y % 3) == 2 ){
s->mb_x += 11;
s->mb_y -= 1;
}
}
else{
if((s->mb_y % 3) == 1 ){
s->mb_x += 0;
s->mb_y -= 1;
}
else if( (s->mb_y % 3) == 0 ){
s->mb_x -= 11;
s->mb_y += 1;
}
}
s->mb_x = index % 11 ; index /= 11;
s->mb_y = index % 3 ; index /= 3;
s->mb_x+= 11*(index % 2); index /= 2;
s->mb_y+= 3*index;
ff_init_block_index(s);
ff_update_block_index(s);
/* for QCIF we don't need to reorder MB's
there the GOB's aren't fragmented in the middle of a scanline */
}else if(ff_h261_get_picture_format(s->width,s->height) == 0){ // QCIF
if(s->mb_y % 3 == 0 && s->mb_x == 0)
h261_encode_gob_header(s,0);
}
}



Loading…
Cancel
Save