From: Michael Niedermayer Date: Thu, 31 Oct 2002 12:11:53 +0000 (+0000) Subject: dont call emms_c() for each MB X-Git-Tag: v0.5~17131 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6bb925f47dbcb073ee505ed71231c6662aec5ed1;p=platform%2Fupstream%2Flibav.git dont call emms_c() for each MB Originally committed as revision 1127 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 5571148..ad8e5b5 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1819,7 +1819,7 @@ void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) /* if previous was skipped too, then nothing to do ! skip only during decoding as we might trash the buffers during encoding a bit */ if (*mbskip_ptr >= s->ip_buffer_count && !s->encoding) - goto the_end; + return; } else { *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 ;) */ - if(s->hurry_up>1) goto the_end; + if(s->hurry_up>1) return; /* add dct residue */ 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) @@ -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; } } - emms_c(); }else /* if(s->pict_type == I_TYPE) */{ /* I-Frame */ //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){ s->pict_type= I_TYPE; memset(s->mb_type , MB_TYPE_INTRA, sizeof(UINT8)*s->mb_width*s->mb_height); diff --git a/libavcodec/utils.c b/libavcodec/utils.c index fcd6536..f7449d3 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -120,6 +120,9 @@ int avcodec_encode_video(AVCodecContext *avctx, UINT8 *buf, int buf_size, int ret; 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++; return ret; } @@ -135,6 +138,9 @@ int avcodec_decode_video(AVCodecContext *avctx, AVPicture *picture, ret = avctx->codec->decode(avctx, picture, got_picture_ptr, buf, buf_size); + + emms_c(); //needed to avoid a emms_c() call before every return; + if (*got_picture_ptr) avctx->frame_number++; return ret;