Browse code

libavutil: add 12 and 14 bit planar colorspaces

Reviewed-by: Jean First <jeanfirst@gmail.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2012/07/03 11:09:28
Showing 2 changed files
... ...
@@ -944,6 +944,54 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
944 944
         },
945 945
         .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
946 946
     },
947
+    [PIX_FMT_YUV420P12LE] = {
948
+        .name = "yuv420p12le",
949
+        .nb_components = 3,
950
+        .log2_chroma_w = 1,
951
+        .log2_chroma_h = 1,
952
+        .comp = {
953
+            { 0, 1, 1, 0, 11 },        /* Y */
954
+            { 1, 1, 1, 0, 11 },        /* U */
955
+            { 2, 1, 1, 0, 11 },        /* V */
956
+        },
957
+        .flags = PIX_FMT_PLANAR,
958
+    },
959
+    [PIX_FMT_YUV420P12BE] = {
960
+        .name = "yuv420p12be",
961
+        .nb_components = 3,
962
+        .log2_chroma_w = 1,
963
+        .log2_chroma_h = 1,
964
+        .comp = {
965
+            { 0, 1, 1, 0, 11 },        /* Y */
966
+            { 1, 1, 1, 0, 11 },        /* U */
967
+            { 2, 1, 1, 0, 11 },        /* V */
968
+        },
969
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
970
+    },
971
+    [PIX_FMT_YUV420P14LE] = {
972
+        .name = "yuv420p14le",
973
+        .nb_components = 3,
974
+        .log2_chroma_w = 1,
975
+        .log2_chroma_h = 1,
976
+        .comp = {
977
+            { 0, 1, 1, 0, 13 },        /* Y */
978
+            { 1, 1, 1, 0, 13 },        /* U */
979
+            { 2, 1, 1, 0, 13 },        /* V */
980
+        },
981
+        .flags = PIX_FMT_PLANAR,
982
+    },
983
+    [PIX_FMT_YUV420P14BE] = {
984
+        .name = "yuv420p14be",
985
+        .nb_components = 3,
986
+        .log2_chroma_w = 1,
987
+        .log2_chroma_h = 1,
988
+        .comp = {
989
+            { 0, 1, 1, 0, 13 },        /* Y */
990
+            { 1, 1, 1, 0, 13 },        /* U */
991
+            { 2, 1, 1, 0, 13 },        /* V */
992
+        },
993
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
994
+    },
947 995
     [PIX_FMT_YUV420P16LE] = {
948 996
         .name = "yuv420p16le",
949 997
         .nb_components = 3,
... ...
@@ -1016,6 +1064,54 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
1016 1016
         },
1017 1017
         .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
1018 1018
     },
1019
+    [PIX_FMT_YUV422P12LE] = {
1020
+        .name = "yuv422p12le",
1021
+        .nb_components = 3,
1022
+        .log2_chroma_w = 1,
1023
+        .log2_chroma_h = 0,
1024
+        .comp = {
1025
+            { 0, 1, 1, 0, 11 },        /* Y */
1026
+            { 1, 1, 1, 0, 11 },        /* U */
1027
+            { 2, 1, 1, 0, 11 },        /* V */
1028
+        },
1029
+        .flags = PIX_FMT_PLANAR,
1030
+    },
1031
+    [PIX_FMT_YUV422P12BE] = {
1032
+        .name = "yuv422p12be",
1033
+        .nb_components = 3,
1034
+        .log2_chroma_w = 1,
1035
+        .log2_chroma_h = 0,
1036
+        .comp = {
1037
+            { 0, 1, 1, 0, 11 },        /* Y */
1038
+            { 1, 1, 1, 0, 11 },        /* U */
1039
+            { 2, 1, 1, 0, 11 },        /* V */
1040
+        },
1041
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
1042
+    },
1043
+    [PIX_FMT_YUV422P14LE] = {
1044
+        .name = "yuv422p14le",
1045
+        .nb_components = 3,
1046
+        .log2_chroma_w = 1,
1047
+        .log2_chroma_h = 0,
1048
+        .comp = {
1049
+            { 0, 1, 1, 0, 13 },        /* Y */
1050
+            { 1, 1, 1, 0, 13 },        /* U */
1051
+            { 2, 1, 1, 0, 13 },        /* V */
1052
+        },
1053
+        .flags = PIX_FMT_PLANAR,
1054
+    },
1055
+    [PIX_FMT_YUV422P14BE] = {
1056
+        .name = "yuv422p14be",
1057
+        .nb_components = 3,
1058
+        .log2_chroma_w = 1,
1059
+        .log2_chroma_h = 0,
1060
+        .comp = {
1061
+            { 0, 1, 1, 0, 13 },        /* Y */
1062
+            { 1, 1, 1, 0, 13 },        /* U */
1063
+            { 2, 1, 1, 0, 13 },        /* V */
1064
+        },
1065
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
1066
+    },
1019 1067
     [PIX_FMT_YUV422P16LE] = {
1020 1068
         .name = "yuv422p16le",
1021 1069
         .nb_components = 3,
... ...
@@ -1112,6 +1208,54 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
1112 1112
         },
