From a3e11fa43ce144fc1f4d1c9f81b7de8f18ff628f Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 8 Oct 2011 21:54:20 +0200 Subject: [PATCH] Start adding pixel definitions for planar rgb. --- libavcodec/h264.c | 4 ++++ libavutil/pixdesc.c | 9 +++++++++ libavutil/pixfmt.h | 1 + 3 files changed, 14 insertions(+) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index df24bcf53a..05797f9455 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -2704,6 +2704,10 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ default: if (CHROMA444){ s->avctx->pix_fmt = s->avctx->color_range == AVCOL_RANGE_JPEG ? PIX_FMT_YUVJ444P : PIX_FMT_YUV444P; + if (s->avctx->colorspace == AVCOL_SPC_RGB) { + s->avctx->pix_fmt = PIX_FMT_GBR24P; + av_log(h->s.avctx, AV_LOG_DEBUG, "Detected GBR colorspace.\n"); + } }else if (CHROMA422) { s->avctx->pix_fmt = s->avctx->color_range == AVCOL_RANGE_JPEG ? PIX_FMT_YUVJ422P : PIX_FMT_YUV422P; }else{ diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 1b97ab2255..ba19afbda2 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -988,6 +988,15 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = { {0,1,2,0,7}, /* A */ }, }, + [PIX_FMT_GBR24P] = { + .name = "gbr24p", + .nb_components= 3, + .comp = { + {0,1,1,0,7}, /* G */ + {1,1,1,0,7}, /* B */ + {2,1,1,0,7}, /* R */ + }, + }, }; static enum PixelFormat get_pix_fmt_internal(const char *name) diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 81cbd72560..f23d0c5054 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -154,6 +154,7 @@ enum PixelFormat { PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian + PIX_FMT_GBR24P, ///< planar GBR, 24bpp, 8G, 8B, 8R. PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions };