diff options
author | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-08-01 12:39:08 +0000 |
---|---|---|
committer | michael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-08-01 12:39:08 +0000 |
commit | bfe5d4d4b4b369be9245888669b6dc9ade7ba39c (patch) | |
tree | 3cd718c0145aeceb17349631fa44cba9ca58d5f6 /libmpcodecs | |
parent | 8f7938b386d21dc5a2d1a87f5531ba3cc0b963dd (diff) | |
download | mpv-bfe5d4d4b4b369be9245888669b6dc9ade7ba39c.tar.bz2 mpv-bfe5d4d4b4b369be9245888669b6dc9ade7ba39c.tar.xz |
planar yuv 444 422 411 support
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6864 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/img_format.c | 3 | ||||
-rw-r--r-- | libmpcodecs/img_format.h | 5 | ||||
-rw-r--r-- | libmpcodecs/mp_image.h | 24 | ||||
-rw-r--r-- | libmpcodecs/vf_scale.c | 6 |
4 files changed, 38 insertions, 0 deletions
diff --git a/libmpcodecs/img_format.c b/libmpcodecs/img_format.c index 912e5d0be6..5dc0b719e9 100644 --- a/libmpcodecs/img_format.c +++ b/libmpcodecs/img_format.c @@ -26,6 +26,9 @@ char *vo_format_name(int format) case IMGFMT_CLPL: return("Planar CLPL"); case IMGFMT_Y800: return("Planar Y800"); case IMGFMT_Y8: return("Planar Y8"); + case IMGFMT_444P: return("Planar 444P"); + case IMGFMT_422P: return("Planar 422P"); + case IMGFMT_411P: return("Planar 411P"); case IMGFMT_NV12: return("Planar NV12"); case IMGFMT_IUYV: return("Packed IUYV"); case IMGFMT_IY41: return("Packed IY41"); diff --git a/libmpcodecs/img_format.h b/libmpcodecs/img_format.h index 467ebe1873..7df922e622 100644 --- a/libmpcodecs/img_format.h +++ b/libmpcodecs/img_format.h @@ -43,6 +43,11 @@ #define IMGFMT_Y8 0x20203859 #define IMGFMT_NV12 0x3231564E +/* unofficial Planar Formats, FIXME if official 4CC exists */ +#define IMGFMT_444P 0x50343434 +#define IMGFMT_422P 0x50323234 +#define IMGFMT_411P 0x50313134 + /* Packed YUV Formats */ #define IMGFMT_IUYV 0x56595549 diff --git a/libmpcodecs/mp_image.h b/libmpcodecs/mp_image.h index 04155dbf48..df7ae7e1e9 100644 --- a/libmpcodecs/mp_image.h +++ b/libmpcodecs/mp_image.h @@ -112,6 +112,30 @@ static inline void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){ mpi->chroma_x_shift=2; mpi->chroma_y_shift=2; return; + case IMGFMT_444P: + mpi->flags|=MP_IMGFLAG_PLANAR; + mpi->bpp=24; + mpi->chroma_width=(mpi->width); + mpi->chroma_height=(mpi->height); + mpi->chroma_x_shift=0; + mpi->chroma_y_shift=0; + return; + case IMGFMT_422P: + mpi->flags|=MP_IMGFLAG_PLANAR; + mpi->bpp=16; + mpi->chroma_width=(mpi->width>>1); + mpi->chroma_height=(mpi->height); + mpi->chroma_x_shift=1; + mpi->chroma_y_shift=0; + return; + case IMGFMT_411P: + mpi->flags|=MP_IMGFLAG_PLANAR; + mpi->bpp=12; + mpi->chroma_width=(mpi->width>>2); + mpi->chroma_height=(mpi->height); + mpi->chroma_x_shift=2; + mpi->chroma_y_shift=0; + return; case IMGFMT_Y800: case IMGFMT_Y8: /* they're planar ones, but for easier handling use them as packed */ diff --git a/libmpcodecs/vf_scale.c b/libmpcodecs/vf_scale.c index 6b05d9b27d..0b201a770e 100644 --- a/libmpcodecs/vf_scale.c +++ b/libmpcodecs/vf_scale.c @@ -48,6 +48,9 @@ static unsigned int outfmt_list[]={ IMGFMT_Y8, IMGFMT_YVU9, IMGFMT_IF09, + IMGFMT_444P, + IMGFMT_422P, + IMGFMT_411P, 0 }; @@ -202,6 +205,9 @@ static int query_format(struct vf_instance_s* vf, unsigned int fmt){ case IMGFMT_Y8: case IMGFMT_YVU9: case IMGFMT_IF09: + case IMGFMT_444P: + case IMGFMT_422P: + case IMGFMT_411P: { unsigned int best=find_best_out(vf); int flags; |