aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2011-10-21 16:02:29 +0200
committerAnton Khirnov <anton@khirnov.net>2011-10-23 14:16:16 +0200
commit1deb66c50cea1891fb8ddcc12ec6960557b93209 (patch)
tree1a5a02c7157d7b66479879b127293c5c58f93d4e /libavcodec
parent3fc08304322ce3ed0e4a71efde78ae5e0d5c910c (diff)
downloadffmpeg-1deb66c50cea1891fb8ddcc12ec6960557b93209.tar.gz
lavc: move get_b_cbp() from h263.h to mpeg4videoenc.c
It's not used anywhere else.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/h263.h42
-rw-r--r--libavcodec/mpeg4videoenc.c40
2 files changed, 40 insertions, 42 deletions
diff --git a/libavcodec/h263.h b/libavcodec/h263.h
index 1dc300709e..73c5966605 100644
--- a/libavcodec/h263.h
+++ b/libavcodec/h263.h
@@ -200,48 +200,6 @@ static inline int get_p_cbp(MpegEncContext * s,
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)
{
int i;
diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c
index cbcd3ccf57..3072ace046 100644
--- a/libavcodec/mpeg4videoenc.c
+++ b/libavcodec/mpeg4videoenc.c
@@ -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
static const int dquant_code[5]= {1,0,9,2,3};