diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2004-01-04 14:43:52 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2004-01-04 14:43:52 +0000 |
commit | 5ac59c559b18c2585bae2dd29b77d2b38b7e3449 (patch) | |
tree | 53875a02b3b3b581635be764c6c7df8835bda11e | |
parent | baaf3f467b850e534cce11f556a48df09f4b666d (diff) | |
download | ffmpeg-5ac59c559b18c2585bae2dd29b77d2b38b7e3449.tar.gz |
warn the user if we had to clip some dct coefficient due to a crappy format which doenst support the whole needed range (msmpeg4/wmv mostly but mpeg1 too to a lesser extend)
Originally committed as revision 2661 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/mpegvideo.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 01e0d9930f..827e2ad5b4 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -3140,6 +3140,7 @@ static inline void clip_coeffs(MpegEncContext *s, DCTELEM *block, int last_index int i; const int maxlevel= s->max_qcoeff; const int minlevel= s->min_qcoeff; + int overflow=0; if(s->mb_intra){ i=1; //skip clipping of intra dc @@ -3150,11 +3151,19 @@ static inline void clip_coeffs(MpegEncContext *s, DCTELEM *block, int last_index const int j= s->intra_scantable.permutated[i]; int level = block[j]; - if (level>maxlevel) level=maxlevel; - else if(level<minlevel) level=minlevel; - + if (level>maxlevel){ + level=maxlevel; + overflow++; + }else if(level<minlevel){ + level=minlevel; + overflow++; + } + block[j]= level; } + + if(overflow && s->avctx->mb_decision == FF_MB_DECISION_SIMPLE) + av_log(s->avctx, AV_LOG_INFO, "warning, cliping %d dct coefficents to %d..%d\n", overflow, minlevel, maxlevel); } #if 0 |