mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-14 00:58:38 +02:00
lavc: move get_b_cbp() from h263.h to mpeg4videoenc.c
It's not used anywhere else.
This commit is contained in:
parent
3fc0830432
commit
1deb66c50c
@ -200,48 +200,6 @@ static inline int get_p_cbp(MpegEncContext * s,
|
|||||||
return cbp;
|
return cbp;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int get_b_cbp(MpegEncContext * s, DCTELEM block[6][64],
|
|
||||||
int motion_x, int motion_y, int mb_type){
|
|
||||||
int cbp=0, i;
|
|
||||||
|
|
||||||
if(s->flags & CODEC_FLAG_CBP_RD){
|
|
||||||
int score=0;
|
|
||||||
const int lambda= s->lambda2 >> (FF_LAMBDA_SHIFT - 6);
|
|
||||||
|
|
||||||
for(i=0; i<6; i++){
|
|
||||||
if(s->coded_score[i] < 0){
|
|
||||||
score += s->coded_score[i];
|
|
||||||
cbp |= 1 << (5 - i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cbp){
|
|
||||||
int zero_score= -6;
|
|
||||||
if ((motion_x | motion_y | s->dquant | mb_type) == 0){
|
|
||||||
zero_score-= 4; //2*MV + mb_type + cbp bit
|
|
||||||
}
|
|
||||||
|
|
||||||
zero_score*= lambda;
|
|
||||||
if(zero_score <= score){
|
|
||||||
cbp=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < 6; i++) {
|
|
||||||
if (s->block_last_index[i] >= 0 && ((cbp >> (5 - i))&1)==0 ){
|
|
||||||
s->block_last_index[i]= -1;
|
|
||||||
s->dsp.clear_block(s->block[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
for (i = 0; i < 6; i++) {
|
|
||||||
if (s->block_last_index[i] >= 0)
|
|
||||||
cbp |= 1 << (5 - i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cbp;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void memsetw(short *tab, int val, int n)
|
static inline void memsetw(short *tab, int val, int n)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -425,6 +425,46 @@ static inline void mpeg4_encode_blocks(MpegEncContext * s, DCTELEM block[6][64],
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int get_b_cbp(MpegEncContext * s, DCTELEM block[6][64],
|
||||||
|
int motion_x, int motion_y, int mb_type)
|
||||||
|
{
|
||||||
|
int cbp = 0, i;
|
||||||
|
|
||||||
|
if (s->flags & CODEC_FLAG_CBP_RD) {
|
||||||
|
int score = 0;
|
||||||
|
const int lambda = s->lambda2 >> (FF_LAMBDA_SHIFT - 6);
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
if (s->coded_score[i] < 0) {
|
||||||
|
score += s->coded_score[i];
|
||||||
|
cbp |= 1 << (5 - i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cbp) {
|
||||||
|
int zero_score = -6;
|
||||||
|
if ((motion_x | motion_y | s->dquant | mb_type) == 0)
|
||||||
|
zero_score -= 4; //2*MV + mb_type + cbp bit
|
||||||
|
|
||||||
|
zero_score *= lambda;
|
||||||
|
if (zero_score <= score)
|
||||||
|
cbp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 6; i++) {
|
||||||
|
if (s->block_last_index[i] >= 0 && ((cbp >> (5 - i)) & 1) == 0) {
|
||||||
|
s->block_last_index[i] = -1;
|
||||||
|
s->dsp.clear_block(s->block[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < 6; i++) {
|
||||||
|
if (s->block_last_index[i] >= 0)
|
||||||
|
cbp |= 1 << (5 - i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cbp;
|
||||||
|
}
|
||||||
|
|
||||||
//FIXME this is duplicated to h263.c
|
//FIXME this is duplicated to h263.c
|
||||||
static const int dquant_code[5]= {1,0,9,2,3};
|
static const int dquant_code[5]= {1,0,9,2,3};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user