aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThemaister <maister@archlinux.us>2011-10-08 21:54:20 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-10-08 23:19:14 +0200
commita3e11fa43ce144fc1f4d1c9f81b7de8f18ff628f (patch)
tree3e2d49a0d00f892e05add8bad55d18957a90c3c8
parent96fad826ffde544591c850bfaf0bcce530fffaab (diff)
downloadffmpeg-a3e11fa43ce144fc1f4d1c9f81b7de8f18ff628f.tar.gz
Start adding pixel definitions for planar rgb.
-rw-r--r--libavcodec/h264.c4
-rw-r--r--libavutil/pixdesc.c9
-rw-r--r--libavutil/pixfmt.h1
3 files changed, 14 insertions, 0 deletions
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
};