mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 05:50:43 +00:00
Improve motion estimation metric.
Patch by Michael Niedermayer Originally committed as revision 13090 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b9a7da77ec
commit
058aae3ce7
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user