Commit 83029e47 authored by kostya's avatar kostya

Improve motion estimation metric.

Patch by Michael Niedermayer



git-svn-id: file:///var/local/repositories/ffmpeg/trunk@13090 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 21015116
......@@ -54,6 +54,8 @@ typedef struct ZmbvEncContext {
z_stream zstream;
} ZmbvEncContext;
static int score_tab[256];
/** Block comparing function
* XXX should be optimized and moved to DSPContext
* TODO handle out of edge ME
......@@ -62,13 +64,18 @@ static inline int block_cmp(uint8_t *src, int stride, uint8_t *src2, int stride2
{
int sum = 0;
int i, j;
uint8_t histogram[256]={0};
for(j = 0; j < bh; j++){
for(i = 0; i < bw; i++)
sum += src[i] ^ src2[i];
histogram[src[i] ^ src2[i]]++;
src += stride;
src2 += stride2;
}
for(i=1; i<256; i++)
sum+= score_tab[histogram[i]];
return sum;
}
......@@ -235,8 +242,12 @@ static av_cold int encode_init(AVCodecContext *avctx)
{
ZmbvEncContext * const c = avctx->priv_data;
int zret; // Zlib return code
int i;
int lvl = 9;
for(i=1; i<256; i++)
score_tab[i]= -i * log2(i/256.0) * 256;
c->avctx = avctx;
c->pic.data[0] = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment