[Ffmpeg-cvslog] r5456 - in trunk/libavcodec: avcodec.h snow.c
michael
subversion
Sun Jun 4 23:54:58 CEST 2006
Author: michael
Date: Sun Jun 4 23:54:58 2006
New Revision: 5456
Modified:
trunk/libavcodec/avcodec.h
trunk/libavcodec/snow.c
Log:
support doing motion estimation and compensation without any residual transform or coding
this is usefull for filters which need ME/MC
Modified: trunk/libavcodec/avcodec.h
==============================================================================
--- trunk/libavcodec/avcodec.h (original)
+++ trunk/libavcodec/avcodec.h Sun Jun 4 23:54:58 2006
@@ -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)
Modified: trunk/libavcodec/snow.c
==============================================================================
--- trunk/libavcodec/snow.c (original)
+++ trunk/libavcodec/snow.c Sun Jun 4 23:54:58 2006
@@ -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; y<h; y++){
@@ -4330,6 +4331,20 @@
{START_TIMER
predict_plane(s, s->spatial_dwt_buffer, plane_index, 1);
STOP_TIMER("pred-conv")}
+ }else{
+ //ME/MC only
+ if(pict->pict_type == I_TYPE){
+ for(y=0; y<h; y++){
+ for(x=0; x<w; x++){
+ s->current_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;
More information about the ffmpeg-cvslog
mailing list