[FFmpeg-devel] [PATCH 1/2] add YUVJ411P

Michael Niedermayer michaelni at gmx.at
Mon May 20 15:34:04 CEST 2013


Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
---
 libavcodec/utils.c                   |    1 +
 libavutil/pixdesc.c                  |   12 ++++++++++++
 libavutil/pixfmt.h                   |    1 +
 libswscale/utils.c                   |    4 ++++
 tests/ref/fate/filter-pixdesc        |    1 +
 tests/ref/fate/filter-pixfmts-copy   |    1 +
 tests/ref/fate/filter-pixfmts-field  |    1 +
 tests/ref/fate/filter-pixfmts-hflip  |    1 +
 tests/ref/fate/filter-pixfmts-il     |    1 +
 tests/ref/fate/filter-pixfmts-null   |    1 +
 tests/ref/fate/filter-pixfmts-pad    |    1 +
 tests/ref/fate/filter-pixfmts-scale  |    1 +
 tests/ref/fate/filter-pixfmts-swapuv |    1 +
 tests/ref/fate/filter-pixfmts-vflip  |    1 +
 14 files changed, 28 insertions(+)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index c6442bb..aa6d800 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -263,6 +263,7 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
         h_align = 16 * 2; // interlaced needs 2 macroblocks height
         break;
     case AV_PIX_FMT_YUV411P:
+    case AV_PIX_FMT_YUVJ411P:
     case AV_PIX_FMT_UYYVYY411:
         w_align = 32;
         h_align = 8;
diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 8ec6c53..17f7e27 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -225,6 +225,18 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
         },
         .flags = AV_PIX_FMT_FLAG_PLANAR,
     },
