X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmisc%2Ffourcc.c;h=9b6073b11820f2e3d708209cd5da71053f981087;hb=4542dccea1b28b44fbe208c6278463f1bf18fe6a;hp=4f405b9dabdf1bf4b08b8e9a9746d4a4c1c5aa53;hpb=04ed5db125ec7be5180c01047fc1911fd261c4cc;p=vlc diff --git a/src/misc/fourcc.c b/src/misc/fourcc.c index 4f405b9dab..9b6073b118 100644 --- a/src/misc/fourcc.c +++ b/src/misc/fourcc.c @@ -33,6 +33,14 @@ #include #include + +typedef struct +{ + char p_class[4]; + char p_fourcc[4]; + char psz_description[56]; +} staticentry_t; + typedef struct { char p_class[4]; @@ -57,7 +65,7 @@ typedef struct /* */ -static const entry_t p_list_video[] = { +static const staticentry_t p_list_video[] = { B(VLC_CODEC_MPGV, "MPEG-1/2 Video"), A("mpgv"), @@ -155,6 +163,7 @@ static const entry_t p_list_video[] = { A("SN40"), A("EPHV"), A("DM4V"), + A("SM4V"), /* XVID flavours */ E("xvid", "Xvid MPEG-4 Video"), E("XVID", "Xvid MPEG-4 Video"), @@ -184,6 +193,8 @@ static const entry_t p_list_video[] = { E("FFDS", "FFDShow MPEG-4"), E("VIDM", "vidm 4.01 codec"), E("DP02", "DynaPel MPEG-4 codec"), + E("PLV1", "Pelco DVR MPEG-4"), + E("QMP4", "QNAP Systems MPEG-4"), /* 3ivx delta 3.5 Unsupported * putting it here gives extreme distorted images */ //E("3IV1", "3ivx delta 3.5 MPEG-4 Video"), @@ -247,12 +258,21 @@ static const entry_t p_list_video[] = { 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"), + /* 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"), @@ -287,6 +307,7 @@ static const entry_t p_list_video[] = { A("S263"), A("U263"), A("u263"), + A("lsvm"), E("D263", "DEC H263"), E("d263", "DEC H263"), E("L263", "LEAD H263"), @@ -411,6 +432,7 @@ static const entry_t p_list_video[] = { E("CDVH", "Canopus DV Video"), E("cdvh", "Canopus DV Video"), E("CDV5", "Canopus DV Video"), + E("SLDV", "SoftLab DVCAM codec"), /* Windows Media Video */ B(VLC_CODEC_WMV1, "Windows Media Video 7"), @@ -504,10 +526,14 @@ static const entry_t p_list_video[] = { 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"), + A("THEO"), A("Thra"), /* Xiph.org tarkin */ @@ -533,23 +559,23 @@ static const entry_t p_list_video[] = { A("CLJR"), /* Real Video */ - B(VLC_CODEC_RV10, "Real Video 1.0"), + B(VLC_CODEC_RV10, "RealVideo 1.0"), A("RV10"), A("rv10"), - B(VLC_CODEC_RV13, "Real Video 1.3"), + B(VLC_CODEC_RV13, "RealVideo 1.3"), A("RV13"), A("rv13"), - B(VLC_CODEC_RV20, "Real Video 2.0"), + B(VLC_CODEC_RV20, "RealVideo G2 (2.0)"), A("RV20"), A("rv20"), - B(VLC_CODEC_RV30, "Real Video 3.0"), + B(VLC_CODEC_RV30, "RealVideo 8 (3.0)"), A("RV30"), A("rv30"), - B(VLC_CODEC_RV40, "Real Video 4.0"), + B(VLC_CODEC_RV40, "RealVideo 9/10 (4.0)"), A("RV40"), A("rv40"), @@ -592,11 +618,6 @@ static const entry_t p_list_video[] = { 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 "), @@ -677,11 +698,13 @@ static const entry_t p_list_video[] = { 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("ap4h", "Apple ProRes 4444"), /* */ B(VLC_CODEC_YV12, "Planar 4:2:0 YVU"), @@ -698,7 +721,7 @@ static const entry_t p_list_video[] = { A("IYUV"), B(VLC_CODEC_I422, "Planar 4:2:2 YUV"), A("I422"), - B(VLC_CODEC_I444, "Planar 4:4:0 YUV"), + B(VLC_CODEC_I440, "Planar 4:4:0 YUV"), A("I440"), B(VLC_CODEC_I444, "Planar 4:4:4 YUV"), A("I444"), @@ -717,6 +740,10 @@ static const entry_t p_list_video[] = { 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"), @@ -811,6 +838,10 @@ static const entry_t p_list_video[] = { B(VLC_CODEC_I444_10B, "Planar 4:4:4 YUV 10-bit BE"), A("I4AB"), + /* XYZ color space */ + B(VLC_CODEC_XYZ12, "Packed XYZ 12-bit BE"), + A("XY12"), + /* Videogames Codecs */ /* Interplay MVE */ @@ -890,6 +921,8 @@ static const entry_t p_list_video[] = { 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"), @@ -901,9 +934,48 @@ static const entry_t p_list_video[] = { B(VLC_CODEC_LAGARITH, "Lagarith Lossless"), A("LAGS"), + B(VLC_CODEC_MXPEG, "Mxpeg"), + A("MXPG"), + + B(VLC_CODEC_CDXL, "Commodore CDXL video format"), + A("CDXL"), + + B(VLC_CODEC_BMVVIDEO, "Discworld II BMV video"), + A("BMVV"), + + B(VLC_CODEC_UTVIDEO, "Ut Video"), + A("ULRA"), + A("ULRG"), + A("ULY0"), + A("ULY2"), + + B(VLC_CODEC_VBLE, "VBLE Lossless"), + A("VBLE"), + + B(VLC_CODEC_DXTORY, "Dxtory capture format"), + A("xtor"), + + B(VLC_CODEC_MSS1, "Windows Media Video 7 Screen"), + A("MSS1"), + A("mss1"), + + B(VLC_CODEC_MSS2, "Windows Media Video 9 Screen"), + A("MSS2"), + A("mss2"), + + B(VLC_CODEC_MSA1, "Microsoft Application Screen Decoder 1"), + A("MSA1"), + + B(VLC_CODEC_TSC2, "TechSmith Screen Codec 2"), + A("MSA1"), + A("tsc2"), + + B(VLC_CODEC_MTS2, "Microsoft Expression Encoder Screen"), + A("MTS2"), + B(0, "") }; -static const entry_t p_list_audio[] = { +static const staticentry_t p_list_audio[] = { /* Windows Media Audio 1 */ B(VLC_CODEC_WMA1, "Windows Media Audio 1"), @@ -970,6 +1042,7 @@ static const entry_t p_list_audio[] = { /* MPEG Audio layer 1/2/3 */ B(VLC_CODEC_MPGA, "MPEG Audio layer 1/2/3"), A("mpga"), + A("mp2a"), A(".mp1"), A(".mp2"), A("mp3 "), @@ -996,12 +1069,17 @@ static const entry_t p_list_audio[] = { A("DTS "), A("dtsb"), A("dtsc"), + E("dtse", "DTS Express"), + E("dtsh", "DTS-HD High Resolution Audio"), + E("dtsl", "DTS-HD Lossless"), A("ms\x20\x01"), /* AAC audio */ 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)"), @@ -1065,6 +1143,12 @@ static const entry_t p_list_audio[] = { B(VLC_CODEC_ADPCM_IMA_AMV, "IMA AMV ADPCM Audio"), A("imav"), + B(VLC_CODEC_ADPCM_IMA_QT, "IMA QT ADPCM Audio"), + A("ima4"), + + B(VLC_CODEC_ADPCM_YAMAHA, "Yamaha ADPCM Audio" ), + A("ms\x00\x20"), + /* AMR */ B(VLC_CODEC_AMR_NB, "AMR narrow band"), A("samr"), @@ -1114,9 +1198,6 @@ static const entry_t p_list_audio[] = { A("atrc"), A("\x70\x02\x00\x00"), - B(VLC_CODEC_SONIC, "Sonic"), - A("SONC"), - B(VLC_CODEC_IMC, "IMC" ), A("\x01\x04\x00\x00"), @@ -1147,6 +1228,10 @@ static const entry_t p_list_audio[] = { B(VLC_CODEC_VORBIS, "Vorbis Audio"), A("vorb"), + A("vor1"), + + B(VLC_CODEC_OPUS, "Opus Audio"), + A("Opus"), B(VLC_CODEC_302M, "302M Audio"), A("302m"), @@ -1167,6 +1252,13 @@ static const entry_t p_list_audio[] = { B(VLC_CODEC_MIDI, "MIDI Audio"), A("MIDI"), + 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 "), @@ -1202,6 +1294,10 @@ static const entry_t p_list_audio[] = { 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 */ @@ -1228,9 +1324,6 @@ static const entry_t p_list_audio[] = { 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"), @@ -1247,9 +1340,20 @@ static const entry_t p_list_audio[] = { B(VLC_CODEC_TWINVQ, "TwinVQ"), A("TWIN"), + B(VLC_CODEC_BMVAUDIO, "Discworld II BMV audio"), + A("BMVA"), + + B(VLC_CODEC_ULEAD_DV_AUDIO_NTSC, "Ulead DV audio NTSC"), + A("ms\x02\x15"), + B(VLC_CODEC_ULEAD_DV_AUDIO_PAL, "Ulead DV audio PAL"), + A("ms\x02\x16"), + + B(VLC_CODEC_INDEO_AUDIO, "Indeo Audio Coder"), + A("ms\x04\x02"), + B(0, "") }; -static const entry_t p_list_spu[] = { +static const staticentry_t p_list_spu[] = { B(VLC_CODEC_SPU, "DVD Subtitles"), A("spu "), @@ -1299,6 +1403,9 @@ static const entry_t p_list_spu[] = { B(VLC_CODEC_EBU_STL, "EBU STL subtitles"), A("STL "), + B(VLC_CODEC_SCTE_27, "SCTE-27 subtitles"), + A("SC27"), + B(0, "") }; @@ -1311,7 +1418,7 @@ static inline vlc_fourcc_t CreateFourcc( const char *psz_fourcc ) } /* */ -static entry_t Lookup( const entry_t p_list[], vlc_fourcc_t i_fourcc ) +static entry_t Lookup( const staticentry_t p_list[], vlc_fourcc_t i_fourcc ) { const char *p_class = NULL; const char *psz_description = NULL; @@ -1320,7 +1427,7 @@ static entry_t Lookup( const entry_t p_list[], vlc_fourcc_t i_fourcc ) for( int i = 0; ; i++ ) { - const entry_t *p = &p_list[i]; + const staticentry_t *p = &p_list[i]; const vlc_fourcc_t i_entry_fourcc = CreateFourcc( p->p_fourcc ); const vlc_fourcc_t i_entry_class = CreateFourcc( p->p_class ); @@ -1478,6 +1585,9 @@ 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_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 @@ -1662,6 +1772,7 @@ static const vlc_fourcc_t *pp_YUV_fallback[] = { 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_440, VLC_CODEC_YUV_PLANAR_444, @@ -1814,6 +1925,8 @@ static const struct { { 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_YUV420A, 0 }, PLANAR_8(4, 2, 2) }, + { { VLC_CODEC_YUV422A, 0 }, PLANAR_8(4, 2, 1) }, { { VLC_CODEC_I420_10L, VLC_CODEC_I420_10B, 0 }, PLANAR_16(3, 2, 2, 10) }, @@ -1841,6 +1954,7 @@ static const struct { { VLC_CODEC_RGBA, 0 }, PACKED_FMT(4, 32) }, { { VLC_CODEC_Y211, 0 }, { 1, { {{1,4}, {1,1}} }, 4, 32 } }, + { { VLC_CODEC_XYZ12, 0 }, PACKED_FMT(6, 48) }, { {0}, { 0, {}, 0, 0 } } };