# HG changeset patch # User alex # Date 1024845331 0 # Node ID 0a7be46617d8edcad2c577d29085fa14efa808a9 # Parent 05cd2cf758e4276a095ce3983c3242fac2a8e963 yvu9 and if09 support diff -r 05cd2cf758e4 -r 0a7be46617d8 libmpcodecs/mp_image.h --- a/libmpcodecs/mp_image.h Sun Jun 23 15:03:54 2002 +0000 +++ b/libmpcodecs/mp_image.h Sun Jun 23 15:15:31 2002 +0000 @@ -76,6 +76,7 @@ mpi->flags|=MP_IMGFLAG_PLANAR; mpi->bpp=12; return; + case IMGFMT_IF09: case IMGFMT_YVU9: mpi->flags|=MP_IMGFLAG_PLANAR; mpi->bpp=9; diff -r 05cd2cf758e4 -r 0a7be46617d8 libmpcodecs/vd_dshow.c --- a/libmpcodecs/vd_dshow.c Sun Jun 23 15:03:54 2002 +0000 +++ b/libmpcodecs/vd_dshow.c Sun Jun 23 15:15:31 2002 +0000 @@ -67,6 +67,8 @@ case IMGFMT_I420: case IMGFMT_IYUV: DS_VideoDecoder_SetDestFmt(sh->context,12,out_fmt);break; // planar YUV + case IMGFMT_YVU9: + DS_VideoDecoder_SetDestFmt(sh->context,9,out_fmt);break; default: DS_VideoDecoder_SetDestFmt(sh->context,out_fmt&255,0); // RGB/BGR } diff -r 05cd2cf758e4 -r 0a7be46617d8 libmpcodecs/vd_xanim.c --- a/libmpcodecs/vd_xanim.c Sun Jun 23 15:03:54 2002 +0000 +++ b/libmpcodecs/vd_xanim.c Sun Jun 23 15:15:31 2002 +0000 @@ -28,7 +28,7 @@ // init driver static int init(sh_video_t *sh){ - if(!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,sh->format)) return 0; + if(!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,IMGFMT_YV12)) return 0; return xacodec_init_video(sh,sh->codec->outfmt[sh->outfmtidx]); } diff -r 05cd2cf758e4 -r 0a7be46617d8 libmpcodecs/vf_expand.c --- a/libmpcodecs/vf_expand.c Sun Jun 23 15:03:54 2002 +0000 +++ b/libmpcodecs/vf_expand.c Sun Jun 23 15:15:31 2002 +0000 @@ -146,6 +146,7 @@ static int config(struct vf_instance_s* vf, int width, int height, int d_width, int d_height, unsigned int flags, unsigned int outfmt){ + if (outfmt == IMGFMT_IF09) return 0; // calculate the missing parameters: #if 0 if(vf->priv->exp_wpriv->exp_w=width; @@ -194,10 +195,20 @@ if(mpi->flags&MP_IMGFLAG_PLANAR){ mpi->planes[0]=vf->priv->dmpi->planes[0]+ vf->priv->exp_y*vf->priv->dmpi->stride[0]+vf->priv->exp_x; + if (mpi->imgfmt == IMGFMT_YVU9) + { + mpi->planes[1]=vf->priv->dmpi->planes[1]+ + (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>2); + mpi->planes[2]=vf->priv->dmpi->planes[2]+ + (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>2); + } + else + { mpi->planes[1]=vf->priv->dmpi->planes[1]+ (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>1); mpi->planes[2]=vf->priv->dmpi->planes[2]+ (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>1); + } mpi->stride[1]=vf->priv->dmpi->stride[1]; mpi->stride[2]=vf->priv->dmpi->stride[2]; } else { @@ -231,6 +242,19 @@ vf->priv->exp_y*vf->priv->dmpi->stride[0]+vf->priv->exp_x, mpi->planes[0], mpi->w, mpi->h, vf->priv->dmpi->stride[0],mpi->stride[0]); + if (mpi->imgfmt == IMGFMT_YVU9) + { + memcpy_pic(vf->priv->dmpi->planes[1]+ + (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>2), + mpi->planes[1], mpi->w>>2, mpi->h>>2, + vf->priv->dmpi->stride[1],mpi->stride[1]); + memcpy_pic(vf->priv->dmpi->planes[2]+ + (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>2), + mpi->planes[2], mpi->w>>2, mpi->h>>2, + vf->priv->dmpi->stride[2],mpi->stride[2]); + } + else + { memcpy_pic(vf->priv->dmpi->planes[1]+ (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>1), mpi->planes[1], mpi->w>>1, mpi->h>>1, @@ -239,6 +263,7 @@ (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>1), mpi->planes[2], mpi->w>>1, mpi->h>>1, vf->priv->dmpi->stride[2],mpi->stride[2]); + } } else { memcpy_pic(vf->priv->dmpi->planes[0]+ vf->priv->exp_y*vf->priv->dmpi->stride[0]+vf->priv->exp_x*(vf->priv->dmpi->bpp/8), diff -r 05cd2cf758e4 -r 0a7be46617d8 libmpcodecs/vf_format.c --- a/libmpcodecs/vf_format.c Sun Jun 23 15:03:54 2002 +0000 +++ b/libmpcodecs/vf_format.c Sun Jun 23 15:15:31 2002 +0000 @@ -31,12 +31,15 @@ if(!strcasecmp(args,"yuy2")) vf->priv->fmt=IMGFMT_YUY2; else if(!strcasecmp(args,"yv12")) vf->priv->fmt=IMGFMT_YV12; else if(!strcasecmp(args,"i420")) vf->priv->fmt=IMGFMT_I420; else + if(!strcasecmp(args,"yvu9")) vf->priv->fmt=IMGFMT_YVU9; else + if(!strcasecmp(args,"if09")) vf->priv->fmt=IMGFMT_IF09; else if(!strcasecmp(args,"iyuv")) vf->priv->fmt=IMGFMT_IYUV; else if(!strcasecmp(args,"uyvy")) vf->priv->fmt=IMGFMT_UYVY; else if(!strcasecmp(args,"bgr24")) vf->priv->fmt=IMGFMT_BGR24; else if(!strcasecmp(args,"bgr32")) vf->priv->fmt=IMGFMT_BGR32; else if(!strcasecmp(args,"bgr16")) vf->priv->fmt=IMGFMT_BGR16; else if(!strcasecmp(args,"bgr15")) vf->priv->fmt=IMGFMT_BGR15; else + if(!strcasecmp(args,"bgr8")) vf->priv->fmt=IMGFMT_BGR8; else { printf("Unknown format name: '%s'\n",args);return 0;} } else vf->priv->fmt=IMGFMT_YUY2;