[XviD-devel] How to reduce mosaic

Vico Sohu vico_n at sohu.com
Tue Jul 13 00:56:30 CEST 2010


Dear All Friends,

        I'm using XVid to compress live video, to make it as fast as CPU can do, I have to use xvid_plugin_single; But the compressed video always get much mosaic even I set bitrate to 500000(Default setting is 300000). Of course I know if quant parameters is set to 2,3 or 4 can control mosaic, but that make bitrate very big when video noise is too much. Could you give me some advise how to reduce mosaic as possible as XVid can do?
        Here is my XVID setting:
to Setup Encoder:
xvid_enc_create_t xvid_enc_create;

    xvid_plugin_single_t single;
 xvid_enc_plugin_t plugins[1];

 xvid_enc_create.width = m_nVideoWidth;
 xvid_enc_create.height = m_nVideoHeight;
 xvid_enc_create.profile = XVID_PROFILE_AS_L5;
 xvid_enc_create.zones = NULL;
 xvid_enc_create.num_zones = 0;
 xvid_enc_create.plugins = plugins;
 xvid_enc_create.num_plugins = 1;
 memset(&single, 0, sizeof(xvid_plugin_single_t));
 single.version = XVID_VERSION;

 single.bitrate = 400000;
 plugins[0].func = xvid_plugin_single;
 plugins[0].param = &single;

 xvid_enc_create.num_threads = 0;
 xvid_enc_create.fincr = 1;
 xvid_enc_create.fbase = 25;
 xvid_enc_create.max_key_interval = 60;
 xvid_enc_create.max_bframes = 0;
 xvid_enc_create.bquant_ratio = 150; 
 xvid_enc_create.bquant_offset = 100;
 xvid_enc_create.frame_drop_ratio = 0;
 xvid_enc_create.global = 0;
 enc_handle = NULL;
 int xerr = xvid_encore(NULL,XVID_ENC_CREATE,&xvid_enc_create,NULL);
 if(xerr != 0) return FALSE;
 enc_handle = xvid_enc_create.handle;

To Encode:
 xvid_enc_stats_t xvid_enc_stats;
 xvid_enc_frame_t xvid_enc_frame;

 memset(&xvid_enc_stats,0,sizeof(xvid_enc_stats_t));
 memset(&xvid_enc_frame,0,sizeof(xvid_enc_frame_t));
 xvid_enc_frame.version = XVID_VERSION;
 xvid_enc_stats.version = XVID_VERSION;
 
 xvid_enc_frame.bitstream = dstBuffer;
 xvid_enc_frame.length = -1;
 xvid_enc_frame.input.plane[0] = srcBuffer;
 xvid_enc_frame.input.csp = XVID_CSP_YUY2;
 xvid_enc_frame.input.stride[0] = videoWidth<<1;
 xvid_enc_frame.vol_flags = XVID_VOL_MPEGQUANT;/////0; //// 
 xvid_enc_frame.vop_flags = 0; 
 xvid_enc_frame.type = XVID_TYPE_AUTO; 
 xvid_enc_frame.quant = 0;
 xvid_enc_frame.motion =  /*XVID_ME_HALFPELREFINE16 |*/ XVID_ME_ADVANCEDDIAMOND16;

 xvid_enc_frame.motion |= XVID_ME_FASTREFINE16 | XVID_ME_FASTREFINE8 | 
         XVID_ME_SKIP_DELTASEARCH | XVID_ME_FAST_MODEINTERPOLATE | 
         XVID_ME_BFRAME_EARLYSTOP;
 xvid_enc_frame.vop_flags |= XVID_VOP_CHROMAOPT ;

 xvid_enc_frame.quant_inter_matrix = NULL;
 xvid_enc_frame.quant_intra_matrix = NULL;
 int xret = xvid_encore(m_hXvidEnc,XVID_ENC_ENCODE,&xvid_enc_frame,&xvid_enc_stats);


More information about the Xvid-devel mailing list