You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
dont call emms_c() for each MB
Originally committed as revision 1127 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -1819,7 +1819,7 @@ void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
|
|||||||
/* if previous was skipped too, then nothing to do !
|
/* if previous was skipped too, then nothing to do !
|
||||||
skip only during decoding as we might trash the buffers during encoding a bit */
|
skip only during decoding as we might trash the buffers during encoding a bit */
|
||||||
if (*mbskip_ptr >= s->ip_buffer_count && !s->encoding)
|
if (*mbskip_ptr >= s->ip_buffer_count && !s->encoding)
|
||||||
goto the_end;
|
return;
|
||||||
} else {
|
} else {
|
||||||
*mbskip_ptr = 0; /* not skipped */
|
*mbskip_ptr = 0; /* not skipped */
|
||||||
}
|
}
|
||||||
@@ -1866,7 +1866,7 @@ void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* skip dequant / idct if we are really late ;) */
|
/* skip dequant / idct if we are really late ;) */
|
||||||
if(s->hurry_up>1) goto the_end;
|
if(s->hurry_up>1) return;
|
||||||
|
|
||||||
/* add dct residue */
|
/* add dct residue */
|
||||||
if(s->encoding || !( s->mpeg2 || s->h263_msmpeg4 || s->codec_id==CODEC_ID_MPEG1VIDEO
|
if(s->encoding || !( s->mpeg2 || s->h263_msmpeg4 || s->codec_id==CODEC_ID_MPEG1VIDEO
|
||||||
@@ -1916,8 +1916,6 @@ void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
the_end:
|
|
||||||
emms_c(); //FIXME remove
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void dct_single_coeff_elimination(MpegEncContext *s, int n, int threshold)
|
static inline void dct_single_coeff_elimination(MpegEncContext *s, int n, int threshold)
|
||||||
@@ -2574,7 +2572,6 @@ static void encode_picture(MpegEncContext *s, int picture_number)
|
|||||||
// s->mb_type[mb_y*s->mb_width + mb_x]=MB_TYPE_INTER;
|
// s->mb_type[mb_y*s->mb_width + mb_x]=MB_TYPE_INTER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
emms_c();
|
|
||||||
}else /* if(s->pict_type == I_TYPE) */{
|
}else /* if(s->pict_type == I_TYPE) */{
|
||||||
/* I-Frame */
|
/* I-Frame */
|
||||||
//FIXME do we need to zero them?
|
//FIXME do we need to zero them?
|
||||||
@@ -2601,6 +2598,8 @@ static void encode_picture(MpegEncContext *s, int picture_number)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
emms_c();
|
||||||
|
|
||||||
if(s->scene_change_score > 0 && s->pict_type == P_TYPE){
|
if(s->scene_change_score > 0 && s->pict_type == P_TYPE){
|
||||||
s->pict_type= I_TYPE;
|
s->pict_type= I_TYPE;
|
||||||
memset(s->mb_type , MB_TYPE_INTRA, sizeof(UINT8)*s->mb_width*s->mb_height);
|
memset(s->mb_type , MB_TYPE_INTRA, sizeof(UINT8)*s->mb_width*s->mb_height);
|
||||||
|
@@ -120,6 +120,9 @@ int avcodec_encode_video(AVCodecContext *avctx, UINT8 *buf, int buf_size,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = avctx->codec->encode(avctx, buf, buf_size, (void *)pict);
|
ret = avctx->codec->encode(avctx, buf, buf_size, (void *)pict);
|
||||||
|
|
||||||
|
emms_c(); //needed to avoid a emms_c() call before every return;
|
||||||
|
|
||||||
avctx->frame_number++;
|
avctx->frame_number++;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -135,6 +138,9 @@ int avcodec_decode_video(AVCodecContext *avctx, AVPicture *picture,
|
|||||||
|
|
||||||
ret = avctx->codec->decode(avctx, picture, got_picture_ptr,
|
ret = avctx->codec->decode(avctx, picture, got_picture_ptr,
|
||||||
buf, buf_size);
|
buf, buf_size);
|
||||||
|
|
||||||
|
emms_c(); //needed to avoid a emms_c() call before every return;
|
||||||
|
|
||||||
if (*got_picture_ptr)
|
if (*got_picture_ptr)
|
||||||
avctx->frame_number++;
|
avctx->frame_number++;
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user