]> git.sesse.net Git - vlc/blobdiff - src/misc/fourcc.c
avcodec: map RL2 video
[vlc] / src / misc / fourcc.c
index ea599c5e698a5b4a0b9c485965c2e8d1e6144f87..39c0faea6fec8ff0f6cb56e1cc9bd18e2605fe23 100644 (file)
@@ -67,11 +67,16 @@ typedef struct
 /* */
 static const staticentry_t p_list_video[] = {
 
 /* */
 static const staticentry_t p_list_video[] = {
 
+    B(VLC_CODEC_MP1V, "MPEG-1 Video"),
+        A("mp1v"),
+        A("mpg1"),
+        A("BW10"),
+        E("XMPG", "Xing MPEG-1 Intra"),
+
     B(VLC_CODEC_MPGV, "MPEG-1/2 Video"),
     B(VLC_CODEC_MPGV, "MPEG-1/2 Video"),
+    B(VLC_CODEC_MP2V, "MPEG-2 Video"),
         A("mpgv"),
         A("mpgv"),
-        A("mp1v"),
         A("mpeg"),
         A("mpeg"),
-        A("mpg1"),
         A("mp2v"),
         A("MPEG"),
         A("mpg2"),
         A("mp2v"),
         A("MPEG"),
         A("mpg2"),
@@ -115,6 +120,7 @@ static const staticentry_t p_list_video[] = {
         E("xdve", "XDCAM EX 1080p25 50Mb/s CBR"),
         E("xdvf", "XDCAM EX 1080p30 50Mb/s CBR"),
 
         E("xdve", "XDCAM EX 1080p25 50Mb/s CBR"),
         E("xdvf", "XDCAM EX 1080p30 50Mb/s CBR"),
 
+        E("xd51", "XDCAM HD422 720p30 50Mb/s CBR"),
         E("xd54", "XDCAM HD422 720p24 50Mb/s CBR"),
         E("xd55", "XDCAM HD422 720p25 50Mb/s CBR"),
         E("xd59", "XDCAM HD422 720p60 50Mb/s CBR"),
         E("xd54", "XDCAM HD422 720p24 50Mb/s CBR"),
         E("xd55", "XDCAM HD422 720p25 50Mb/s CBR"),
         E("xd59", "XDCAM HD422 720p60 50Mb/s CBR"),
@@ -164,6 +170,7 @@ static const staticentry_t p_list_video[] = {
         A("EPHV"),
         A("DM4V"),
         A("SM4V"),
         A("EPHV"),
         A("DM4V"),
         A("SM4V"),
+        A("DYM4"),
         /* XVID flavours */
         E("xvid", "Xvid MPEG-4 Video"),
         E("XVID", "Xvid MPEG-4 Video"),
         /* XVID flavours */
         E("xvid", "Xvid MPEG-4 Video"),
         E("XVID", "Xvid MPEG-4 Video"),
@@ -188,8 +195,8 @@ static const staticentry_t p_list_video[] = {
         E("hdx4", "Jomigo HDX4 (MPEG-4 Video)"),
         E("SMP4", "Samsung SMP4 (MPEG-4 Video)"),
         E("smp4", "Samsung SMP4 (MPEG-4 Video)"),
         E("hdx4", "Jomigo HDX4 (MPEG-4 Video)"),
         E("SMP4", "Samsung SMP4 (MPEG-4 Video)"),
         E("smp4", "Samsung SMP4 (MPEG-4 Video)"),
-        E("fvfw", "FFmpeg MPEG-4"),
-        E("FVFW", "FFmpeg MPEG-4"),
+        E("fvfw", "libavcodec MPEG-4"),
+        E("FVFW", "libavcodec MPEG-4"),
         E("FFDS", "FFDShow MPEG-4"),
         E("VIDM", "vidm 4.01 codec"),
         E("DP02", "DynaPel MPEG-4 codec"),
         E("FFDS", "FFDShow MPEG-4"),
         E("VIDM", "vidm 4.01 codec"),
         E("DP02", "DynaPel MPEG-4 codec"),
@@ -258,12 +265,22 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_SVQ3, "SVQ-3 (Sorenson Video v3)"),
         A("SVQ3"),
 
     B(VLC_CODEC_SVQ3, "SVQ-3 (Sorenson Video v3)"),
         A("SVQ3"),
 
+    /* HEVC / H.265 */
+    B(VLC_CODEC_HEVC, "MPEG-H Part2/HEVC (H.265)"),
+        A("hevc"),
+        A("HEVC"),
+        A("h265"),
+        A("H265"),
+        A("x265"),
+        A("hev1"),
+
     /* h264 */
     B(VLC_CODEC_H264, "H264 - MPEG-4 AVC (part 10)"),
         A("H264"),
         A("h264"),
         A("x264"),
         A("X264"),
     /* h264 */
     B(VLC_CODEC_H264, "H264 - MPEG-4 AVC (part 10)"),
         A("H264"),
         A("h264"),
         A("x264"),
         A("X264"),
+        A("V264"),
         /* avc1: special case h264 */
         A("avc1"),
         A("AVC1"),
         /* avc1: special case h264 */
         A("avc1"),
         A("AVC1"),
@@ -285,6 +302,10 @@ static const staticentry_t p_list_video[] = {
         E("DAVC", "Dicas MPEGable H.264/MPEG-4 AVC"),
         E("davc", "Dicas MPEGable H.264/MPEG-4 AVC"),
         E("x3eV", "DreX H.264"),
         E("DAVC", "Dicas MPEGable H.264/MPEG-4 AVC"),
         E("davc", "Dicas MPEGable H.264/MPEG-4 AVC"),
         E("x3eV", "DreX H.264"),
+        E("GAVC", "GeoVision MPEG-4 AVC"),
+        E("Q264", "QNAP H.264/MPEG-4 AVC"),
+        A("UMSV"),
+        A("SMV2"),
 
     /* H263 and H263i */
     /* H263(+) is also known as Real Video 1.0 */
 
     /* H263 and H263i */
     /* H263(+) is also known as Real Video 1.0 */
@@ -298,6 +319,7 @@ static const staticentry_t p_list_video[] = {
         A("S263"),
         A("U263"),
         A("u263"),
         A("S263"),
         A("U263"),
         A("u263"),
+        A("lsvm"),
         E("D263", "DEC H263"),
         E("d263", "DEC H263"),
         E("L263", "LEAD H263"),
         E("D263", "DEC H263"),
         E("d263", "DEC H263"),
         E("L263", "LEAD H263"),
@@ -332,6 +354,7 @@ static const staticentry_t p_list_video[] = {
 
     B(VLC_CODEC_FLIC, "Flic Video"),
         A("FLIC"),
 
     B(VLC_CODEC_FLIC, "Flic Video"),
         A("FLIC"),
+        A("AFLC"),
 
     /* MJPEG */
     B(VLC_CODEC_MJPG, "Motion JPEG Video"),
 
     /* MJPEG */
     B(VLC_CODEC_MJPG, "Motion JPEG Video"),
@@ -344,12 +367,14 @@ static const staticentry_t p_list_video[] = {
         A("JPEG"),
         A("JFIF"),
         A("JPGL"),
         A("JPEG"),
         A("JFIF"),
         A("JPGL"),
+        A("LJPG"),
         A("AVDJ"),
         A("MMJP"),
         A("FLJP"),
         A("FMJP"),
         A("SJPG"),
         A("QIVG"),
         A("AVDJ"),
         A("MMJP"),
         A("FLJP"),
         A("FMJP"),
         A("SJPG"),
         A("QIVG"),
+        A("qIVG"),
         E("AVRn", "Avid Motion JPEG"),
         E("AVDJ", "Avid Motion JPEG"),
         E("ADJV", "Avid Motion JPEG"),
         E("AVRn", "Avid Motion JPEG"),
         E("AVDJ", "Avid Motion JPEG"),
         E("ADJV", "Avid Motion JPEG"),
@@ -403,6 +428,8 @@ static const staticentry_t p_list_video[] = {
         A("PDVC"),
         A("IPDV"),
         A("ipdv"),
         A("PDVC"),
         A("IPDV"),
         A("ipdv"),
+        A("pdvc"),
+        A("SL25"),
         E("dvcp", "DV Video PAL"),
         E("dvc ", "DV Video NTSC" ),
         E("dvp ", "DV Video Pro"),
         E("dvcp", "DV Video PAL"),
         E("dvc ", "DV Video NTSC" ),
         E("dvp ", "DV Video Pro"),
@@ -432,6 +459,7 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_WMV2, "Windows Media Video 8"),
         A("WMV2"),
         A("wmv2"),
     B(VLC_CODEC_WMV2, "Windows Media Video 8"),
         A("WMV2"),
         A("wmv2"),
+        A("GXVE"),
 
     B(VLC_CODEC_WMV3, "Windows Media Video 9"),
         A("WMV3"),
 
     B(VLC_CODEC_WMV3, "Windows Media Video 9"),
         A("WMV3"),
@@ -513,13 +541,21 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_VP6A, "On2's VP6 A Video"),
         A("VP6A"),
 
     B(VLC_CODEC_VP6A, "On2's VP6 A Video"),
         A("VP6A"),
 
+    B(VLC_CODEC_VP7, "Google/On2's VP7 Video"),
+        A("VP70"),
+        A("VP71"),
+
     B(VLC_CODEC_VP8, "Google/On2's VP8 Video"),
         A("VP80"),
 
     B(VLC_CODEC_VP8, "Google/On2's VP8 Video"),
         A("VP80"),
 
+    B(VLC_CODEC_VP9, "Google/On2's VP9 Video"),
+        A("VP90"),
+
 
     /* Xiph.org theora */
     B(VLC_CODEC_THEORA, "Xiph.org's Theora Video"),
         A("theo"),
 
     /* Xiph.org theora */
     B(VLC_CODEC_THEORA, "Xiph.org's Theora Video"),
         A("theo"),
+        A("THEO"),
         A("Thra"),
 
     /* Xiph.org tarkin */
         A("Thra"),
 
     /* Xiph.org tarkin */
@@ -532,8 +568,8 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_ASV2, "Asus V2 Video"),
         A("ASV2"),
 
     B(VLC_CODEC_ASV2, "Asus V2 Video"),
         A("ASV2"),
 
-    /* FFMPEG Video 1 (lossless codec) */
-    B(VLC_CODEC_FFV1, "FFMpeg Video 1"),
+    /* FF video codec 1 (lossless codec) */
+    B(VLC_CODEC_FFV1, "FF video codec 1"),
         A("FFV1"),
 
     /* ATI VCR1 */
         A("FFV1"),
 
     /* ATI VCR1 */
@@ -604,11 +640,6 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_TRUEMOTION2, "Duck TrueMotion v2.0 Video"),
         A("TM20"),
 
     B(VLC_CODEC_TRUEMOTION2, "Duck TrueMotion v2.0 Video"),
         A("TM20"),
 
-    /* FFMPEG's SNOW wavelet codec */
-    B(VLC_CODEC_SNOW, "FFMpeg SNOW wavelet Video"),
-        A("SNOW"),
-        A("snow"),
-
     B(VLC_CODEC_QTRLE, "Apple QuickTime RLE Video"),
         A("rle "),
 
     B(VLC_CODEC_QTRLE, "Apple QuickTime RLE Video"),
         A("rle "),
 
@@ -633,9 +664,11 @@ static const staticentry_t p_list_video[] = {
 
     B(VLC_CODEC_WNV1, "Winnov WNV1 Video"),
         A("WNV1"),
 
     B(VLC_CODEC_WNV1, "Winnov WNV1 Video"),
         A("WNV1"),
+        A("YUV8"),
 
     B(VLC_CODEC_AASC, "Autodesc RLE Video"),
         A("AASC"),
 
     B(VLC_CODEC_AASC, "Autodesc RLE Video"),
         A("AASC"),
+        E("AAS4", "Autodesc RLE Video 24bit"),
 
     B(VLC_CODEC_INDEO2, "Indeo Video v2"),
         A("IV20"),
 
     B(VLC_CODEC_INDEO2, "Indeo Video v2"),
         A("IV20"),
@@ -667,6 +700,12 @@ static const staticentry_t p_list_video[] = {
 
     B(VLC_CODEC_AMV, "AMV"),
 
 
     B(VLC_CODEC_AMV, "AMV"),
 
+    B(VLC_CODEC_BINKVIDEO, "Bink Video"),
+
+    B(VLC_CODEC_BINKAUDIO_DCT, "Bink Audio (DCT)"),
+
+    B(VLC_CODEC_BINKAUDIO_RDFT, "Bink Audio (RDFT)"),
+
     /* */
     B(VLC_CODEC_DNXHD, "DNxHD"),
         A("AVdn"),
     /* */
     B(VLC_CODEC_DNXHD, "DNxHD"),
         A("AVdn"),
@@ -689,12 +728,28 @@ static const staticentry_t p_list_video[] = {
         A("IV50"),
         A("iv50"),
 
         A("IV50"),
         A("iv50"),
 
-    B(VLC_CODEC_PRORES, "Apple ProRes 422"),
+    B(VLC_CODEC_PRORES, "Apple ProRes"),
         E("apcn", "Apple ProRes 422 Standard"),
         E("apch", "Apple ProRes 422 HQ"),
         E("apcs", "Apple ProRes 422 LT"),
         E("apco", "Apple ProRes 422 Proxy"),
         E("ap4c", "Apple ProRes 4444"),
         E("apcn", "Apple ProRes 422 Standard"),
         E("apch", "Apple ProRes 422 HQ"),
         E("apcs", "Apple ProRes 422 LT"),
         E("apco", "Apple ProRes 422 Proxy"),
         E("ap4c", "Apple ProRes 4444"),
+        E("ap4h", "Apple ProRes 4444"),
+
+    B(VLC_CODEC_ICOD, "Apple Intermediate Codec"),
+        A("icod"),
+
+    B(VLC_CODEC_G2M2, "GoTo Meeting Codec 2"),
+        A("G2M2"),
+
+    B(VLC_CODEC_G2M3, "GoTo Meeting Codec 3"),
+        A("G2M3"),
+
+    B(VLC_CODEC_G2M4, "GoTo Meeting Codec 4"),
+        A("G2M4"),
+
+    B(VLC_CODEC_FIC, "Mirillis FIC video"),
+        A("FICV"),
 
     /* */
     B(VLC_CODEC_YV12, "Planar 4:2:0 YVU"),
 
     /* */
     B(VLC_CODEC_YV12, "Planar 4:2:0 YVU"),
@@ -706,11 +761,13 @@ static const staticentry_t p_list_video[] = {
         A("I410"),
     B(VLC_CODEC_I411, "Planar 4:1:1 YUV"),
         A("I411"),
         A("I410"),
     B(VLC_CODEC_I411, "Planar 4:1:1 YUV"),
         A("I411"),
+        A("Y41B"),
     B(VLC_CODEC_I420, "Planar 4:2:0 YUV"),
         A("I420"),
         A("IYUV"),
     B(VLC_CODEC_I422, "Planar 4:2:2 YUV"),
         A("I422"),
     B(VLC_CODEC_I420, "Planar 4:2:0 YUV"),
         A("I420"),
         A("IYUV"),
     B(VLC_CODEC_I422, "Planar 4:2:2 YUV"),
         A("I422"),
+        A("Y42B"),
     B(VLC_CODEC_I440, "Planar 4:4:0 YUV"),
         A("I440"),
     B(VLC_CODEC_I444, "Planar 4:4:4 YUV"),
     B(VLC_CODEC_I440, "Planar 4:4:0 YUV"),
         A("I440"),
     B(VLC_CODEC_I444, "Planar 4:4:4 YUV"),
@@ -730,6 +787,10 @@ static const staticentry_t p_list_video[] = {
 
     B(VLC_CODEC_YUVA, "Planar YUV 4:4:4 Y:U:V:A"),
         A("YUVA"),
 
     B(VLC_CODEC_YUVA, "Planar YUV 4:4:4 Y:U:V:A"),
         A("YUVA"),
+    B(VLC_CODEC_YUV420A, "Planar YUV 4:2:0 Y:U:V:A"),
+        A("I40A"),
+    B(VLC_CODEC_YUV422A, "Planar YUV 4:2:2 Y:U:V:A"),
+        A("I42A"),
 
     B(VLC_CODEC_RGBP, "Palettized RGB with palette element R:G:B"),
         A("RGBP"),
 
     B(VLC_CODEC_RGBP, "Palettized RGB with palette element R:G:B"),
         A("RGBP"),
@@ -738,12 +799,8 @@ static const staticentry_t p_list_video[] = {
         A("RGB2"),
     B(VLC_CODEC_RGB12, "12 bits RGB"),
         A("RV12"),
         A("RGB2"),
     B(VLC_CODEC_RGB12, "12 bits RGB"),
         A("RV12"),
-    B(VLC_CODEC_RGBA16, "16 bits RGBA"),
-        A("AV16"),
     B(VLC_CODEC_RGB15, "15 bits RGB"),
         A("RV15"),
     B(VLC_CODEC_RGB15, "15 bits RGB"),
         A("RV15"),
-    B(VLC_CODEC_RGBT, "16 bits RGBT"),
-        A("RGBT"),
     B(VLC_CODEC_RGB16, "16 bits RGB"),
         A("RV16"),
     B(VLC_CODEC_RGB24, "24 bits RGB"),
     B(VLC_CODEC_RGB16, "16 bits RGB"),
         A("RV16"),
     B(VLC_CODEC_RGB24, "24 bits RGB"),
@@ -752,7 +809,11 @@ static const staticentry_t p_list_video[] = {
         A("RV32"),
     B(VLC_CODEC_RGBA, "32 bits RGBA"),
         A("RGBA"),
         A("RV32"),
     B(VLC_CODEC_RGBA, "32 bits RGBA"),
         A("RGBA"),
+    B(VLC_CODEC_RGBA, "32 bits ARGB"),
+        A("ARGB"),
         A("AV32"),
         A("AV32"),
+    B(VLC_CODEC_BGRA, "32 bits BGRA"),
+        A("BGRA"),
 
     B(VLC_CODEC_GREY, "8 bits greyscale"),
         A("GREY"),
 
     B(VLC_CODEC_GREY, "8 bits greyscale"),
         A("GREY"),
@@ -797,6 +858,10 @@ static const staticentry_t p_list_video[] = {
         A("NV16"),
     B(VLC_CODEC_NV61, "Biplanar 4:2:2 Y/VU"),
         A("NV61"),
         A("NV16"),
     B(VLC_CODEC_NV61, "Biplanar 4:2:2 Y/VU"),
         A("NV61"),
+    B(VLC_CODEC_NV24, "Biplanar 4:4:4 Y/UV"),
+        A("NV24"),
+    B(VLC_CODEC_NV42, "Biplanar 4:4:4 Y/VU"),
+        A("NV42"),
 
     B(VLC_CODEC_I420_9L, "Planar 4:2:0 YUV 9-bit LE"),
         A("I09L"),
 
     B(VLC_CODEC_I420_9L, "Planar 4:2:0 YUV 9-bit LE"),
         A("I09L"),
@@ -824,6 +889,16 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_I444_10B, "Planar 4:4:4 YUV 10-bit BE"),
         A("I4AB"),
 
     B(VLC_CODEC_I444_10B, "Planar 4:4:4 YUV 10-bit BE"),
         A("I4AB"),
 
+    B(VLC_CODEC_I444_16L, "Planar 4:4:4 YUV 16-bit LE"),
+        A("I4FL"),
+    B(VLC_CODEC_I444_16B, "Planar 4:4:4 YUV 16-bit BE"),
+        A("I4FB"),
+
+
+    /* XYZ color space */
+    B(VLC_CODEC_XYZ12, "Packed XYZ 12-bit BE"),
+        A("XY12"),
+
     /* Videogames Codecs */
 
     /* Interplay MVE */
     /* Videogames Codecs */
 
     /* Interplay MVE */
@@ -897,12 +972,17 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_SGI, "SGI Image"),
         A("sgi "),
 
     B(VLC_CODEC_SGI, "SGI Image"),
         A("sgi "),
 
+    B(VLC_CODEC_SVG, "SVG Scalable Vector Graphics Image"),
+        A("svg "),
+
     B(VLC_CODEC_PNM, "Portable Anymap Image"),
         A("pnm "),
 
     B(VLC_CODEC_PCX, "Personal Computer Exchange Image"),
         A("pcx "),
 
     B(VLC_CODEC_PNM, "Portable Anymap Image"),
         A("pnm "),
 
     B(VLC_CODEC_PCX, "Personal Computer Exchange Image"),
         A("pcx "),
 
+    B(VLC_CODEC_XWD, "X Window system raster image"),
+
     B(VLC_CODEC_JPEG2000, "JPEG 2000 Image"),
         A("JP2K"),
         A("mjp2"),
     B(VLC_CODEC_JPEG2000, "JPEG 2000 Image"),
         A("JP2K"),
         A("mjp2"),
@@ -953,6 +1033,54 @@ static const staticentry_t p_list_video[] = {
     B(VLC_CODEC_MTS2, "Microsoft Expression Encoder Screen"),
         A("MTS2"),
 
     B(VLC_CODEC_MTS2, "Microsoft Expression Encoder Screen"),
         A("MTS2"),
 
+    B(VLC_CODEC_XAN_WC4, "Wing Commander IV Xan video"),
+        A("Xxan"),
+
+    B(VLC_CODEC_LCL_MSZH, "Loss-Less Codec Library AVImszh"),
+        A("MSZH"),
+
+    B(VLC_CODEC_LCL_ZLIB, "Loss-Less Codec Library AVIzlib"),
+        A("ZLIB"),
+
+    B(VLC_CODEC_THP, "GameCube THP video"),
+
+    B(VLC_CODEC_TXD, "RenderWare TXD"),
+
+    B(VLC_CODEC_ESCAPE124, "Escape 124 video"),
+
+    B(VLC_CODEC_KGV1, "Kega Game Video (KGV1)"),
+        A("KGV1"),
+
+    B(VLC_CODEC_CLLC, "Canopus Lossless"),
+        A("CLLC"),
+
+    B(VLC_CODEC_AURA, "Auravision Aura"),
+        A("AURA"),
+
+    B(VLC_CODEC_TMV, "8088flex TMV"),
+
+    B(VLC_CODEC_XAN_WC3, "Wing Commander III video"),
+
+    B(VLC_CODEC_WS_VQA, "Westwood Studios VQA"),
+
+    B(VLC_CODEC_MMVIDEO, "American Laser Games MM Video"),
+
+    B(VLC_CODEC_AVS, "Creature Shock AVS"),
+
+    B(VLC_CODEC_DSICINVIDEO, "Delphine CIN video"),
+
+    B(VLC_CODEC_TIERTEXSEQVIDEO, "Tiertex Limited SEQ video"),
+
+    B(VLC_CODEC_DXA, "Feeble Files/ScummVM DXA"),
+
+    B(VLC_CODEC_C93, "Interplay C93"),
+
+    B(VLC_CODEC_BETHSOFTVID, "Bethesda VID"),
+
+    B(VLC_CODEC_VB, "Beam Software VB"),
+
+    B(VLC_CODEC_RL2, "RL2 video"),
+
     B(0, "")
 };
 static const staticentry_t p_list_audio[] = {
     B(0, "")
 };
 static const staticentry_t p_list_audio[] = {
@@ -1019,19 +1147,22 @@ static const staticentry_t p_list_audio[] = {
     B(VLC_CODEC_SIPR, "RealAudio Sipr"),
         A("sipr"),
 
     B(VLC_CODEC_SIPR, "RealAudio Sipr"),
         A("sipr"),
 
-    /* MPEG Audio layer 1/2/3 */
-    B(VLC_CODEC_MPGA, "MPEG Audio layer 1/2/3"),
+    /* MPEG Audio layer 1/2 */
+    B(VLC_CODEC_MPGA, "MPEG Audio layer 1/2"),
         A("mpga"),
         A("mp2a"),
         A(".mp1"),
         A(".mp2"),
         A("mpga"),
         A("mp2a"),
         A(".mp1"),
         A(".mp2"),
-        A("mp3 "),
-        A(".mp3"),
-        A("MP3 "),
         A("LAME"),
         A("ms\x00\x50"),
         A("ms\x00\x55"),
 
         A("LAME"),
         A("ms\x00\x50"),
         A("ms\x00\x55"),
 
+    /* MPEG Audio layer 3 */
+    B(VLC_CODEC_MP3, "MPEG Audio layer 3"),
+        A("mp3 "),
+        A(".mp3"),
+        A("MP3 "),
+
     /* A52 Audio (aka AC3) */
     B(VLC_CODEC_A52, "A52 Audio (aka AC3)"),
         A("a52 "),
     /* A52 Audio (aka AC3) */
     B(VLC_CODEC_A52, "A52 Audio (aka AC3)"),
         A("a52 "),
@@ -1058,6 +1189,8 @@ static const staticentry_t p_list_audio[] = {
     B(VLC_CODEC_MP4A, "MPEG AAC Audio"),
         A("mp4a"),
         A("aac "),
     B(VLC_CODEC_MP4A, "MPEG AAC Audio"),
         A("mp4a"),
         A("aac "),
+        A("AACL"),
+        A("AACH"),
 
     /* ALS audio */
     B(VLC_CODEC_ALS, "MPEG-4 Audio Lossless (ALS)"),
 
     /* ALS audio */
     B(VLC_CODEC_ALS, "MPEG-4 Audio Lossless (ALS)"),
@@ -1127,6 +1260,14 @@ static const staticentry_t p_list_audio[] = {
     B(VLC_CODEC_ADPCM_YAMAHA, "Yamaha ADPCM Audio" ),
         A("ms\x00\x20"),
 
     B(VLC_CODEC_ADPCM_YAMAHA, "Yamaha ADPCM Audio" ),
         A("ms\x00\x20"),
 
+    B(VLC_CODEC_ADPCM_DK3, "Duck DK3 ADPCM"),
+        A("ms\x00\x62"),
+
+    B(VLC_CODEC_ADPCM_DK4, "Duck DK4 ADPCM"),
+        A("ms\x00\x61"),
+
+    B(VLC_CODEC_ADPCM_THP, "GameCube THP ADPCM"),
+
     /* AMR */
     B(VLC_CODEC_AMR_NB, "AMR narrow band"),
         A("samr"),
     /* AMR */
     B(VLC_CODEC_AMR_NB, "AMR narrow band"),
         A("samr"),
@@ -1176,8 +1317,8 @@ static const staticentry_t p_list_audio[] = {
         A("atrc"),
         A("\x70\x02\x00\x00"),
 
         A("atrc"),
         A("\x70\x02\x00\x00"),
 
-    B(VLC_CODEC_SONIC, "Sonic"),
-        A("SONC"),
+    B(VLC_CODEC_ATRAC3P, "atrac 3+"),
+        A("atrp"),
 
     B(VLC_CODEC_IMC, "IMC" ),
         A("\x01\x04\x00\x00"),
 
     B(VLC_CODEC_IMC, "IMC" ),
         A("\x01\x04\x00\x00"),
@@ -1213,6 +1354,7 @@ static const staticentry_t p_list_audio[] = {
 
     B(VLC_CODEC_OPUS, "Opus Audio"),
         A("Opus"),
 
     B(VLC_CODEC_OPUS, "Opus Audio"),
         A("Opus"),
+        A("opus"),
 
     B(VLC_CODEC_302M, "302M Audio"),
         A("302m"),
 
     B(VLC_CODEC_302M, "302M Audio"),
         A("302m"),
@@ -1236,6 +1378,10 @@ static const staticentry_t p_list_audio[] = {
     B(VLC_CODEC_RALF, "RealAudio Lossless"),
         A("LSD:"),
 
     B(VLC_CODEC_RALF, "RealAudio Lossless"),
         A("LSD:"),
 
+    /* G.723.1 */
+    B(VLC_CODEC_G723_1, "G.723.1 Audio"),
+        A("g72\x31"),
+
     /* PCM */
     B(VLC_CODEC_S8, "PCM S8"),
         A("s8  "),
     /* PCM */
     B(VLC_CODEC_S8, "PCM S8"),
         A("s8  "),
@@ -1271,6 +1417,10 @@ static const staticentry_t p_list_audio[] = {
     B(VLC_CODEC_U24B, "PCM U24 BE"),
         A("u24b"),
 
     B(VLC_CODEC_U24B, "PCM U24 BE"),
         A("u24b"),
 
+    B(VLC_CODEC_S24L32, "PCM S24 in 32 LE"),
+
+    B(VLC_CODEC_S24B32, "PCM S24 in 32 BE"),
+
     B(VLC_CODEC_S32L, "PCM S32 LE"),
         A("s32l"),
         A("23ni"),  /* Quicktime */
     B(VLC_CODEC_S32L, "PCM S32 LE"),
         A("s32l"),
         A("23ni"),  /* Quicktime */
@@ -1297,9 +1447,6 @@ static const staticentry_t p_list_audio[] = {
     B(VLC_CODEC_S24DAUD, "PCM DAUD"),
         A("daud"),
 
     B(VLC_CODEC_S24DAUD, "PCM DAUD"),
         A("daud"),
 
-    B(VLC_CODEC_FI32, "32 bits fixed float"),
-        A("fi32"),
-
     B(VLC_CODEC_F32L, "32 bits float LE"),
         A("f32l"),
         A("fl32"),
     B(VLC_CODEC_F32L, "32 bits float LE"),
         A("f32l"),
         A("fl32"),
@@ -1327,6 +1474,10 @@ static const staticentry_t p_list_audio[] = {
     B(VLC_CODEC_INDEO_AUDIO, "Indeo Audio Coder"),
         A("ms\x04\x02"),
 
     B(VLC_CODEC_INDEO_AUDIO, "Indeo Audio Coder"),
         A("ms\x04\x02"),
 
+    B(VLC_CODEC_TAK, "TAK (Tom's lossless Audio Kompressor)"),
+
+    B(VLC_CODEC_SMACKAUDIO, "Smacker audio"),
+
     B(0, "")
 };
 static const staticentry_t p_list_spu[] = {
     B(0, "")
 };
 static const staticentry_t p_list_spu[] = {
@@ -1379,6 +1530,9 @@ static const staticentry_t p_list_spu[] = {
     B(VLC_CODEC_EBU_STL, "EBU STL subtitles"),
         A("STL "),
 
     B(VLC_CODEC_EBU_STL, "EBU STL subtitles"),
         A("STL "),
 
+    B(VLC_CODEC_SCTE_27, "SCTE-27 subtitles"),
+        A("SC27"),
+
     B(0, "")
 };
 
     B(0, "")
 };
 
@@ -1419,7 +1573,7 @@ static entry_t Lookup( const staticentry_t p_list[], vlc_fourcc_t i_fourcc )
 
             memcpy( e.p_class, p_class, 4 );
             memcpy( e.p_fourcc, p->p_fourcc, 4 );
 
             memcpy( e.p_class, p_class, 4 );
             memcpy( e.p_fourcc, p->p_fourcc, 4 );
-            e.psz_description = p->psz_description ?
+            e.psz_description = p->psz_description[0] != '\0' ?
                                 p->psz_description : psz_description;
             break;
         }
                                 p->psz_description : psz_description;
             break;
         }
@@ -1486,8 +1640,7 @@ vlc_fourcc_t vlc_fourcc_GetCodecAudio( vlc_fourcc_t i_fourcc, int i_bits )
             return 0;
         }
     }
             return 0;
         }
     }
-    else if( i_fourcc == VLC_FOURCC( 'a', 'r', 'a', 'w' ) ||
-             i_fourcc == VLC_FOURCC( 'p', 'c', 'm', ' ' ) )
+    else if( i_fourcc == VLC_FOURCC( 'a', 'r', 'a', 'w' ) )
     {
         switch( i_bytes )
         {
     {
         switch( i_bytes )
         {
@@ -1558,12 +1711,18 @@ const char *vlc_fourcc_GetDescription( int i_cat, vlc_fourcc_t i_fourcc )
 #define VLC_CODEC_YUV_PLANAR_420 \
     VLC_CODEC_I420, VLC_CODEC_YV12, VLC_CODEC_J420
 
 #define VLC_CODEC_YUV_PLANAR_420 \
     VLC_CODEC_I420, VLC_CODEC_YV12, VLC_CODEC_J420
 
+#define VLC_CODEC_YUV_SEMIPLANAR_420 \
+    VLC_CODEC_NV12, VLC_CODEC_NV21
+
 #define VLC_CODEC_YUV_PLANAR_420_16 \
     VLC_CODEC_I420_10L, VLC_CODEC_I420_10B, VLC_CODEC_I420_9L, VLC_CODEC_I420_9B
 
 #define VLC_CODEC_YUV_PLANAR_422 \
     VLC_CODEC_I422, VLC_CODEC_J422
 
 #define VLC_CODEC_YUV_PLANAR_420_16 \
     VLC_CODEC_I420_10L, VLC_CODEC_I420_10B, VLC_CODEC_I420_9L, VLC_CODEC_I420_9B
 
 #define VLC_CODEC_YUV_PLANAR_422 \
     VLC_CODEC_I422, VLC_CODEC_J422
 
+#define VLC_CODEC_YUV_SEMIPLANAR_422 \
+    VLC_CODEC_NV16, VLC_CODEC_NV61
+
 #define VLC_CODEC_YUV_PLANAR_422_16 \
     VLC_CODEC_I422_10L, VLC_CODEC_I422_10B, VLC_CODEC_I422_9L, VLC_CODEC_I422_9B
 
 #define VLC_CODEC_YUV_PLANAR_422_16 \
     VLC_CODEC_I422_10L, VLC_CODEC_I422_10B, VLC_CODEC_I422_9L, VLC_CODEC_I422_9B
 
@@ -1573,8 +1732,12 @@ const char *vlc_fourcc_GetDescription( int i_cat, vlc_fourcc_t i_fourcc )
 #define VLC_CODEC_YUV_PLANAR_444 \
     VLC_CODEC_I444, VLC_CODEC_J444
 
 #define VLC_CODEC_YUV_PLANAR_444 \
     VLC_CODEC_I444, VLC_CODEC_J444
 
+#define VLC_CODEC_YUV_SEMIPLANAR_444 \
+    VLC_CODEC_NV24, VLC_CODEC_NV42
+
 #define VLC_CODEC_YUV_PLANAR_444_16 \
 #define VLC_CODEC_YUV_PLANAR_444_16 \
-    VLC_CODEC_I444_10L, VLC_CODEC_I444_10B, VLC_CODEC_I444_9L, VLC_CODEC_I444_9B
+    VLC_CODEC_I444_10L, VLC_CODEC_I444_10B, VLC_CODEC_I444_9L, VLC_CODEC_I444_9B, \
+    VLC_CODEC_I444_16L, VLC_CODEC_I444_16B
 
 #define VLC_CODEC_YUV_PACKED \
     VLC_CODEC_YUYV, VLC_CODEC_YVYU, \
 
 #define VLC_CODEC_YUV_PACKED \
     VLC_CODEC_YUYV, VLC_CODEC_YVYU, \
@@ -1666,6 +1829,13 @@ static const vlc_fourcc_t p_I444_10L_fallback[] = {
 static const vlc_fourcc_t p_I444_10B_fallback[] = {
     VLC_CODEC_I444_10B, VLC_CODEC_I444_10L, VLC_CODEC_FALLBACK_444_16, 0
 };
 static const vlc_fourcc_t p_I444_10B_fallback[] = {
     VLC_CODEC_I444_10B, VLC_CODEC_I444_10L, VLC_CODEC_FALLBACK_444_16, 0
 };
+static const vlc_fourcc_t p_I444_16L_fallback[] = {
+    VLC_CODEC_I444_16L, VLC_CODEC_I444_16B, VLC_CODEC_FALLBACK_444_16, 0
+};
+static const vlc_fourcc_t p_I444_16B_fallback[] = {
+    VLC_CODEC_I444_16B, VLC_CODEC_I444_16L, VLC_CODEC_FALLBACK_444_16, 0
+};
+
 
 static const vlc_fourcc_t p_I440_fallback[] = {
     VLC_CODEC_I440,
 
 static const vlc_fourcc_t p_I440_fallback[] = {
     VLC_CODEC_I440,
@@ -1730,6 +1900,8 @@ static const vlc_fourcc_t *pp_YUV_fallback[] = {
     p_I444_9B_fallback,
     p_I444_10L_fallback,
     p_I444_10B_fallback,
     p_I444_9B_fallback,
     p_I444_10L_fallback,
     p_I444_10B_fallback,
+    p_I444_16L_fallback,
+    p_I444_16B_fallback,
     p_I440_fallback,
     p_YUYV_fallback,
     p_YVYU_fallback,
     p_I440_fallback,
     p_YUYV_fallback,
     p_YVYU_fallback,
@@ -1742,14 +1914,20 @@ static const vlc_fourcc_t *pp_YUV_fallback[] = {
 
 static const vlc_fourcc_t p_list_YUV[] = {
     VLC_CODEC_YUV_PLANAR_420,
 
 static const vlc_fourcc_t p_list_YUV[] = {
     VLC_CODEC_YUV_PLANAR_420,
+    VLC_CODEC_YUV_SEMIPLANAR_420,
     VLC_CODEC_YUV_PLANAR_422,
     VLC_CODEC_YUV_PLANAR_422,
+    VLC_CODEC_YUV_SEMIPLANAR_422,
     VLC_CODEC_YUV_PLANAR_440,
     VLC_CODEC_YUV_PLANAR_444,
     VLC_CODEC_YUV_PLANAR_440,
     VLC_CODEC_YUV_PLANAR_444,
+    VLC_CODEC_YUV_SEMIPLANAR_444,
     VLC_CODEC_YUV_PACKED,
     VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211,
     VLC_CODEC_YUV_PLANAR_420_16,
     VLC_CODEC_YUV_PLANAR_422_16,
     VLC_CODEC_YUV_PLANAR_444_16,
     VLC_CODEC_YUV_PACKED,
     VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211,
     VLC_CODEC_YUV_PLANAR_420_16,
     VLC_CODEC_YUV_PLANAR_422_16,
     VLC_CODEC_YUV_PLANAR_444_16,
+    VLC_CODEC_VDPAU_VIDEO_420,
+    VLC_CODEC_VDPAU_VIDEO_422,
+    VLC_CODEC_VDPAU_VIDEO_444,
     0,
 };
 
     0,
 };
 
@@ -1881,48 +2059,69 @@ bool vlc_fourcc_IsYUV(vlc_fourcc_t fcc)
       .pixel_size = size, \
       .pixel_bits = bits }
 
       .pixel_size = size, \
       .pixel_bits = bits }
 
+/* Zero planes for hardware picture handles. Cannot be manipulated directly. */
+#define FAKE_FMT() \
+    { .plane_count = 0, \
+      .p = { {.w = {1,1}, .h = {1,1}} }, \
+      .pixel_size = 0, \
+      .pixel_bits = 0 }
+
 static const struct
 {
 static const struct
 {
-    vlc_fourcc_t             p_fourcc[6];
+    vlc_fourcc_t             p_fourcc[4];
     vlc_chroma_description_t description;
 } p_list_chroma_description[] = {
     vlc_chroma_description_t description;
 } p_list_chroma_description[] = {
-    { { VLC_CODEC_I411, 0 },                   PLANAR_8(3, 4, 1) },
-    { { VLC_CODEC_YUV_PLANAR_410, 0 },         PLANAR_8(3, 4, 4) },
-    { { VLC_CODEC_YUV_PLANAR_420, 0 },         PLANAR_8(3, 2, 2) },
-    { { VLC_CODEC_NV12, VLC_CODEC_NV21, 0 },   PLANAR_8(2, 1, 2) },
-    { { VLC_CODEC_YUV_PLANAR_422, 0 },         PLANAR_8(3, 2, 1) },
-    { { VLC_CODEC_YUV_PLANAR_440, 0 },         PLANAR_8(3, 1, 2) },
-    { { VLC_CODEC_YUV_PLANAR_444, 0 },         PLANAR_8(3, 1, 1) },
-    { { VLC_CODEC_YUVA, 0 },                   PLANAR_8(4, 1, 1) },
+    { { VLC_CODEC_I411 },                      PLANAR_8(3, 4, 1) },
+    { { VLC_CODEC_YUV_PLANAR_410 },            PLANAR_8(3, 4, 4) },
+    { { VLC_CODEC_YUV_PLANAR_420 },            PLANAR_8(3, 2, 2) },
+    { { VLC_CODEC_NV12, VLC_CODEC_NV21 },      PLANAR_8(2, 1, 2) },
+    { { VLC_CODEC_YUV_PLANAR_422 },            PLANAR_8(3, 2, 1) },
+    { { VLC_CODEC_NV16, VLC_CODEC_NV61 },      PLANAR_8(2, 1, 1) },
+    { { VLC_CODEC_YUV_PLANAR_440 },            PLANAR_8(3, 1, 2) },
+    { { VLC_CODEC_YUV_PLANAR_444 },            PLANAR_8(3, 1, 1) },
+    { { VLC_CODEC_YUVA },                      PLANAR_8(4, 1, 1) },
+    { { VLC_CODEC_YUV420A },                   PLANAR_8(4, 2, 2) },
+    { { VLC_CODEC_YUV422A },                   PLANAR_8(4, 2, 1) },
+
+    { { VLC_CODEC_GBR_PLANAR },                PLANAR_8(3, 1, 1) },
 
     { { VLC_CODEC_I420_10L,
 
     { { VLC_CODEC_I420_10L,
-        VLC_CODEC_I420_10B, 0 },               PLANAR_16(3, 2, 2, 10) },
+        VLC_CODEC_I420_10B },                  PLANAR_16(3, 2, 2, 10) },
     { { VLC_CODEC_I420_9L,
     { { VLC_CODEC_I420_9L,
-        VLC_CODEC_I420_9B, 0 },                PLANAR_16(3, 2, 2,  9) },
+        VLC_CODEC_I420_9B },                   PLANAR_16(3, 2, 2,  9) },
     { { VLC_CODEC_I422_10L,
     { { VLC_CODEC_I422_10L,
-        VLC_CODEC_I422_10B, 0 },               PLANAR_16(3, 2, 1, 10) },
+        VLC_CODEC_I422_10B },                  PLANAR_16(3, 2, 1, 10) },
     { { VLC_CODEC_I422_9L,
     { { VLC_CODEC_I422_9L,
-        VLC_CODEC_I422_9B, 0 },                PLANAR_16(3, 2, 1,  9) },
+        VLC_CODEC_I422_9B },                   PLANAR_16(3, 2, 1,  9) },
     { { VLC_CODEC_I444_10L,
     { { VLC_CODEC_I444_10L,
-        VLC_CODEC_I444_10B, 0 },               PLANAR_16(3, 1, 1, 10) },
+        VLC_CODEC_I444_10B },                  PLANAR_16(3, 1, 1, 10) },
     { { VLC_CODEC_I444_9L,
     { { VLC_CODEC_I444_9L,
-        VLC_CODEC_I444_9B, 0 },                PLANAR_16(3, 1, 1,  9) },
+        VLC_CODEC_I444_9B },                   PLANAR_16(3, 1, 1,  9) },
+    { { VLC_CODEC_I444_16L,
+        VLC_CODEC_I444_16B },                  PLANAR_16(3, 1, 1, 16) },
 
 
-    { { VLC_CODEC_YUV_PACKED, 0 },             PACKED_FMT(2, 16) },
+    { { VLC_CODEC_YUV_PACKED },                PACKED_FMT(2, 16) },
     { { VLC_CODEC_RGB8, VLC_CODEC_GREY,
     { { VLC_CODEC_RGB8, VLC_CODEC_GREY,
-        VLC_CODEC_YUVP, VLC_CODEC_RGBP, 0 },   PACKED_FMT(1, 8) },
+        VLC_CODEC_YUVP, VLC_CODEC_RGBP },      PACKED_FMT(1, 8) },
 
     { { VLC_CODEC_RGB15, 0 },                  PACKED_FMT(2, 15) },
     { { VLC_CODEC_RGB12, 0 },                  PACKED_FMT(2, 12) },
 
     { { VLC_CODEC_RGB15, 0 },                  PACKED_FMT(2, 15) },
     { { VLC_CODEC_RGB12, 0 },                  PACKED_FMT(2, 12) },
-    { { VLC_CODEC_RGB16, VLC_CODEC_RGBT,
-        VLC_CODEC_RGBA16, 0 },                 PACKED_FMT(2, 16) },
+    { { VLC_CODEC_RGB16, 0 },                  PACKED_FMT(2, 16) },
     { { VLC_CODEC_RGB24, 0 },                  PACKED_FMT(3, 24) },
     { { VLC_CODEC_RGB32, 0 },                  PACKED_FMT(4, 24) },
     { { VLC_CODEC_RGB24, 0 },                  PACKED_FMT(3, 24) },
     { { VLC_CODEC_RGB32, 0 },                  PACKED_FMT(4, 24) },
-    { { VLC_CODEC_RGBA,  0 },                  PACKED_FMT(4, 32) },
+    { { VLC_CODEC_RGBA, VLC_CODEC_ARGB,
+        VLC_CODEC_BGRA, },                     PACKED_FMT(4, 32) },
 
     { { VLC_CODEC_Y211, 0 },                   { 1, { {{1,4}, {1,1}} }, 4, 32 } },
 
     { { VLC_CODEC_Y211, 0 },                   { 1, { {{1,4}, {1,1}} }, 4, 32 } },
+    { { VLC_CODEC_XYZ12,  0 },                 PACKED_FMT(6, 48) },
+
+    { { VLC_CODEC_VDPAU_VIDEO_420, VLC_CODEC_VDPAU_VIDEO_422,
+        VLC_CODEC_VDPAU_VIDEO_444, VLC_CODEC_VDPAU_OUTPUT },
+                                               FAKE_FMT() },
+    { { VLC_CODEC_ANDROID_OPAQUE, VLC_CODEC_MMAL_OPAQUE, },
+                                               FAKE_FMT() },
 
 
-    { {0}, { 0, {}, 0, 0 } }
+    { { 0 },                                   FAKE_FMT() }
 };
 
 #undef PACKED_FMT
 };
 
 #undef PACKED_FMT
@@ -1935,7 +2134,7 @@ const vlc_chroma_description_t *vlc_fourcc_GetChromaDescription( vlc_fourcc_t i_
     for( unsigned i = 0; p_list_chroma_description[i].p_fourcc[0]; i++ )
     {
         const vlc_fourcc_t *p_fourcc = p_list_chroma_description[i].p_fourcc;
     for( unsigned i = 0; p_list_chroma_description[i].p_fourcc[0]; i++ )
     {
         const vlc_fourcc_t *p_fourcc = p_list_chroma_description[i].p_fourcc;
-        for( unsigned j = 0; p_fourcc[j]; j++ )
+        for( unsigned j = 0; j < 4 && p_fourcc[j] != 0; j++ )
         {
             if( p_fourcc[j] == i_fourcc )
                 return &p_list_chroma_description[i].description;
         {
             if( p_fourcc[j] == i_fourcc )
                 return &p_list_chroma_description[i].description;