|
|
|
@ -368,6 +368,29 @@ static inline int get_block_rate(MpegEncContext * s, DCTELEM block[64], int bloc |
|
|
|
|
return rate; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline void restore_ac_coeffs(MpegEncContext * s, DCTELEM block[6][64], int dir[6], uint8_t *st[6], int zigzag_last_index[6]) |
|
|
|
|
{ |
|
|
|
|
int i, n; |
|
|
|
|
memcpy(s->block_last_index, zigzag_last_index, sizeof(int)*6); |
|
|
|
|
|
|
|
|
|
for(n=0; n<6; n++){ |
|
|
|
|
int16_t *ac_val = s->ac_val[0][0] + s->block_index[n] * 16; |
|
|
|
|
|
|
|
|
|
st[n]= s->intra_scantable.permutated; |
|
|
|
|
if(dir[n]){ |
|
|
|
|
/* top prediction */ |
|
|
|
|
for(i=1; i<8; i++){ |
|
|
|
|
block[n][s->dsp.idct_permutation[i ]] = ac_val[i+8]; |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
/* left prediction */ |
|
|
|
|
for(i=1; i<8; i++){ |
|
|
|
|
block[n][s->dsp.idct_permutation[i<<3]]= ac_val[i ]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the optimal value (0 or 1) for the ac_pred element for the given MB in mpeg4. |
|
|
|
|
*/ |
|
|
|
@ -442,29 +465,6 @@ static inline int decide_ac_pred(MpegEncContext * s, DCTELEM block[6][64], int d |
|
|
|
|
return score < 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static inline void restore_ac_coeffs(MpegEncContext * s, DCTELEM block[6][64], int dir[6], uint8_t *st[6], int zigzag_last_index[6]) |
|
|
|
|
{ |
|
|
|
|
int i, n; |
|
|
|
|
memcpy(s->block_last_index, zigzag_last_index, sizeof(int)*6); |
|
|
|
|
|
|
|
|
|
for(n=0; n<6; n++){ |
|
|
|
|
int16_t *ac_val = s->ac_val[0][0] + s->block_index[n] * 16; |
|
|
|
|
|
|
|
|
|
st[n]= s->intra_scantable.permutated; |
|
|
|
|
if(dir[n]){ |
|
|
|
|
/* top prediction */ |
|
|
|
|
for(i=1; i<8; i++){ |
|
|
|
|
block[n][s->dsp.idct_permutation[i ]] = ac_val[i+8]; |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
/* left prediction */ |
|
|
|
|
for(i=1; i<8; i++){ |
|
|
|
|
block[n][s->dsp.idct_permutation[i<<3]]= ac_val[i ]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* modify qscale so that encoding is acually possible in h263 (limit difference to -2..2) |
|
|
|
|
*/ |
|
|
|
|