store halfpel filter coefficients in the header as well as the
flag for diagonal interpolation the primary reason for this change is that previously MC up to 1/4 pel matched H.264 exactly and that increases the risk of stumbling over patents secondly this allows 0.10 db or more quality gain by choosing a longer filter and the filter could also be chosen optimally for each frame though that of course would cause speed loss at the decoder and encoder side ... Originally committed as revision 10436 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4770a97aae
commit
7d7f57d939
@ -394,7 +394,7 @@ static const BlockNode null_block= { //FIXME add border maybe
|
|||||||
#define LOG2_MB_SIZE 4
|
#define LOG2_MB_SIZE 4
|
||||||
#define MB_SIZE (1<<LOG2_MB_SIZE)
|
#define MB_SIZE (1<<LOG2_MB_SIZE)
|
||||||
#define ENCODER_EXTRA_BITS 4
|
#define ENCODER_EXTRA_BITS 4
|
||||||
#define HTAPS 6
|
#define HTAPS 8
|
||||||
|
|
||||||
typedef struct x_and_coeff{
|
typedef struct x_and_coeff{
|
||||||
int16_t x;
|
int16_t x;
|
||||||
@ -421,6 +421,15 @@ typedef struct Plane{
|
|||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
SubBand band[MAX_DECOMPOSITIONS][4];
|
SubBand band[MAX_DECOMPOSITIONS][4];
|
||||||
|
|
||||||
|
int htaps;
|
||||||
|
int8_t hcoeff[HTAPS/2];
|
||||||
|
int diag_mc;
|
||||||
|
int fast_mc;
|
||||||
|
|
||||||
|
int last_htaps;
|
||||||
|
int8_t last_hcoeff[HTAPS/2];
|
||||||
|
int last_diag_mc;
|
||||||
}Plane;
|
}Plane;
|
||||||
|
|
||||||
typedef struct SnowContext{
|
typedef struct SnowContext{
|
||||||
@ -2143,7 +2152,7 @@ static void decode_blocks(SnowContext *s){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mc_block(uint8_t *dst, const uint8_t *src, uint8_t *tmp, int stride, int b_w, int b_h, int dx, int dy){
|
static void mc_block(Plane *p, uint8_t *dst, const uint8_t *src, uint8_t *tmp, int stride, int b_w, int b_h, int dx, int dy){
|
||||||
const static uint8_t weight[64]={
|
const static uint8_t weight[64]={
|
||||||
8,7,6,5,4,3,2,1,
|
8,7,6,5,4,3,2,1,
|
||||||
7,7,0,0,0,0,0,1,
|
7,7,0,0,0,0,0,1,
|
||||||
@ -2193,11 +2202,12 @@ START_TIMER
|
|||||||
l= brane[dx + 16*dy]>>4;
|
l= brane[dx + 16*dy]>>4;
|
||||||
|
|
||||||
b= needs[l] | needs[r];
|
b= needs[l] | needs[r];
|
||||||
|
if(p && !p->diag_mc)
|
||||||
|
b= 15;
|
||||||
|
|
||||||
if(b&5){
|
if(b&5){
|
||||||
for(y=0; y < b_h+HTAPS-1; y++){
|
for(y=0; y < b_h+HTAPS-1; y++){
|
||||||
for(x=0; x < b_w; x++){
|
for(x=0; x < b_w; x++){
|
||||||
int a_2=src[x + HTAPS/2-5];
|
|
||||||
int a_1=src[x + HTAPS/2-4];
|
int a_1=src[x + HTAPS/2-4];
|
||||||
int a0= src[x + HTAPS/2-3];
|
int a0= src[x + HTAPS/2-3];
|
||||||
int a1= src[x + HTAPS/2-2];
|
int a1= src[x + HTAPS/2-2];
|
||||||
@ -2206,15 +2216,17 @@ START_TIMER
|
|||||||
int a4= src[x + HTAPS/2+1];
|
int a4= src[x + HTAPS/2+1];
|
||||||
int a5= src[x + HTAPS/2+2];
|
int a5= src[x + HTAPS/2+2];
|
||||||
int a6= src[x + HTAPS/2+3];
|
int a6= src[x + HTAPS/2+3];
|
||||||
int a7= src[x + HTAPS/2+4];
|
int am=0;
|
||||||
#if HTAPS==6
|
if(!p || p->fast_mc){
|
||||||
int am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);
|
am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);
|
||||||
#else
|
tmpI[x]= am;
|
||||||
int am= 21*(a2+a3) - 7*(a1+a4) + 3*(a0+a5) - (a_1+a6);
|
am= (am+16)>>5;
|
||||||
#endif
|
}else{
|
||||||
|
am= p->hcoeff[0]*(a2+a3) + p->hcoeff[1]*(a1+a4) + p->hcoeff[2]*(a0+a5) + p->hcoeff[3]*(a_1+a6);
|
||||||
|
tmpI[x]= am;
|
||||||
|
am= (am+32)>>6;
|
||||||
|
}
|
||||||
|
|
||||||
tmpI[x]= am;
|
|
||||||
am= (am+16)>>5;
|
|
||||||
if(am&(~255)) am= ~(am>>31);
|
if(am&(~255)) am= ~(am>>31);
|
||||||
tmp2[x]= am;
|
tmp2[x]= am;
|
||||||
}
|
}
|
||||||
@ -2230,7 +2242,6 @@ START_TIMER
|
|||||||
if(b&2){
|
if(b&2){
|
||||||
for(y=0; y < b_h; y++){
|
for(y=0; y < b_h; y++){
|
||||||
for(x=0; x < b_w+1; x++){
|
for(x=0; x < b_w+1; x++){
|
||||||
int a_2=src[x + (HTAPS/2-5)*stride];
|
|
||||||
int a_1=src[x + (HTAPS/2-4)*stride];
|
int a_1=src[x + (HTAPS/2-4)*stride];
|
||||||
int a0= src[x + (HTAPS/2-3)*stride];
|
int a0= src[x + (HTAPS/2-3)*stride];
|
||||||
int a1= src[x + (HTAPS/2-2)*stride];
|
int a1= src[x + (HTAPS/2-2)*stride];
|
||||||
@ -2239,14 +2250,12 @@ START_TIMER
|
|||||||
int a4= src[x + (HTAPS/2+1)*stride];
|
int a4= src[x + (HTAPS/2+1)*stride];
|
||||||
int a5= src[x + (HTAPS/2+2)*stride];
|
int a5= src[x + (HTAPS/2+2)*stride];
|
||||||
int a6= src[x + (HTAPS/2+3)*stride];
|
int a6= src[x + (HTAPS/2+3)*stride];
|
||||||
int a7= src[x + (HTAPS/2+4)*stride];
|
int am=0;
|
||||||
#if HTAPS==6
|
if(!p || p->fast_mc)
|
||||||
int am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);
|
am= (20*(a2+a3) - 5*(a1+a4) + (a0+a5) + 16)>>5;
|
||||||
#else
|
else
|
||||||
int am= 21*(a2+a3) - 7*(a1+a4) + 3*(a0+a5) - (a_1+a6);
|
am= (p->hcoeff[0]*(a2+a3) + p->hcoeff[1]*(a1+a4) + p->hcoeff[2]*(a0+a5) + p->hcoeff[3]*(a_1+a6) + 32)>>6;
|
||||||
#endif
|
|
||||||
|
|
||||||
am= (am + 16)>>5;
|
|
||||||
if(am&(~255)) am= ~(am>>31);
|
if(am&(~255)) am= ~(am>>31);
|
||||||
tmp2[x]= am;
|
tmp2[x]= am;
|
||||||
}
|
}
|
||||||
@ -2261,7 +2270,6 @@ START_TIMER
|
|||||||
if(b&4){
|
if(b&4){
|
||||||
for(y=0; y < b_h; y++){
|
for(y=0; y < b_h; y++){
|
||||||
for(x=0; x < b_w; x++){
|
for(x=0; x < b_w; x++){
|
||||||
int a_2=tmpI[x + (HTAPS/2-5)*64];
|
|
||||||
int a_1=tmpI[x + (HTAPS/2-4)*64];
|
int a_1=tmpI[x + (HTAPS/2-4)*64];
|
||||||
int a0= tmpI[x + (HTAPS/2-3)*64];
|
int a0= tmpI[x + (HTAPS/2-3)*64];
|
||||||
int a1= tmpI[x + (HTAPS/2-2)*64];
|
int a1= tmpI[x + (HTAPS/2-2)*64];
|
||||||
@ -2270,13 +2278,11 @@ START_TIMER
|
|||||||
int a4= tmpI[x + (HTAPS/2+1)*64];
|
int a4= tmpI[x + (HTAPS/2+1)*64];
|
||||||
int a5= tmpI[x + (HTAPS/2+2)*64];
|
int a5= tmpI[x + (HTAPS/2+2)*64];
|
||||||
int a6= tmpI[x + (HTAPS/2+3)*64];
|
int a6= tmpI[x + (HTAPS/2+3)*64];
|
||||||
int a7= tmpI[x + (HTAPS/2+4)*64];
|
int am=0;
|
||||||
#if HTAPS==6
|
if(!p || p->fast_mc)
|
||||||
int am= 20*(a2+a3) - 5*(a1+a4) + (a0+a5);
|
am= (20*(a2+a3) - 5*(a1+a4) + (a0+a5) + 512)>>10;
|
||||||
#else
|
else
|
||||||
int am= 21*(a2+a3) - 7*(a1+a4) + 3*(a0+a5) - (a_1+a6);
|
am= (p->hcoeff[0]*(a2+a3) + p->hcoeff[1]*(a1+a4) + p->hcoeff[2]*(a0+a5) + p->hcoeff[3]*(a_1+a6) + 2048)>>12;
|
||||||
#endif
|
|
||||||
am= (am + 512)>>10;
|
|
||||||
if(am&(~255)) am= ~(am>>31);
|
if(am&(~255)) am= ~(am>>31);
|
||||||
tmp2[x]= am;
|
tmp2[x]= am;
|
||||||
}
|
}
|
||||||
@ -2336,7 +2342,7 @@ STOP_TIMER("mc_block")
|
|||||||
static void mc_block_hpel ## dx ## dy ## b_w(uint8_t *dst, const uint8_t *src, int stride, int h){\
|
static void mc_block_hpel ## dx ## dy ## b_w(uint8_t *dst, const uint8_t *src, int stride, int h){\
|
||||||
uint8_t tmp[stride*(b_w+HTAPS-1)];\
|
uint8_t tmp[stride*(b_w+HTAPS-1)];\
|
||||||
assert(h==b_w);\
|
assert(h==b_w);\
|
||||||
mc_block(dst, src-(HTAPS/2-1)-(HTAPS/2-1)*stride, tmp, stride, b_w, b_w, dx, dy);\
|
mc_block(NULL, dst, src-(HTAPS/2-1)-(HTAPS/2-1)*stride, tmp, stride, b_w, b_w, dx, dy);\
|
||||||
}
|
}
|
||||||
|
|
||||||
mca( 0, 0,16)
|
mca( 0, 0,16)
|
||||||
@ -2407,23 +2413,23 @@ static void pred_block(SnowContext *s, uint8_t *dst, uint8_t *tmp, int stride, i
|
|||||||
// assert(!(b_w&(b_w-1)));
|
// assert(!(b_w&(b_w-1)));
|
||||||
assert(b_w>1 && b_h>1);
|
assert(b_w>1 && b_h>1);
|
||||||
assert(tab_index>=0 && tab_index<4 || b_w==32);
|
assert(tab_index>=0 && tab_index<4 || b_w==32);
|
||||||
if((dx&3) || (dy&3) || !(b_w == b_h || 2*b_w == b_h || b_w == 2*b_h) || (b_w&(b_w-1)) || HTAPS != 6)
|
if((dx&3) || (dy&3) || !(b_w == b_h || 2*b_w == b_h || b_w == 2*b_h) || (b_w&(b_w-1)) || !s->plane[plane_index].fast_mc )
|
||||||
mc_block(dst, src, tmp, stride, b_w, b_h, dx, dy);
|
mc_block(&s->plane[plane_index], dst, src, tmp, stride, b_w, b_h, dx, dy);
|
||||||
else if(b_w==32){
|
else if(b_w==32){
|
||||||
int y;
|
int y;
|
||||||
for(y=0; y<b_h; y+=16){
|
for(y=0; y<b_h; y+=16){
|
||||||
s->dsp.put_h264_qpel_pixels_tab[0][dy+(dx>>2)](dst + y*stride, src + 2 + (y+2)*stride,stride);
|
s->dsp.put_h264_qpel_pixels_tab[0][dy+(dx>>2)](dst + y*stride, src + 3 + (y+3)*stride,stride);
|
||||||
s->dsp.put_h264_qpel_pixels_tab[0][dy+(dx>>2)](dst + 16 + y*stride, src + 18 + (y+2)*stride,stride);
|
s->dsp.put_h264_qpel_pixels_tab[0][dy+(dx>>2)](dst + 16 + y*stride, src + 19 + (y+3)*stride,stride);
|
||||||
}
|
}
|
||||||
}else if(b_w==b_h)
|
}else if(b_w==b_h)
|
||||||
s->dsp.put_h264_qpel_pixels_tab[tab_index ][dy+(dx>>2)](dst,src + 2 + 2*stride,stride);
|
s->dsp.put_h264_qpel_pixels_tab[tab_index ][dy+(dx>>2)](dst,src + 3 + 3*stride,stride);
|
||||||
else if(b_w==2*b_h){
|
else if(b_w==2*b_h){
|
||||||
s->dsp.put_h264_qpel_pixels_tab[tab_index+1][dy+(dx>>2)](dst ,src + 2 + 2*stride,stride);
|
s->dsp.put_h264_qpel_pixels_tab[tab_index+1][dy+(dx>>2)](dst ,src + 3 + 3*stride,stride);
|
||||||
s->dsp.put_h264_qpel_pixels_tab[tab_index+1][dy+(dx>>2)](dst+b_h,src + 2 + b_h + 2*stride,stride);
|
s->dsp.put_h264_qpel_pixels_tab[tab_index+1][dy+(dx>>2)](dst+b_h,src + 3 + b_h + 3*stride,stride);
|
||||||
}else{
|
}else{
|
||||||
assert(2*b_w==b_h);
|
assert(2*b_w==b_h);
|
||||||
s->dsp.put_h264_qpel_pixels_tab[tab_index ][dy+(dx>>2)](dst ,src + 2 + 2*stride ,stride);
|
s->dsp.put_h264_qpel_pixels_tab[tab_index ][dy+(dx>>2)](dst ,src + 3 + 3*stride ,stride);
|
||||||
s->dsp.put_h264_qpel_pixels_tab[tab_index ][dy+(dx>>2)](dst+b_w*stride,src + 2 + 2*stride+b_w*stride,stride);
|
s->dsp.put_h264_qpel_pixels_tab[tab_index ][dy+(dx>>2)](dst+b_w*stride,src + 3 + 3*stride+b_w*stride,stride);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3514,7 +3520,7 @@ static void correlate(SnowContext *s, SubBand *b, IDWTELEM *src, int stride, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void encode_header(SnowContext *s){
|
static void encode_header(SnowContext *s){
|
||||||
int plane_index, level, orientation;
|
int plane_index, level, orientation, i;
|
||||||
uint8_t kstate[32];
|
uint8_t kstate[32];
|
||||||
|
|
||||||
memset(kstate, MID_STATE, sizeof(kstate));
|
memset(kstate, MID_STATE, sizeof(kstate));
|
||||||
@ -3527,6 +3533,12 @@ static void encode_header(SnowContext *s){
|
|||||||
s->last_qbias=
|
s->last_qbias=
|
||||||
s->last_mv_scale=
|
s->last_mv_scale=
|
||||||
s->last_block_max_depth= 0;
|
s->last_block_max_depth= 0;
|
||||||
|
for(plane_index=0; plane_index<2; plane_index++){
|
||||||
|
Plane *p= &s->plane[plane_index];
|
||||||
|
p->last_htaps=0;
|
||||||
|
p->last_diag_mc=0;
|
||||||
|
memset(p->last_hcoeff, 0, sizeof(p->last_hcoeff));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(s->keyframe){
|
if(s->keyframe){
|
||||||
put_symbol(&s->c, s->header_state, s->version, 0);
|
put_symbol(&s->c, s->header_state, s->version, 0);
|
||||||
@ -3550,6 +3562,32 @@ static void encode_header(SnowContext *s){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!s->keyframe){
|
||||||
|
int update_mc=0;
|
||||||
|
for(plane_index=0; plane_index<2; plane_index++){
|
||||||
|
Plane *p= &s->plane[plane_index];
|
||||||
|
update_mc |= p->last_htaps != p->htaps;
|
||||||
|
update_mc |= p->last_diag_mc != p->diag_mc;
|
||||||
|
update_mc |= !!memcmp(p->last_hcoeff, p->hcoeff, sizeof(p->hcoeff));
|
||||||
|
}
|
||||||
|
if(!s->always_reset)
|
||||||
|
put_rac(&s->c, s->header_state, update_mc);
|
||||||
|
if(update_mc){
|
||||||
|
for(plane_index=0; plane_index<2; plane_index++){
|
||||||
|
Plane *p= &s->plane[plane_index];
|
||||||
|
put_rac(&s->c, s->header_state, p->diag_mc);
|
||||||
|
put_symbol(&s->c, s->header_state, p->htaps/2-1, 0);
|
||||||
|
for(i= p->htaps/2; i; i--)
|
||||||
|
put_symbol(&s->c, s->header_state, FFABS(p->hcoeff[i]), 0);
|
||||||
|
|
||||||
|
p->last_diag_mc= p->diag_mc;
|
||||||
|
p->last_htaps= p->htaps;
|
||||||
|
memcpy(p->last_hcoeff, p->hcoeff, sizeof(p->hcoeff));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
put_symbol(&s->c, s->header_state, s->spatial_decomposition_type - s->last_spatial_decomposition_type, 1);
|
put_symbol(&s->c, s->header_state, s->spatial_decomposition_type - s->last_spatial_decomposition_type, 1);
|
||||||
put_symbol(&s->c, s->header_state, s->qlog - s->last_qlog , 1);
|
put_symbol(&s->c, s->header_state, s->qlog - s->last_qlog , 1);
|
||||||
put_symbol(&s->c, s->header_state, s->mv_scale - s->last_mv_scale, 1);
|
put_symbol(&s->c, s->header_state, s->mv_scale - s->last_mv_scale, 1);
|
||||||
@ -3608,6 +3646,28 @@ static int decode_header(SnowContext *s){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!s->keyframe){
|
||||||
|
if(s->always_reset || get_rac(&s->c, s->header_state)){
|
||||||
|
for(plane_index=0; plane_index<2; plane_index++){
|
||||||
|
int htaps, i, sum=0, absum=0;
|
||||||
|
Plane *p= &s->plane[plane_index];
|
||||||
|
p->diag_mc= get_rac(&s->c, s->header_state);
|
||||||
|
htaps= get_symbol(&s->c, s->header_state, 0)*2 + 2;
|
||||||
|
if((unsigned)htaps > HTAPS || htaps==0)
|
||||||
|
return -1;
|
||||||
|
p->htaps= htaps;
|
||||||
|
for(i= htaps/2; i; i--){
|
||||||
|
p->hcoeff[i]= get_symbol(&s->c, s->header_state, 0) * (1-2*(i&1));
|
||||||
|
sum += p->hcoeff[i];
|
||||||
|
}
|
||||||
|
p->hcoeff[0]= 32-sum;
|
||||||
|
}
|
||||||
|
s->plane[2].diag_mc= s->plane[1].diag_mc;
|
||||||
|
s->plane[2].htaps = s->plane[1].htaps;
|
||||||
|
memcpy(s->plane[2].hcoeff, s->plane[1].hcoeff, sizeof(s->plane[1].hcoeff));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s->spatial_decomposition_type+= get_symbol(&s->c, s->header_state, 1);
|
s->spatial_decomposition_type+= get_symbol(&s->c, s->header_state, 1);
|
||||||
if(s->spatial_decomposition_type > 1){
|
if(s->spatial_decomposition_type > 1){
|
||||||
av_log(s->avctx, AV_LOG_ERROR, "spatial_decomposition_type %d not supported", s->spatial_decomposition_type);
|
av_log(s->avctx, AV_LOG_ERROR, "spatial_decomposition_type %d not supported", s->spatial_decomposition_type);
|
||||||
@ -3715,6 +3775,14 @@ static int common_init(AVCodecContext *avctx){
|
|||||||
}
|
}
|
||||||
s->plane[plane_index].width = w;
|
s->plane[plane_index].width = w;
|
||||||
s->plane[plane_index].height= h;
|
s->plane[plane_index].height= h;
|
||||||
|
|
||||||
|
s->plane[plane_index].diag_mc= 1;
|
||||||
|
s->plane[plane_index].htaps= 6;
|
||||||
|
s->plane[plane_index].hcoeff[0]= 40;
|
||||||
|
s->plane[plane_index].hcoeff[1]= -10;
|
||||||
|
s->plane[plane_index].hcoeff[2]= 2;
|
||||||
|
s->plane[plane_index].fast_mc= 1;
|
||||||
|
|
||||||
//av_log(NULL, AV_LOG_DEBUG, "%d %d\n", w, h);
|
//av_log(NULL, AV_LOG_DEBUG, "%d %d\n", w, h);
|
||||||
for(level=s->spatial_decomposition_count-1; level>=0; level--){
|
for(level=s->spatial_decomposition_count-1; level>=0; level--){
|
||||||
for(orientation=level ? 1 : 0; orientation<4; orientation++){
|
for(orientation=level ? 1 : 0; orientation<4; orientation++){
|
||||||
@ -4354,6 +4422,14 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, uint8
|
|||||||
|
|
||||||
s->current_picture.pict_type= FF_I_TYPE; //FIXME I vs. P
|
s->current_picture.pict_type= FF_I_TYPE; //FIXME I vs. P
|
||||||
decode_header(s);
|
decode_header(s);
|
||||||
|
|
||||||
|
for(plane_index=0; plane_index<3; plane_index++){
|
||||||
|
Plane *p= &s->plane[plane_index];
|
||||||
|
p->fast_mc= p->diag_mc && p->htaps==6 && p->hcoeff[0]==40
|
||||||
|
&& p->hcoeff[1]==-10
|
||||||
|
&& p->hcoeff[2]==2;
|
||||||
|
}
|
||||||
|
|
||||||
if(!s->block) alloc_blocks(s);
|
if(!s->block) alloc_blocks(s);
|
||||||
|
|
||||||
frame_start(s);
|
frame_start(s);
|
||||||
|
@ -141,12 +141,12 @@ f8f51fa737add17f7fecaefa118b57ed *./tests/data/a-ffv1.avi
|
|||||||
2654678 ./tests/data/a-ffv1.avi
|
2654678 ./tests/data/a-ffv1.avi
|
||||||
799d3db687f6cdd7a837ec156efc171f *./tests/data/out.yuv
|
799d3db687f6cdd7a837ec156efc171f *./tests/data/out.yuv
|
||||||
stddev: 0.00 PSNR:99.99 bytes:7602176
|
stddev: 0.00 PSNR:99.99 bytes:7602176
|
||||||
3b419d4e700466fed31bdbdb7fd032ea *./tests/data/a-snow.avi
|
2ef414dd800dcb05f032f9b0dfb4f483 *./tests/data/a-snow.avi
|
||||||
156682 ./tests/data/a-snow.avi
|
156716 ./tests/data/a-snow.avi
|
||||||
3de2b39f90fd8331f27e627e68e076f7 *./tests/data/out.yuv
|
3de2b39f90fd8331f27e627e68e076f7 *./tests/data/out.yuv
|
||||||
stddev: 23.15 PSNR:20.83 bytes:7602176
|
stddev: 23.15 PSNR:20.83 bytes:7602176
|
||||||
336d769a694cf92e21962879fea05331 *./tests/data/a-snow53.avi
|
5ad99548fc64ce3c83c55a37ed8f8a19 *./tests/data/a-snow53.avi
|
||||||
3520654 ./tests/data/a-snow53.avi
|
3520688 ./tests/data/a-snow53.avi
|
||||||
799d3db687f6cdd7a837ec156efc171f *./tests/data/out.yuv
|
799d3db687f6cdd7a837ec156efc171f *./tests/data/out.yuv
|
||||||
stddev: 0.00 PSNR:99.99 bytes:7602176
|
stddev: 0.00 PSNR:99.99 bytes:7602176
|
||||||
c299f64c3e85b928c5bfe71629cee006 *./tests/data/a-dv.dv
|
c299f64c3e85b928c5bfe71629cee006 *./tests/data/a-dv.dv
|
||||||
|
@ -141,12 +141,12 @@ d72b0960e162d4998b9acbabb07e99ab *./tests/data/a-ffv1.avi
|
|||||||
3525804 ./tests/data/a-ffv1.avi
|
3525804 ./tests/data/a-ffv1.avi
|
||||||
dde5895817ad9d219f79a52d0bdfb001 *./tests/data/out.yuv
|
dde5895817ad9d219f79a52d0bdfb001 *./tests/data/out.yuv
|
||||||
stddev: 0.00 PSNR:99.99 bytes:7602176
|
stddev: 0.00 PSNR:99.99 bytes:7602176
|
||||||
7e658570df22365c9dbbaa2038468f3c *./tests/data/a-snow.avi
|
17de0c60b01a13c93aa114cfeebc10eb *./tests/data/a-snow.avi
|
||||||
69026 ./tests/data/a-snow.avi
|
69060 ./tests/data/a-snow.avi
|
||||||
63ea1d2fe1693be57d3ab7d351af7c55 *./tests/data/out.yuv
|
63ea1d2fe1693be57d3ab7d351af7c55 *./tests/data/out.yuv
|
||||||
stddev: 10.87 PSNR:27.39 bytes:7602176
|
stddev: 10.87 PSNR:27.39 bytes:7602176
|
||||||
d33395ea1de6b801142be556d7699263 *./tests/data/a-snow53.avi
|
6139224013581f63c4dd1713ed4286db *./tests/data/a-snow53.avi
|
||||||
2721708 ./tests/data/a-snow53.avi
|
2721752 ./tests/data/a-snow53.avi
|
||||||
dde5895817ad9d219f79a52d0bdfb001 *./tests/data/out.yuv
|
dde5895817ad9d219f79a52d0bdfb001 *./tests/data/out.yuv
|
||||||
stddev: 0.00 PSNR:99.99 bytes:7602176
|
stddev: 0.00 PSNR:99.99 bytes:7602176
|
||||||
54cdeaee32d1007666a1e487e739daf6 *./tests/data/a-dv.dv
|
54cdeaee32d1007666a1e487e739daf6 *./tests/data/a-dv.dv
|
||||||
|
@ -2050,47 +2050,47 @@ ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
|||||||
ret: 0 st:-1 ts:-1.000000 flags:0
|
ret: 0 st:-1 ts:-1.000000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
||||||
ret: 0 st:-1 ts:1.894167 flags:1
|
ret: 0 st:-1 ts:1.894167 flags:1
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:46978 size:3663 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
|
||||||
ret: 0 st: 0 ts:0.800000 flags:0
|
ret: 0 st: 0 ts:0.800000 flags:0
|
||||||
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31750 size:3478 flags:1
|
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31766 size:3478 flags:1
|
||||||
ret:-1 st: 0 ts:-0.320000 flags:1
|
ret:-1 st: 0 ts:-0.320000 flags:1
|
||||||
ret:-1 st:-1 ts:2.576668 flags:0
|
ret:-1 st:-1 ts:2.576668 flags:0
|
||||||
ret: 0 st:-1 ts:1.470835 flags:1
|
ret: 0 st:-1 ts:1.470835 flags:1
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:46978 size:3663 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
|
||||||
ret: 0 st: 0 ts:0.360000 flags:0
|
ret: 0 st: 0 ts:0.360000 flags:0
|
||||||
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18006 size:3229 flags:1
|
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18016 size:3229 flags:1
|
||||||
ret:-1 st: 0 ts:-0.760000 flags:1
|
ret:-1 st: 0 ts:-0.760000 flags:1
|
||||||
ret:-1 st:-1 ts:2.153336 flags:0
|
ret:-1 st:-1 ts:2.153336 flags:0
|
||||||
ret: 0 st:-1 ts:1.047503 flags:1
|
ret: 0 st:-1 ts:1.047503 flags:1
|
||||||
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31750 size:3478 flags:1
|
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31766 size:3478 flags:1
|
||||||
ret: 0 st: 0 ts:-0.040000 flags:0
|
ret: 0 st: 0 ts:-0.040000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
||||||
ret: 0 st: 0 ts:2.840000 flags:1
|
ret: 0 st: 0 ts:2.840000 flags:1
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63506 size:3635 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
|
||||||
ret: 0 st:-1 ts:1.730004 flags:0
|
ret: 0 st:-1 ts:1.730004 flags:0
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63506 size:3635 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
|
||||||
ret: 0 st:-1 ts:0.624171 flags:1
|
ret: 0 st:-1 ts:0.624171 flags:1
|
||||||
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18006 size:3229 flags:1
|
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18016 size:3229 flags:1
|
||||||
ret: 0 st: 0 ts:-0.480000 flags:0
|
ret: 0 st: 0 ts:-0.480000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
||||||
ret: 0 st: 0 ts:2.400000 flags:1
|
ret: 0 st: 0 ts:2.400000 flags:1
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63506 size:3635 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
|
||||||
ret: 0 st:-1 ts:1.306672 flags:0
|
ret: 0 st:-1 ts:1.306672 flags:0
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:46978 size:3663 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
|
||||||
ret: 0 st:-1 ts:0.200839 flags:1
|
ret: 0 st:-1 ts:0.200839 flags:1
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
||||||
ret: 0 st: 0 ts:-0.920000 flags:0
|
ret: 0 st: 0 ts:-0.920000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
|
||||||
ret: 0 st: 0 ts:2.000000 flags:1
|
ret: 0 st: 0 ts:2.000000 flags:1
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63506 size:3635 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
|
||||||
ret: 0 st:-1 ts:0.883340 flags:0
|
ret: 0 st:-1 ts:0.883340 flags:0
|
||||||
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31750 size:3478 flags:1
|
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31766 size:3478 flags:1
|
||||||
ret:-1 st:-1 ts:-0.222493 flags:1
|
ret:-1 st:-1 ts:-0.222493 flags:1
|
||||||
ret:-1 st: 0 ts:2.680000 flags:0
|
ret:-1 st: 0 ts:2.680000 flags:0
|
||||||
ret: 0 st: 0 ts:1.560000 flags:1
|
ret: 0 st: 0 ts:1.560000 flags:1
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:46978 size:3663 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
|
||||||
ret: 0 st:-1 ts:0.460008 flags:0
|
ret: 0 st:-1 ts:0.460008 flags:0
|
||||||
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18006 size:3229 flags:1
|
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18016 size:3229 flags:1
|
||||||
ret:-1 st:-1 ts:-0.645825 flags:1
|
ret:-1 st:-1 ts:-0.645825 flags:1
|
||||||
----------------
|
----------------
|
||||||
tests/data/a-snow53.avi
|
tests/data/a-snow53.avi
|
||||||
@ -2098,47 +2098,47 @@ ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
|||||||
ret: 0 st:-1 ts:-1.000000 flags:0
|
ret: 0 st:-1 ts:-1.000000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
||||||
ret: 0 st:-1 ts:1.894167 flags:1
|
ret: 0 st:-1 ts:1.894167 flags:1
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902764 size:78837 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
|
||||||
ret: 0 st: 0 ts:0.800000 flags:0
|
ret: 0 st: 0 ts:0.800000 flags:0
|
||||||
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239078 size:74994 flags:1
|
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239098 size:74994 flags:1
|
||||||
ret:-1 st: 0 ts:-0.320000 flags:1
|
ret:-1 st: 0 ts:-0.320000 flags:1
|
||||||
ret:-1 st:-1 ts:2.576668 flags:0
|
ret:-1 st:-1 ts:2.576668 flags:0
|
||||||
ret: 0 st:-1 ts:1.470835 flags:1
|
ret: 0 st:-1 ts:1.470835 flags:1
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902764 size:78837 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
|
||||||
ret: 0 st: 0 ts:0.360000 flags:0
|
ret: 0 st: 0 ts:0.360000 flags:0
|
||||||
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605628 size:71059 flags:1
|
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605638 size:71059 flags:1
|
||||||
ret:-1 st: 0 ts:-0.760000 flags:1
|
ret:-1 st: 0 ts:-0.760000 flags:1
|
||||||
ret:-1 st:-1 ts:2.153336 flags:0
|
ret:-1 st:-1 ts:2.153336 flags:0
|
||||||
ret: 0 st:-1 ts:1.047503 flags:1
|
ret: 0 st:-1 ts:1.047503 flags:1
|
||||||
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239078 size:74994 flags:1
|
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239098 size:74994 flags:1
|
||||||
ret: 0 st: 0 ts:-0.040000 flags:0
|
ret: 0 st: 0 ts:-0.040000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
||||||
ret: 0 st: 0 ts:2.840000 flags:1
|
ret: 0 st: 0 ts:2.840000 flags:1
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585580 size:79731 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
|
||||||
ret: 0 st:-1 ts:1.730004 flags:0
|
ret: 0 st:-1 ts:1.730004 flags:0
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585580 size:79731 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
|
||||||
ret: 0 st:-1 ts:0.624171 flags:1
|
ret: 0 st:-1 ts:0.624171 flags:1
|
||||||
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605628 size:71059 flags:1
|
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605638 size:71059 flags:1
|
||||||
ret: 0 st: 0 ts:-0.480000 flags:0
|
ret: 0 st: 0 ts:-0.480000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
||||||
ret: 0 st: 0 ts:2.400000 flags:1
|
ret: 0 st: 0 ts:2.400000 flags:1
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585580 size:79731 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
|
||||||
ret: 0 st:-1 ts:1.306672 flags:0
|
ret: 0 st:-1 ts:1.306672 flags:0
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902764 size:78837 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
|
||||||
ret: 0 st:-1 ts:0.200839 flags:1
|
ret: 0 st:-1 ts:0.200839 flags:1
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
||||||
ret: 0 st: 0 ts:-0.920000 flags:0
|
ret: 0 st: 0 ts:-0.920000 flags:0
|
||||||
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
|
||||||
ret: 0 st: 0 ts:2.000000 flags:1
|
ret: 0 st: 0 ts:2.000000 flags:1
|
||||||
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585580 size:79731 flags:1
|
ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
|
||||||
ret: 0 st:-1 ts:0.883340 flags:0
|
ret: 0 st:-1 ts:0.883340 flags:0
|
||||||
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239078 size:74994 flags:1
|
ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239098 size:74994 flags:1
|
||||||
ret:-1 st:-1 ts:-0.222493 flags:1
|
ret:-1 st:-1 ts:-0.222493 flags:1
|
||||||
ret:-1 st: 0 ts:2.680000 flags:0
|
ret:-1 st: 0 ts:2.680000 flags:0
|
||||||
ret: 0 st: 0 ts:1.560000 flags:1
|
ret: 0 st: 0 ts:1.560000 flags:1
|
||||||
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902764 size:78837 flags:1
|
ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
|
||||||
ret: 0 st:-1 ts:0.460008 flags:0
|
ret: 0 st:-1 ts:0.460008 flags:0
|
||||||
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605628 size:71059 flags:1
|
ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605638 size:71059 flags:1
|
||||||
ret:-1 st:-1 ts:-0.645825 flags:1
|
ret:-1 st:-1 ts:-0.645825 flags:1
|
||||||
----------------
|
----------------
|
||||||
tests/data/a-svq1.mov
|
tests/data/a-svq1.mov
|
||||||
|
Loading…
Reference in New Issue
Block a user