1113 1113
         .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
1114 1114
     },
1115
+    [PIX_FMT_YUV444P12LE] = {
1116
+        .name = "yuv444p12le",
1117
+        .nb_components = 3,
1118
+        .log2_chroma_w = 0,
1119
+        .log2_chroma_h = 0,
1120
+        .comp = {
1121
+            { 0, 1, 1, 0, 11 },        /* Y */
1122
+            { 1, 1, 1, 0, 11 },        /* U */
1123
+            { 2, 1, 1, 0, 11 },        /* V */
1124
+        },
1125
+        .flags = PIX_FMT_PLANAR,
1126
+    },
1127
+    [PIX_FMT_YUV444P12BE] = {
1128
+        .name = "yuv444p12be",
1129
+        .nb_components = 3,
1130
+        .log2_chroma_w = 0,
1131
+        .log2_chroma_h = 0,
1132
+        .comp = {
1133
+            { 0, 1, 1, 0, 11 },        /* Y */
1134
+            { 1, 1, 1, 0, 11 },        /* U */
1135
+            { 2, 1, 1, 0, 11 },        /* V */
1136
+        },
1137
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
1138
+    },
1139
+    [PIX_FMT_YUV444P14LE] = {
1140
+        .name = "yuv444p14le",
1141
+        .nb_components = 3,
1142
+        .log2_chroma_w = 0,
1143
+        .log2_chroma_h = 0,
1144
+        .comp = {
1145
+            { 0, 1, 1, 0, 13 },        /* Y */
1146
+            { 1, 1, 1, 0, 13 },        /* U */
1147
+            { 2, 1, 1, 0, 13 },        /* V */
1148
+        },
1149
+        .flags = PIX_FMT_PLANAR,
1150
+    },
1151
+    [PIX_FMT_YUV444P14BE] = {
1152
+        .name = "yuv444p14be",
1153
+        .nb_components = 3,
1154
+        .log2_chroma_w = 0,
1155
+        .log2_chroma_h = 0,
1156
+        .comp = {
1157
+            { 0, 1, 1, 0, 13 },        /* Y */
1158
+            { 1, 1, 1, 0, 13 },        /* U */
1159
+            { 2, 1, 1, 0, 13 },        /* V */
1160
+        },
1161
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR,
1162
+    },
1115 1163
     [PIX_FMT_DXVA2_VLD] = {
1116 1164
         .name = "dxva2_vld",
1117 1165
         .log2_chroma_w = 1,
... ...
@@ -1192,6 +1336,54 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
1192 1192
         },
1193 1193
         .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_RGB,
1194 1194
     },
