# HG changeset patch # User michael # Date 1149458098 0 # Node ID 937f14bb0f2320bdb9b58ba457a1393bbb7b9049 # Parent bec1eb6d374635e4907bb7e24cc0fb6682250220 support doing motion estimation and compensation without any residual transform or coding this is usefull for filters which need ME/MC diff -r bec1eb6d3746 -r 937f14bb0f23 avcodec.h --- a/avcodec.h Sat Jun 03 22:18:03 2006 +0000 +++ b/avcodec.h Sun Jun 04 21:54:58 2006 +0000 @@ -343,6 +343,7 @@ #define CODEC_FLAG2_AUD 0x00000200 ///< H.264 access unit delimiters #define CODEC_FLAG2_BRDO 0x00000400 ///< b-frame rate-distortion optimization #define CODEC_FLAG2_INTRA_VLC 0x00000800 ///< use MPEG-2 intra VLC table +#define CODEC_FLAG2_MEMC_ONLY 0x00001000 ///< only do ME/MC (I frames -> ref, P frame -> ME+MC) /* Unsupported options : * Syntax Arithmetic coding (SAC) diff -r bec1eb6d3746 -r 937f14bb0f23 snow.c --- a/snow.c Sat Jun 03 22:18:03 2006 +0000 +++ b/snow.c Sun Jun 04 21:54:58 2006 +0000 @@ -4261,6 +4261,7 @@ int x, y; // int bits= put_bits_count(&s->c.pb); + if(!(avctx->flags2 & CODEC_FLAG2_MEMC_ONLY)){ //FIXME optimize if(pict->data[plane_index]) //FIXME gray hack for(y=0; yspatial_dwt_buffer, plane_index, 1); STOP_TIMER("pred-conv")} + }else{ + //ME/MC only + if(pict->pict_type == I_TYPE){ + for(y=0; ycurrent_picture.data[plane_index][y*s->current_picture.linesize[plane_index] + x]= + pict->data[plane_index][y*pict->linesize[plane_index] + x]; + } + } + }else{ + memset(s->spatial_dwt_buffer, 0, sizeof(DWTELEM)*w*h); + predict_plane(s, s->spatial_dwt_buffer, plane_index, 1); + } + } if(s->avctx->flags&CODEC_FLAG_PSNR){ int64_t error= 0;