mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
darkness masking (lumi masking does only bright stuff now)
Originally committed as revision 967 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
9960903667
commit
5e746b9995
@ -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 @@ typedef struct AVCodecContext {
|
||||
*/
|
||||
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
|
||||
/*
|
||||
|
@ -433,23 +433,24 @@ int MPV_encode_init(AVCodecContext *avctx)
|
||||
} 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;
|
||||
|
@ -465,6 +465,7 @@ static void update_predictor(Predictor *p, double q, double var, double size)
|
||||
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 @@ static void adaptive_quantization(MpegEncContext *s, double q){
|
||||
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user