Пример #1
0
#ifdef CONFIG_ASS
    &vf_info_ass,
#endif
    &vf_info_yadif,
    &vf_info_blackframe,
    &vf_info_ow,
    &vf_info_fixpts,
    &vf_info_stereo3d,
    NULL
};

// For the vf option
m_obj_settings_t* vf_settings = NULL;
const m_obj_list_t vf_obj_list = {
  (void**)filter_list,
  M_ST_OFF(vf_info_t,name),
  M_ST_OFF(vf_info_t,info),
  M_ST_OFF(vf_info_t,opts)
};

//============================================================================
// mpi stuff:

void vf_mpi_clear(mp_image_t* mpi,int x0,int y0,int w,int h){
    int y;
    if(mpi->flags&MP_IMGFLAG_PLANAR){
        y0&=~1;h+=h&1;
        if(x0==0 && w==mpi->width){
            // full width clear:
            memset(mpi->planes[0]+mpi->stride[0]*y0,0,mpi->stride[0]*h);
            memset(mpi->planes[1]+mpi->stride[1]*(y0>>mpi->chroma_y_shift),128,mpi->stride[1]*(h>>mpi->chroma_y_shift));
Пример #2
0
int set_offset(T_PkgType *pkg_type)
{
int i,k,l;
int ali,dali,lali,llali,ldli;
int max_align=1;

	if(pkg_type->offset>-1) return cnt_type(pkg_type);
	ali= M_ST_OFF(align,b) - 1;
	dali=M_ST_OFF(dalign,b) - 1;
	lali= M_ST_OFF(l_ali,b) - 1;
	llali= M_ST_OFF(ll_ali,b) - 1;
	ldli= M_ST_OFF(dfali,b) - 1;
	k=0;
	switch(pkg_type->type &127) {
	case CH_SHORT:
		max_align=2;
			break;
	case CH_INT:
		max_align=sizeof(int);
			break;
	case CH_LONG:
		max_align=sizeof(long);
			break;
	case CH_INT64:
		max_align=llali+1;
			break;
	case CH_DOUBLE:
		max_align=(dali+1);
			break;
	case CH_LDOUBLE:
		max_align=sizeof(long double);
			break;
	case CH_FLOAT:
		max_align=sizeof(float);
			break;
	case CH_CLOB:
		max_align=sizeof(char *);
			break;
	case CH_STRUCT:
		l=set_offset((T_PkgType *)pkg_type->format);
		pkg_type->len=((T_PkgType *)pkg_type->format)[l].offset;
		l=((T_PkgType *)pkg_type->format)[l].bindtype;
		max_align=l;
		break;
	default:
		max_align=1;
		break;
	}
	for(i=0;pkg_type[i].type>-1;i++){
		if(i>0) pkg_type[i].offset=k;
		pkg_type[i].bindtype=0;
		if((pkg_type[i].type&127)!=CH_CLOB)k+=pkg_type[i].len;
		else k+=sizeof(char *);
		switch(pkg_type[i+1].type&127) {
			case 127:
				break;
			case CH_CHAR:
			case CH_BYTE:
			case CH_TINY:
				break;
			case CH_INT64:
				k=(k+llali)&~llali;
				max_align=(max_align>(llali+1))?max_align:(llali+1);
//				max_align=(max_align>sizeof(INT64))?max_align:sizeof(INT64);
				break;
			case CH_LDOUBLE:
				k=(k+ldli)&~ldli;
				max_align=(max_align>sizeof(long double))?max_align:sizeof(long double);
				break;
			case CH_DOUBLE:
				k=(k+dali)&~dali;
				max_align=(max_align>(dali+1))?max_align:(dali+1);
				break;
			case CH_SHORT:
				k=(k+1)&~1;
				max_align=(max_align>sizeof(short))?max_align:sizeof(short);
				break;
			case CH_CLOB:
				k=(k+(sizeof(char *)-1)) & ~(sizeof(char *)-1);
				max_align=(max_align>sizeof(char *))?max_align:sizeof(char *);
				break;
			case CH_FLOAT:
			case CH_INT:
				k=(k+3)&~3;
				max_align=(max_align>sizeof(int))?max_align:sizeof(int);
				break;
			case CH_STRUCT:
				l=set_offset((T_PkgType *)pkg_type[i+1].format);
				pkg_type[i+1].len=((T_PkgType *)pkg_type[i+1].format)[l].offset;
				l=((T_PkgType *)pkg_type[i+1].format)[l].bindtype;
				max_align=(max_align>l)?max_align:l;
				if(l>1) {
					l--;
					k=(k+l)&~l;
				}
				break;
			case CH_LONG:
				max_align=(max_align>(lali+1))?max_align:(lali+1);
				k=(k+lali)&~lali;
				break;
			default:
				k=(k+ali)&~ali;
				break;
		}
	}
// 2009-06-22 by ylh,adjuct to struct align
	pkg_type[i].bindtype=max_align;
	if(max_align>1) {
		max_align--;
		pkg_type[i].offset=(k+max_align)&~max_align;
	} else  pkg_type[i].offset=k;
	pkg_type->offset=0;
	return i;
}