]> git.sesse.net Git - vlc/blobdiff - src/misc/fourcc.c
Added picture_pool_Reserve helper.
[vlc] / src / misc / fourcc.c
index 6c34d792e3e22be24f3eb6de1ba3f9f915c5c242..82545fd8a48152699c0d2f7deeee1e55f62cc245 100644 (file)
@@ -136,6 +136,7 @@ static const entry_t p_list_video[] = {
         A("PM4V"),
         A("M4T3"),
         A("GEOX"),
+        A("GEOV"),
         A("DMK2"),
         A("WV1F"),
         A("DIGI"),
@@ -442,6 +443,7 @@ static const entry_t p_list_video[] = {
 
     B(VLC_CODEC_VP6F, "On2's VP6.2 Video (Flash)"),
         A("VP6F"),
+        A("FLV4"),
 
     B(VLC_CODEC_VP6A, "On2's VP6 A Video"),
         A("VP6A"),
@@ -607,13 +609,19 @@ static const entry_t p_list_video[] = {
     B(VLC_CODEC_FRWU, "Forward Uncompressed" ),
         A("FRWU"),
 
+    B(VLC_CODEC_INDEO5, "Indeo Video v5"),
+        A("IV50"),
+        A("iv50"),
+
+
     /* */
     B(VLC_CODEC_YV12, "Planar 4:2:0 YVU"),
         A("YV12"),
         A("yv12"),
+    B(VLC_CODEC_YV9,  "Planar 4:1:0 YVU"),
+        A("YVU9"),
     B(VLC_CODEC_I410, "Planar 4:1:0 YUV"),
         A("I410"),
-        A("YVU9"),
     B(VLC_CODEC_I411, "Planar 4:1:1 YUV"),
         A("I411"),
     B(VLC_CODEC_I420, "Planar 4:2:0 YUV"),
@@ -626,17 +634,13 @@ static const entry_t p_list_video[] = {
     B(VLC_CODEC_I444, "Planar 4:4:4 YUV"),
         A("I444"),
 
-    B(VLC_CODEC_I420, "Planar 4:1:0 YUV full scale"),
-        A("J410"),
-    B(VLC_CODEC_I420, "Planar 4:1:1 YUV full scale"),
-        A("J411"),
-    B(VLC_CODEC_I420, "Planar 4:2:0 YUV full scale"),
+    B(VLC_CODEC_J420, "Planar 4:2:0 YUV full scale"),
         A("J420"),
-    B(VLC_CODEC_I422, "Planar 4:2:2 YUV full scale"),
+    B(VLC_CODEC_J422, "Planar 4:2:2 YUV full scale"),
         A("J422"),
-    B(VLC_CODEC_I444, "Planar 4:4:0 YUV full scale"),
+    B(VLC_CODEC_J440, "Planar 4:4:0 YUV full scale"),
         A("J440"),
-    B(VLC_CODEC_I444, "Planar 4:4:4 YUV full scale"),
+    B(VLC_CODEC_J444, "Planar 4:4:4 YUV full scale"),
         A("J444"),
 
     B(VLC_CODEC_YUVP, "Palettized YUV with palette element Y:U:V:A"),
@@ -801,7 +805,7 @@ static const entry_t p_list_audio[] = {
         A("wmal"),
 
     /* Windows Media Audio Speech */
-    B(VLC_CODEC_WMAS, "Windows Media Audio Speech"),
+    B(VLC_CODEC_WMAS, "Windows Media Audio Voice (Speech)"),
         A("WMAS"),
         A("wmas"),
 
@@ -872,6 +876,10 @@ static const entry_t p_list_audio[] = {
         A("mp4a"),
         A("aac "),
 
+    /* ALS audio */
+    B(VLC_CODEC_ALS, "MPEG-4 Audio Lossless (ALS)"),
+        A("als "),
+
     /* 4X Technologies */
     B(VLC_CODEC_ADPCM_4XM, "4X Technologies Audio"),
         A("4xma"),
@@ -924,6 +932,7 @@ static const entry_t p_list_audio[] = {
         A("ms\x00\x11"),
 
     B(VLC_CODEC_ADPCM_IMA_AMV, "IMA AMV ADPCM Audio"),
+        A("imav"),
 
     /* AMR */
     B(VLC_CODEC_AMR_NB, "AMR narrow band"),
@@ -1189,7 +1198,8 @@ static entry_t Lookup( const entry_t p_list[], vlc_fourcc_t i_fourcc )
 
             memcpy( e.p_class, p_class, 4 );
             memcpy( e.p_fourcc, p->p_fourcc, 4 );
-            e.psz_description = p->psz_description ?: psz_description;
+            e.psz_description = p->psz_description ?
+                                p->psz_description : psz_description;
             break;
         }
     }
@@ -1321,6 +1331,9 @@ const char *vlc_fourcc_GetDescription( int i_cat, vlc_fourcc_t i_fourcc )
 
 
 /* */
+#define VLC_CODEC_YUV_PLANAR_410 \
+    VLC_CODEC_I410, VLC_CODEC_YV9
+
 #define VLC_CODEC_YUV_PLANAR_420 \
     VLC_CODEC_I420, VLC_CODEC_YV12, VLC_CODEC_J420
 
@@ -1340,7 +1353,7 @@ const char *vlc_fourcc_GetDescription( int i_cat, vlc_fourcc_t i_fourcc )
 #define VLC_CODEC_FALLBACK_420 \
     VLC_CODEC_YUV_PLANAR_422, VLC_CODEC_YUV_PACKED, \
     VLC_CODEC_YUV_PLANAR_444, VLC_CODEC_YUV_PLANAR_440, \
-    VLC_CODEC_I411, VLC_CODEC_I410, VLC_CODEC_Y211
+    VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211
 
 static const vlc_fourcc_t p_I420_fallback[] = {
     VLC_CODEC_I420, VLC_CODEC_YV12, VLC_CODEC_J420, VLC_CODEC_FALLBACK_420, 0
@@ -1355,7 +1368,7 @@ static const vlc_fourcc_t p_YV12_fallback[] = {
 #define VLC_CODEC_FALLBACK_422 \
     VLC_CODEC_YUV_PACKED, VLC_CODEC_YUV_PLANAR_420, \
     VLC_CODEC_YUV_PLANAR_444, VLC_CODEC_YUV_PLANAR_440, \
-    VLC_CODEC_I411, VLC_CODEC_I410, VLC_CODEC_Y211
+    VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211
 
 static const vlc_fourcc_t p_I422_fallback[] = {
     VLC_CODEC_I422, VLC_CODEC_J422, VLC_CODEC_FALLBACK_422, 0
@@ -1367,7 +1380,7 @@ static const vlc_fourcc_t p_J422_fallback[] = {
 #define VLC_CODEC_FALLBACK_444 \
     VLC_CODEC_YUV_PLANAR_422, VLC_CODEC_YUV_PACKED, \
     VLC_CODEC_YUV_PLANAR_420, VLC_CODEC_YUV_PLANAR_440, \
-    VLC_CODEC_I411, VLC_CODEC_I410, VLC_CODEC_Y211
+    VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211
 
 static const vlc_fourcc_t p_I444_fallback[] = {
     VLC_CODEC_I444, VLC_CODEC_J444, VLC_CODEC_FALLBACK_444, 0
@@ -1382,13 +1395,13 @@ static const vlc_fourcc_t p_I440_fallback[] = {
     VLC_CODEC_YUV_PLANAR_422,
     VLC_CODEC_YUV_PLANAR_444,
     VLC_CODEC_YUV_PACKED,
-    VLC_CODEC_I411, VLC_CODEC_I410, VLC_CODEC_Y211, 0
+    VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211, 0
 };
 
 #define VLC_CODEC_FALLBACK_PACKED \
     VLC_CODEC_YUV_PLANAR_422, VLC_CODEC_YUV_PLANAR_420, \
     VLC_CODEC_YUV_PLANAR_444, VLC_CODEC_YUV_PLANAR_440, \
-    VLC_CODEC_I411, VLC_CODEC_I410, VLC_CODEC_Y211
+    VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211
 
 static const vlc_fourcc_t p_YUYV_fallback[] = {
     VLC_CODEC_YUYV,
@@ -1441,7 +1454,7 @@ static const vlc_fourcc_t p_list_YUV[] = {
     VLC_CODEC_YUV_PLANAR_440,
     VLC_CODEC_YUV_PLANAR_444,
     VLC_CODEC_YUV_PACKED,
-    VLC_CODEC_I411, VLC_CODEC_I410, VLC_CODEC_Y211,
+    VLC_CODEC_I411, VLC_CODEC_YUV_PLANAR_410, VLC_CODEC_Y211,
     0,
 };
 
@@ -1520,8 +1533,29 @@ const vlc_fourcc_t *vlc_fourcc_GetRGBFallback( vlc_fourcc_t i_fourcc )
 
 bool vlc_fourcc_AreUVPlanesSwapped( vlc_fourcc_t a, vlc_fourcc_t b )
 {
-    return (((a == VLC_CODEC_I420 || a == VLC_CODEC_J420) && b == VLC_CODEC_YV12) ||
-            ((b == VLC_CODEC_I420 || b == VLC_CODEC_J420) && a == VLC_CODEC_YV12));
+    static const vlc_fourcc_t pp_swapped[][4] = {
+        { VLC_CODEC_YV12, VLC_CODEC_I420, VLC_CODEC_J420, 0 },
+        { VLC_CODEC_YV9,  VLC_CODEC_I410, 0 },
+        { 0 }
+    };
+
+    for( int i = 0; pp_swapped[i][0]; i++ )
+    {
+        if( pp_swapped[i][0] == b )
+        {
+            vlc_fourcc_t t = a;
+            a = b;
+            b = t;
+        }
+        if( pp_swapped[i][0] != a )
+            continue;
+        for( int j = 1; pp_swapped[i][j]; j++ )
+        {
+            if( pp_swapped[i][j] == b )
+                return true;
+        }
+    }
+    return false;
 }
 
 bool vlc_fourcc_IsYUV(vlc_fourcc_t fcc)