Mercurial > libavcodec.hg
changeset 693:b6a7ff92df57 libavcodec
darkness masking (lumi masking does only bright stuff now)
author | michaelni |
---|---|
date | Tue, 24 Sep 2002 10:53:59 +0000 |
parents | 852b5a416161 |
children | 20810b0193ef |
files | avcodec.h mpegvideo.c ratecontrol.c |
diffstat | 3 files changed, 19 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/avcodec.h Tue Sep 24 09:15:46 2002 +0000 +++ b/avcodec.h Tue Sep 24 10:53:59 2002 +0000 @@ -5,8 +5,8 @@ #define LIBAVCODEC_VERSION_INT 0x000406 #define LIBAVCODEC_VERSION "0.4.6" -#define LIBAVCODEC_BUILD 4625 -#define LIBAVCODEC_BUILD_STR "4625" +#define LIBAVCODEC_BUILD 4626 +#define LIBAVCODEC_BUILD_STR "4626" enum CodecID { CODEC_ID_NONE, @@ -668,6 +668,13 @@ */ float p_masking; + /** + * darkness masking (0-> disabled) + * encoding: set by user + * decoding: unused + */ + float dark_masking; + //FIXME this should be reordered after kabis API is finished ... //TODO kill kabi /*
--- a/mpegvideo.c Tue Sep 24 09:15:46 2002 +0000 +++ b/mpegvideo.c Tue Sep 24 10:53:59 2002 +0000 @@ -433,23 +433,24 @@ } else { s->intra_only = 0; } - + /* ME algorithm */ if (avctx->me_method == 0) /* For compatibility */ s->me_method = motion_estimation_method; else s->me_method = avctx->me_method; - + /* Fixed QSCALE */ s->fixed_qscale = (avctx->flags & CODEC_FLAG_QSCALE); s->adaptive_quant= ( s->avctx->lumi_masking + || s->avctx->dark_masking || s->avctx->temporal_cplx_masking || s->avctx->spatial_cplx_masking || s->avctx->p_masking) && !s->fixed_qscale; - + switch(avctx->codec->id) { case CODEC_ID_MPEG1VIDEO: s->out_format = FMT_MPEG1;
--- a/ratecontrol.c Tue Sep 24 09:15:46 2002 +0000 +++ b/ratecontrol.c Tue Sep 24 10:53:59 2002 +0000 @@ -465,6 +465,7 @@ static void adaptive_quantization(MpegEncContext *s, double q){ int i; const float lumi_masking= s->avctx->lumi_masking / (128.0*128.0); + const float dark_masking= s->avctx->dark_masking / (128.0*128.0); const float temp_cplx_masking= s->avctx->temporal_cplx_masking; const float spatial_cplx_masking = s->avctx->spatial_cplx_masking; const float p_masking = s->avctx->p_masking; @@ -492,7 +493,11 @@ factor= pow(temp_cplx, - temp_cplx_masking); } factor*=pow(spat_cplx, - spatial_cplx_masking); - factor*= (1.0 - (lumi-128)*(lumi-128)*lumi_masking); + + if(lumi>127) + factor*= (1.0 - (lumi-128)*(lumi-128)*lumi_masking); + else + factor*= (1.0 - (lumi-128)*(lumi-128)*dark_masking); if(factor<0.00001) factor= 0.00001;