1195
+    [PIX_FMT_GBRP12LE] = {
1196
+        .name = "gbrp12le",
1197
+        .nb_components = 3,
1198
+        .log2_chroma_w = 0,
1199
+        .log2_chroma_h = 0,
1200
+        .comp = {
1201
+            { 2, 1, 1, 0, 11 },        /* R */
1202
+            { 0, 1, 1, 0, 11 },        /* G */
1203
+            { 1, 1, 1, 0, 11 },        /* B */
1204
+        },
1205
+        .flags = PIX_FMT_PLANAR | PIX_FMT_RGB,
1206
+    },
1207
+    [PIX_FMT_GBRP12BE] = {
1208
+        .name = "gbrp12be",
1209
+        .nb_components = 3,
1210
+        .log2_chroma_w = 0,
1211
+        .log2_chroma_h = 0,
1212
+        .comp = {
1213
+            { 2, 1, 1, 0, 11 },        /* R */
1214
+            { 0, 1, 1, 0, 11 },        /* G */
1215
+            { 1, 1, 1, 0, 11 },        /* B */
1216
+        },
1217
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_RGB,
1218
+    },
1219
+    [PIX_FMT_GBRP14LE] = {
1220
+        .name = "gbrp14le",
1221
+        .nb_components = 3,
1222
+        .log2_chroma_w = 0,
1223
+        .log2_chroma_h = 0,
1224
+        .comp = {
1225
+            { 2, 1, 1, 0, 13 },        /* R */
1226
+            { 0, 1, 1, 0, 13 },        /* G */
1227
+            { 1, 1, 1, 0, 13 },        /* B */
1228
+        },
1229
+        .flags = PIX_FMT_PLANAR | PIX_FMT_RGB,
1230
+    },
1231
+    [PIX_FMT_GBRP14BE] = {
1232
+        .name = "gbrp14be",
1233
+        .nb_components = 3,
1234
+        .log2_chroma_w = 0,
1235
+        .log2_chroma_h = 0,
1236
+        .comp = {
1237
+            { 2, 1, 1, 0, 13 },        /* R */
1238
+            { 0, 1, 1, 0, 13 },        /* G */
1239
+            { 1, 1, 1, 0, 13 },        /* B */
1240
+        },
1241
+        .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_RGB,
1242
+    },
1195 1243
     [PIX_FMT_GBRP16LE] = {
1196 1244
         .name = "gbrp16le",
1197 1245
         .nb_components = 3,
... ...
@@ -185,6 +185,23 @@ enum PixelFormat {
185 185
     PIX_FMT_YUVA444P,  ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
186 186
     PIX_FMT_YUVA422P,  ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
187 187
 
188
+    PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
189
+    PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
190
+    PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
191
+    PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
192
+    PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
193
+    PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
194
+    PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
195
+    PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
196
+    PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
197
+    PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
198
+    PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
199
+    PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
200
+    PIX_FMT_GBRP12BE,    ///< planar GBR 4:4:4 36bpp, big endian
201
+    PIX_FMT_GBRP12LE,    ///< planar GBR 4:4:4 36bpp, little endian
202
+    PIX_FMT_GBRP14BE,    ///< planar GBR 4:4:4 42bpp, big endian
203
+    PIX_FMT_GBRP14LE,    ///< planar GBR 4:4:4 42bpp, little endian
204
+
188 205
     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
189 206
 };
190 207
 
... ...
@@ -220,6 +237,12 @@ enum PixelFormat {
220 220
 #define PIX_FMT_YUV420P10 PIX_FMT_NE(YUV420P10BE, YUV420P10LE)
221 221
 #define PIX_FMT_YUV422P10 PIX_FMT_NE(YUV422P10BE, YUV422P10LE)
222 222
 #define PIX_FMT_YUV444P10 PIX_FMT_NE(YUV444P10BE, YUV444P10LE)
223
+#define PIX_FMT_YUV420P12 PIX_FMT_NE(YUV420P12BE, YUV420P12LE)
224
+#define PIX_FMT_YUV422P12 PIX_FMT_NE(YUV422P12BE, YUV422P12LE)
225
+#define PIX_FMT_YUV444P12 PIX_FMT_NE(YUV444P12BE, YUV444P12LE)
226
+#define PIX_FMT_YUV420P14 PIX_FMT_NE(YUV420P14BE, YUV420P14LE)
227
+#define PIX_FMT_YUV422P14 PIX_FMT_NE(YUV422P14BE, YUV422P14LE)
228
+#define PIX_FMT_YUV444P14 PIX_FMT_NE(YUV444P14BE, YUV444P14LE)
223 229
 #define PIX_FMT_YUV420P16 PIX_FMT_NE(YUV420P16BE, YUV420P16LE)
224 230
 #define PIX_FMT_YUV422P16 PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
225 231
 #define PIX_FMT_YUV444P16 PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
... ...
@@ -228,6 +251,8 @@ enum PixelFormat {
228 228
 #define PIX_FMT_BGRA64 PIX_FMT_NE(BGRA64BE, BGRA64LE)
229 229
 #define PIX_FMT_GBRP9     PIX_FMT_NE(GBRP9BE ,    GBRP9LE)
230 230
 #define PIX_FMT_GBRP10    PIX_FMT_NE(GBRP10BE,    GBRP10LE)
231
+#define PIX_FMT_GBRP12    PIX_FMT_NE(GBRP12BE,    GBRP12LE)
232
+#define PIX_FMT_GBRP14    PIX_FMT_NE(GBRP14BE,    GBRP14LE)
231 233
 #define PIX_FMT_GBRP16    PIX_FMT_NE(GBRP16BE,    GBRP16LE)
232 234
 
233 235
 #endif /* AVUTIL_PIXFMT_H */