+    [AV_PIX_FMT_YUVJ411P] = {
+        .name = "yuvj411p",
+        .nb_components = 3,
+        .log2_chroma_w = 2,
+        .log2_chroma_h = 0,
+        .comp = {
+            { 0, 0, 1, 0, 7 },        /* Y */
+            { 1, 0, 1, 0, 7 },        /* U */
+            { 2, 0, 1, 0, 7 },        /* V */
+        },
+        .flags = AV_PIX_FMT_FLAG_PLANAR,
+    },
     [AV_PIX_FMT_GRAY8] = {
         .name = "gray",
         .nb_components = 1,
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index 1760ab1..b063251 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -237,6 +237,7 @@ enum AVPixelFormat {
     AV_PIX_FMT_GBRAP,       ///< planar GBRA 4:4:4:4 32bpp
     AV_PIX_FMT_GBRAP16BE,   ///< planar GBRA 4:4:4:4 64bpp, big-endian
     AV_PIX_FMT_GBRAP16LE,   ///< planar GBRA 4:4:4:4 64bpp, little-endian
+    AV_PIX_FMT_YUVJ411P,    ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
     AV_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
 
 #if FF_API_PIX_FMT
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 6bcd226..6324bc8 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -91,6 +91,7 @@ static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
     [AV_PIX_FMT_MONOBLACK]   = { 1, 1 },
     [AV_PIX_FMT_PAL8]        = { 1, 0 },
     [AV_PIX_FMT_YUVJ420P]    = { 1, 1 },
+    [AV_PIX_FMT_YUVJ411P]    = { 1, 1 },
     [AV_PIX_FMT_YUVJ422P]    = { 1, 1 },
     [AV_PIX_FMT_YUVJ444P]    = { 1, 1 },
     [AV_PIX_FMT_UYVY422]     = { 1, 1 },
@@ -999,6 +1000,9 @@ static int handle_jpeg(enum AVPixelFormat *format)
     case AV_PIX_FMT_YUVJ420P:
         *format = AV_PIX_FMT_YUV420P;
         return 1;
+    case AV_PIX_FMT_YUVJ411P:
+        *format = AV_PIX_FMT_YUV411P;
+        return 1;
     case AV_PIX_FMT_YUVJ422P:
         *format = AV_PIX_FMT_YUV422P;
         return 1;
diff --git a/tests/ref/fate/filter-pixdesc b/tests/ref/fate/filter-pixdesc
index d0d2890..c5d9d82 100644
--- a/tests/ref/fate/filter-pixdesc
+++ b/tests/ref/fate/filter-pixdesc
@@ -105,6 +105,7 @@ yuva444p16be        52a9591ec0d5059e49b1b2803f8582aa
 yuva444p16le        a9272ac197e4a4195662ce90f533976c
 yuva444p9be         f72f646ef07cdab613420585aba041ac
 yuva444p9le         6d431b0a27bf4f86ea44ef5f14247a01
+yuvj411p            037accc8e48ac9928a580cddf444f129
 yuvj420p            73661456012f20cda81207b14bb0c0a5
 yuvj422p            aa97862b57f47c5a6506156e9aaf129a
 yuvj440p            ff8b9884a49d546b035f5d2ac1e673df
diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy
index 284ba78..7883b10 100644
--- a/tests/ref/fate/filter-pixfmts-copy
+++ b/tests/ref/fate/filter-pixfmts-copy
@@ -108,6 +108,7 @@ yuva444p16be        52a9591ec0d5059e49b1b2803f8582aa
 yuva444p16le        a9272ac197e4a4195662ce90f533976c
 yuva444p9be         f72f646ef07cdab613420585aba041ac
 yuva444p9le         6d431b0a27bf4f86ea44ef5f14247a01
+yuvj411p            037accc8e48ac9928a580cddf444f129
 yuvj420p            73661456012f20cda81207b14bb0c0a5
 yuvj422p            aa97862b57f47c5a6506156e9aaf129a
 yuvj440p            ff8b9884a49d546b035f5d2ac1e673df
diff --git a/tests/ref/fate/filter-pixfmts-field b/tests/ref/fate/filter-pixfmts-field
index a1b6c53..edf7abd 100644
--- a/tests/ref/fate/filter-pixfmts-field
+++ b/tests/ref/fate/filter-pixfmts-field
@@ -108,6 +108,7 @@ yuva444p16be        ac5c17adeb0ef6730a0de1dbd1d14a1a
 yuva444p16le        41f1a82eb686d7191bdb00206f723247
 yuva444p9be         413d01385a8b008031b2ab3ef0b9eff4
 yuva444p9le         33ede0bd20bfd85489d266ac81d035d6
+yuvj411p            dbcc5e7ef64335ad30b8b9717bfa63d9
 yuvj420p            762dc6a157d0bee72da3e3d852668aef
 yuvj422p            8cec955c1c62b00b6798361ef82962b7
 yuvj440p            7b469444994d8b52766ee461bcb795ea
diff --git a/tests/ref/fate/filter-pixfmts-hflip b/tests/ref/fate/filter-pixfmts-hflip
index 83dc3f4..a4036d4 100644
--- a/tests/ref/fate/filter-pixfmts-hflip
+++ b/tests/ref/fate/filter-pixfmts-hflip
@@ -105,6 +105,7 @@ yuva444p16be        2dd545e4ddb0f134322eee1c1de4c2ff
 yuva444p16le        1e144cc9ea16429c1655c67e2f12f5c9
 yuva444p9be         e37fa0743bf720fbe31605714d7f7ad6
 yuva444p9le         9bd4083c1384a55e91f02630161dc4c3
+yuvj411p            042671398bc17a5f52aa9d791b361c5c
 yuvj420p            86370b945c5d19d809ee92386d476a53
 yuvj422p            d3bda08bd4b92a256a8ec8432c4767d1
 yuvj440p            dbae7083c82f20a38fc55e6f8bc374bc
diff --git a/tests/ref/fate/filter-pixfmts-il b/tests/ref/fate/filter-pixfmts-il
index b45ad53..8057ea8 100644
--- a/tests/ref/fate/filter-pixfmts-il
+++ b/tests/ref/fate/filter-pixfmts-il
@@ -107,6 +107,7 @@ yuva444p16be        45ec67a0828aedf18f1ed54fcfb0ff83
 yuva444p16le        7b8e5963f19e6fe7fd409b34af014489
 yuva444p9be         6d2905a9e61ce4ff5b3d7b972a7333eb
 yuva444p9le         e2ffdb1d867a1b78f3bd38d600b17193
+yuvj411p            840bb5fc87ba0d3101d5c25b3f480923
 yuvj420p            d1a8d9cf6b4035ac5d6439ab2754b09d
 yuvj422p            d20df6138cdf62d7f3b93eb1277827d6
 yuvj440p            17a24a86f279febaebb66d65509088e8
diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null
index 284ba78..7883b10 100644
--- a/tests/ref/fate/filter-pixfmts-null
+++ b/tests/ref/fate/filter-pixfmts-null
@@ -108,6 +108,7 @@ yuva444p16be        52a9591ec0d5059e49b1b2803f8582aa
 yuva444p16le        a9272ac197e4a4195662ce90f533976c
 yuva444p9be         f72f646ef07cdab613420585aba041ac
 yuva444p9le         6d431b0a27bf4f86ea44ef5f14247a01
+yuvj411p            037accc8e48ac9928a580cddf444f129
 yuvj420p            73661456012f20cda81207b14bb0c0a5
 yuvj422p            aa97862b57f47c5a6506156e9aaf129a
 yuvj440p            ff8b9884a49d546b035f5d2ac1e673df
diff --git a/tests/ref/fate/filter-pixfmts-pad b/tests/ref/fate/filter-pixfmts-pad
index f8f8dd4..78858d2 100644
--- a/tests/ref/fate/filter-pixfmts-pad
+++ b/tests/ref/fate/filter-pixfmts-pad
@@ -20,6 +20,7 @@ yuv444p             248bdf9747d5c3718580dc2279e2e273
 yuva420p            b5bdefbb0c5b302b6d18ee4df7c1d7c7
 yuva422p            8b56b36d9eb3c382d2a5a695107e759d
 yuva444p            389cf95e98bf24684a42d5d67b913e16
+yuvj411p            5f10066e6a85d4785064ccdbb7259775
 yuvj420p            d182ac937d312e4894c1bc548883bf1c
 yuvj422p            26ac91b5daf6f2f1f3c22be489e994a3
 yuvj440p            63e2b94f81e0a6f2868055a4c8258b63
diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale
index dd3e9fa..3079a74 100644
--- a/tests/ref/fate/filter-pixfmts-scale
+++ b/tests/ref/fate/filter-pixfmts-scale
@@ -108,6 +108,7 @@ yuva444p16be        36a8797545163c24fc0d73f669c3108c
 yuva444p16le        c017c229aacb832a12c2297fb080a7a0
 yuva444p9be         8bfb5decfc8b71478b090a5b48c316c3
 yuva444p9le         2c7bfb90f7db9faab6862537801e1143
+yuvj411p            4e37fb8600e001c387bc67cd8cf8ce33
 yuvj420p            31386dce60a2dcc493da5d0ed9d880df
 yuvj422p            492452e50a3fe66724840cad29be4098
 yuvj440p            7632893e81d3f4f3ace3755f97479897
diff --git a/tests/ref/fate/filter-pixfmts-swapuv b/tests/ref/fate/filter-pixfmts-swapuv
index 2474171..7bc3e3d 100644
--- a/tests/ref/fate/filter-pixfmts-swapuv
+++ b/tests/ref/fate/filter-pixfmts-swapuv
@@ -55,6 +55,7 @@ yuva444p16be        5722e1a5b09b3808e5bbd9a7db1add49
 yuva444p16le        342725e837355d66019ec05ffa5b6c4c
 yuva444p9be         bcea6ad30ced293dbba9d7a6780d52ec
 yuva444p9le         bbd56cf86dadd7db8625d3679c6acc45
+yuvj411p            8c6457a0ec6d796884e88f88ae17c9e3
 yuvj420p            06d3226d86dbd01cd359d8a1507d0e6b
 yuvj422p            8f87a2f4261297545b53b3f237c5bf1a
 yuvj440p            92c7d84f41d703878ae53911d03d23c9
diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip
index 1c2c8e6..2b7545a 100644
--- a/tests/ref/fate/filter-pixfmts-vflip
+++ b/tests/ref/fate/filter-pixfmts-vflip
@@ -108,6 +108,7 @@ yuva444p16be        4699a802e8ea3e74e968122980c0b0b0
 yuva444p16le        6f54a8cff38c54a235b92a0f1314e0aa
 yuva444p9be         7472bb4b0c774d5d741035086d5e4330
 yuva444p9le         ae11ddd5a3e8d69a36989f6f2a8897a1
+yuvj411p            be518349f35aa67e048b854ff2da60c4
 yuvj420p            200b0332de9944e76c94d2e0699a5a2d
 yuvj422p            a19a89ef145305cf224ef5aa247d075a
 yuvj440p            4240c9348d28af5f3edd0e642002bd2c
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list