diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-16 00:14:59 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-16 00:14:59 +0000 |
commit | 358a7092d63196a0f24f53c8afcada2ceeadc942 (patch) | |
tree | f5b617786205888f02831bc9417f7a9ce6e50c59 | |
parent | 163a00b4a1ddfbfc9c38aa89fffa5d523e18a72f (diff) | |
download | mpv-358a7092d63196a0f24f53c8afcada2ceeadc942.tar.bz2 mpv-358a7092d63196a0f24f53c8afcada2ceeadc942.tar.xz |
initial stuff. comments welcomed...
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4186 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | mp_image.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/mp_image.h b/mp_image.h new file mode 100644 index 0000000000..b876c29c72 --- /dev/null +++ b/mp_image.h @@ -0,0 +1,68 @@ + +// set if it's internal buffer of the codec, and shouldn't be modified: +#define MP_IMGFLAG_READONLY 0x01 +// set if buffer is allocated (used in destination images): +#define MP_IMGFLAG_ALLOCATED 0x02 +// set if it's in video buffer/memory: +#define MP_IMGFLAG_DIRECT 0x04 + +// set if number of planes > 1 +#define MP_IMGFLAG_PLANAR 0x10 +// set if it's YUV colorspace +#define MP_IMGFLAG_YUV 0x20 +// set if it's swapped plane/byteorder +#define MP_IMGFLAG_SWAPPED 0x40 + +typedef struct mp_image_s { + unsigned short flags; + unsigned short bpp; + unsigned int imgfmt; + int width,height; // stored dimensions + int x,y,w,h; // visible dimensions + unsigned char* planes[3]; + unsigned int stride[3]; + int* qscale; + int qstride; +} mp_image_t; + +#ifdef IMGFMT_YUY2 +static inline void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){ + mpi->flags&=~(MP_IMGFLAG_PLANAR|MP_IMGFLAG_YUV|MP_IMGFLAG_SWAPPED); + mpi->out_fmt=out_fmt; + if( (out_fmt&IMGFMT_RGB_MASK) == IMGFMT_RGB ){ + mpi->bpp=out_fmt&255; + return; + } + if( (out_fmt&IMGFMT_BGR_MASK) == IMGFMT_BGR ){ + mpi->bpp=out_fmt&255; + mpi->flags|=MP_IMGFLAG_SWAPPED; + return; + } + mpi->flags|=MP_IMGFLAG_YUV; + switch(out_fmt){ + case IMGFMT_I420: + case IMGFMT_IYUV: + mpi->flags|=MP_IMGFLAG_SWAPPED; + case IMGFMT_YV12: + mpi->flags|=MP_IMGFLAG_PLANAR; + mpi->bpp=12; + return; + case IMGFMT_UYVY: + mpi->flags|=MP_IMGFLAG_SWAPPED; + case IMGFMT_YUY2: + mpi->bpp=16; + return; + } + printf("mp_image: Unknown out_fmt: 0x%X\n",out_fmt); + mpi->bpp=0; +} +#endif + +static inline mp_image_t* new_mp_image(int w,int h){ + mp_image_t* mpi=malloc(sizeof(mp_image_t)); + if(!mpi) return NULL; // error! + memset(mpi,0,sizeof(mp_image_t)); + mpi->width=mpi->w=w; + mpi->height=mpi->h=h; + return mpi; +} |