aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-01-04 14:43:52 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-01-04 14:43:52 +0000
commit5ac59c559b18c2585bae2dd29b77d2b38b7e3449 (patch)
tree53875a02b3b3b581635be764c6c7df8835bda11e
parentbaaf3f467b850e534cce11f556a48df09f4b666d (diff)
downloadffmpeg-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.c15
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