[Mplayer-cvslog] CVS: main/libmpcodecs vd_xvid.c,1.1,1.2
Alex Beregszaszi
alex at naxine.org
Mon Jul 22 15:07:51 CEST 2002
Hi,
also you shouldn't break support for older xvid versions!
-
alex
<200207201353.g6KDruOV030224 at mail.mplayerhq.hu>; from albeu at mplayerhq.hu on Sat, Jul 20, 2002 at 03:53:56PM +0200
> Update of /cvsroot/mplayer/main/libmpcodecs
> In directory mail:/var/tmp.root/cvs-serv29885/libmpcodecs
>
> Modified Files:
> vd_xvid.c
> Log Message:
> Add direct rendering method 2
>
>
> Index: vd_xvid.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libmpcodecs/vd_xvid.c,v
> retrieving revision 1.1
> retrieving revision 1.2
> diff -u -r1.1 -r1.2
> --- vd_xvid.c 10 Jul 2002 20:56:57 -0000 1.1
> +++ vd_xvid.c 20 Jul 2002 13:53:53 -0000 1.2
> @@ -7,10 +7,14 @@
> #ifdef HAVE_XVID
>
> #include "vd_internal.h"
> +#include "cfgparser.h"
>
> #include <divx4.h>
> #include <xvid.h>
>
> +#ifndef XVID_CSP_EXTERN
> +#error "You need lastest XviD CVS"
> +#endif
>
> static vd_info_t info =
> {
> @@ -26,10 +30,19 @@
>
> typedef struct {
> int cs;
> + unsigned char img_type;
> void* hdl;
> mp_image_t* mpi;
> } priv_t;
>
> +static int do_dr2 = 0;
> +
> +struct config xvid_dec_opts[] = {
> + { "dr2", &do_dr2, CONF_TYPE_FLAG, 0, 0, 1, NULL},
> + { "nodr2", &do_dr2, CONF_TYPE_FLAG, 0, 1, 0, NULL},
> + {NULL, NULL, 0, 0, 0, 0, NULL}
> +};
> +
> // to set/get/query special features/parameters
> static int control(sh_video_t *sh,int cmd,void* arg,...){
> return CONTROL_UNKNOWN;
> @@ -50,7 +63,7 @@
>
> switch(sh->codec->outfmt[sh->outfmtidx]){
> case IMGFMT_YV12:
> - cs= XVID_CSP_USER;
> + cs= do_dr2 ? XVID_CSP_EXTERN : XVID_CSP_USER;
> break;
> case IMGFMT_YUY2:
> cs=XVID_CSP_YUY2;
> @@ -106,6 +119,18 @@
> p->hdl = dec_p.handle;
> sh->context = p;
>
> + switch(cs) {
> + case XVID_CSP_EXTERN:
> + p->img_type = MP_IMGTYPE_STATIC;
> + break;
> + case XVID_CSP_USER:
> + p->img_type = MP_IMGTYPE_EXPORT;
> + break;
> + default:
> + p->img_type = MP_IMGTYPE_TEMP;
> + break;
> + }
> +
> return 1;
> }
>
> @@ -122,10 +147,10 @@
> static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
> XVID_DEC_FRAME dec;
> DEC_PICTURE d4_pic;
> + XVID_DEC_PICTURE pic;
> priv_t* p = sh->context;
>
> - mp_image_t* mpi = mpcodecs_get_image(sh, p->cs == XVID_CSP_USER ?
> - MP_IMGTYPE_EXPORT : MP_IMGTYPE_TEMP,
> + mp_image_t* mpi = mpcodecs_get_image(sh, p->img_type,
> MP_IMGFLAG_ACCEPT_STRIDE,
> sh->disp_w,sh->disp_h);
>
> @@ -139,6 +164,15 @@
> switch(p->cs) {
> case XVID_CSP_USER:
> dec.image = &d4_pic;
> + break;
> + case XVID_CSP_EXTERN:
> + pic.y = mpi->planes[0];
> + pic.u = mpi->planes[1];
> + pic.v = mpi->planes[2];
> + pic.stride_y = mpi->stride[0];
> + pic.stride_u = mpi->stride[1];
> + pic.stride_v = mpi->stride[2];
> + dec.image = &pic;
> break;
> default:
> dec.image = mpi->planes[0];
>
> _______________________________________________
> Mplayer-cvslog mailing list
> Mplayer-cvslog at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog
More information about the MPlayer-cvslog
mailing list