www.pudn.com > H265+2008.8.rar > davp_argcv1.c


 
/* 
/////////////////////////////////////////////////////////////////////////////// 
//                                                                           // 
//   Copyright (C) 2006-2008  Beijing,  pengzhen (pengzhenxp@yahoo.com.cn)   // 
//                                                                           // 
/////////////////////////////////////////////////////////////////////////////// 
*/ 
 
/** 
* set video (default) parameter 
*/ 
 
void set_video_default_parameter(dvp_ctx * lp_dvp) 
{ 
	 
	lp_dvp->wavelets = 0  ; /* wavelets */ /* 0 : w1, 1 : w2 */ 
	//lp_dvp->wavelets = 1  ; /* wavelets */ /* 0 : w1, 1 : w2 */ 
 
	lp_dvp->width  = 352 ; /* 352 */ /* picture width. (must be a multiple of 16) */  /* CIF, D1, HD */ 
	lp_dvp->height = 288 ; /* 288 */ /* picture height. (must be a multiple of 16) */ /* CIF, D1, HD */ 
 
	lp_dvp->fps  = 25 ;       /* frames/second */ /* <25,30> */  
	lp_dvp->bps  = 300*1000 ; /* bits/second */ /* <300*1000> */ 
	 
	lp_dvp->gop      = 512 ;  /* group of picture */   /* none 'P',   if gop = 0 */  
	lp_dvp->insert_i = 1 ;    /* insert picture 'I' */ /* insert 'I', if insert_i = 1 */ 
	lp_dvp->have_b   = 1 ;    /* have picture 'B' */   /* none 'B',   if have_b = 0 */ 
	//lp_dvp->ratio    = 1 ;    /* ratio of background to foreground */ /* none background, if ratio = 0 */ 
 
	lp_dvp->abr  = 0 ; /* adaptive bit rate */ /* 0 : CBR, 1 : ABR */  
	lp_dvp->me_c = 0 ; /* chroma join motion_estimate (ME) */ /* 0 : no, 1 : yes */ 
	lp_dvp->ms_t = 0 ; /* motion_search type */ /* 0 : diamond, 1 : advance diamond, 2 : small diamond, 3 : square,*/ 
 
	lp_dvp->prp = 0xff ; /* previous process */ /* <0,1,2,3> */ 
	lp_dvp->pop = 0xff ; /* post process */ /* <0,1,2,3> */ 
 
	lp_dvp->bands = 2 ; /* wavelets bands */ /* <1,2,3,4> */  
 
} 
 
/** 
* get video parameter 
*/ 
 
void get_video_parameter(dvp_ctx * lp_dvp , int argc, char **argv) 
{ 
 
    int mark = 1 ; int value = 0 ; 
	 
	set_video_default_parameter( lp_dvp ) ; 
 
    argc-- ; /* skip name */ 
    while (argc > 0)  
	{ 
 
		if ( get_parameter_flag("-wavelets") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			if( (value==0) | (value==1) ) lp_dvp->wavelets = value ; /* wavelets */ /* 0 : w1, 1 : w2 */ 
 
        } 
 
		else if ( get_parameter_flag("-frame_size") )  
		{ 
			char *arg_bak ; int width , height ;  
			 
			get_parameter_next() ; /* next */ 
			//get_parameter_read() ; 
			 
			arg_bak = argv[mark];  
			width = (int)strtol(arg_bak, (char **)&arg_bak, 10) ; /* width */ 
			arg_bak +=  (arg_bak != NULL )  ; 
			height = (int)strtol(arg_bak, (char **)&arg_bak, 10) ; /* height */ 
 
			width = (width >>4) << 4 ;  
			height = (height >>4) << 4 ;  
 
			lp_dvp->width = width ; /* picture width. (must be a multiple of 16) */ /* 352 */   /* CIF, D1, HD */ 
			lp_dvp->height = height ; /* picture height. (must be a multiple of 16) */ /* 288 */ /* CIF, D1, HD */ 
			 
        } 
 
		else if ( get_parameter_flag("-fps") )  
		{ 
            get_parameter_next() ; /* next */ 
			//get_parameter_read() ;  
			value = (int)( strtod( argv[mark], 0 ) ); 
			 
			if( (value == 50) | (value == 60) | 
				(value == 25) | (value == 30) | 
				((value >= 1) & (value <= 24)) ) 
			{ 
				lp_dvp->fps = value ; /* frames/second */ /* 25, 30 */ /* 25 */ 
			} 
			 
        } 
 
		else if ( get_parameter_flag("-bps") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			/* bits/second */ /* 50 ~~~ 10k kbit/second */ /* <300*1000> */ 
 
			if( (value >= 30) & (value <= 10*1000) ) lp_dvp->bps = value * 1000 ; /* KB */ 
 
        } 
 
		else if ( get_parameter_flag("-gop") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ; 
 
			if( value >= 0 ) lp_dvp->gop = value ; /* group of picture */   /* none 'P',   if gop = 0 */  
 
        } 
 
		else if ( get_parameter_flag("-have_b") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			lp_dvp->have_b = value & 0x01 ; /* have picture 'B' */   /* none 'B',   if have_b = 0 */ 
 
        } 
 
		else if ( get_parameter_flag("-abr") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			lp_dvp->abr = value & 0x01 ; /* adaptive bit rate */ /* 0 : CBR, 1 : ABR */ 
 
        } 
 
		else if ( get_parameter_flag("-me_c") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			lp_dvp->me_c = value & 0x01 ; /* chroma join motion_estimate (ME) */ /* 0 : no, 1 : yes */ 
 
        } 
 
		else if ( get_parameter_flag("-ms_t") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			/* motion_search type */ /* 0 : diamond, 1 : advance diamond, 2 : small diamond, 3 : square,*/ 
 
			if( (value >= 0) & (value < 4) ) lp_dvp->ms_t = value ;  
 
        } 
 
		else if ( get_parameter_flag("-prp") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			if( (value >= 0) & (value < 4) ) lp_dvp->prp = value ; /* previous process */ /* <0,1,2,3> */ 
 
        } 
 
		else if ( get_parameter_flag("-pop") )  
		{ 
            get_parameter_next() ; /* next */ 
			get_parameter_read() ;  
			 
			if( (value >= 0) & (value < 4) ) lp_dvp->pop = value ; /* post process */ /* <0,1,2,3> */ 
 
        } 
 
        get_parameter_next() /* next */ 
 
	} 
 
}