[vlc-commits] demux: mp4: Add support for (unpaletted) raw RGB and GREY video

Alex Converse git at videolan.org
Fri Dec 18 12:38:43 CET 2015


vlc | branch: master | Alex Converse <alex.converse at gmail.com> | Thu Dec 17 15:22:55 2015 -0800| [13b6861d0d8bea34f6c98474439f7b9af01d73f7] | committer: Francois Cartegnie

demux: mp4: Add support for (unpaletted) raw RGB and GREY video

This fixes playback of the gaming content from derf's video testset

Signed-off-by: Francois Cartegnie <fcvlcdev at free.fr>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=13b6861d0d8bea34f6c98474439f7b9af01d73f7
---

 modules/demux/mp4/essetup.c |   21 +++++++++++++++++++++
 modules/demux/mp4/libmp4.c  |    4 +++-
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/modules/demux/mp4/essetup.c b/modules/demux/mp4/essetup.c
index 3d929ba..11771b3 100644
--- a/modules/demux/mp4/essetup.c
+++ b/modules/demux/mp4/essetup.c
@@ -218,6 +218,27 @@ int SetupVideoES( demux_t *p_demux, mp4_track_t *p_track, MP4_Box_t *p_sample )
         case VLC_FOURCC('y','u','v','2'):
             p_track->fmt.i_codec = VLC_FOURCC('Y','U','Y','2');
             break;
+        case VLC_FOURCC('r','a','w',' '):
+            switch( p_vide->i_depth ) {
+                case 16:
+                    p_track->fmt.i_codec = VLC_CODEC_RGB15;
+                    break;
+                case 24:
+                    p_track->fmt.i_codec = VLC_CODEC_RGB24;
+                    break;
+                case 32:
+                    p_track->fmt.i_codec = VLC_CODEC_ARGB;
+                    break;
+                case 32 + 8:
+                    p_track->fmt.i_codec = VLC_CODEC_GREY;
+                    break;
+                default:
+                    msg_Dbg( p_demux, "Unrecognized raw video format (depth = %d)",
+                             p_vide->i_depth );
+                    p_track->fmt.i_codec = p_sample->i_type;
+                    break;
+            }
+            break;
 
         default:
             p_track->fmt.i_codec = p_sample->i_type;
diff --git a/modules/demux/mp4/libmp4.c b/modules/demux/mp4/libmp4.c
index 8b3ad81..83cbb2b 100644
--- a/modules/demux/mp4/libmp4.c
+++ b/modules/demux/mp4/libmp4.c
@@ -3728,7 +3728,6 @@ static const struct
     { ATOM_dvi,     MP4_ReadBox_sample_soun,  ATOM_stsd },
     { ATOM_alaw,    MP4_ReadBox_sample_soun,  ATOM_stsd },
     { ATOM_ulaw,    MP4_ReadBox_sample_soun,  ATOM_stsd },
-    { ATOM_raw,     MP4_ReadBox_sample_soun,  ATOM_stsd },
     { ATOM_MAC3,    MP4_ReadBox_sample_soun,  ATOM_stsd },
     { ATOM_MAC6,    MP4_ReadBox_sample_soun,  ATOM_stsd },
     { ATOM_Qclp,    MP4_ReadBox_sample_soun,  ATOM_stsd },
@@ -3745,6 +3744,9 @@ static const struct
     { ATOM_dOps,    MP4_ReadBox_Binary,       ATOM_Opus },
     { ATOM_wfex,    MP4_ReadBox_WMA2,         ATOM_wma  }, /* ismv formatex */
 
+    /* Both uncompressed sound and video */
+    { ATOM_raw,     MP4_ReadBox_default,      ATOM_stsd },
+
     { ATOM_drmi,    MP4_ReadBox_sample_vide,  ATOM_stsd },
     { ATOM_vide,    MP4_ReadBox_sample_vide,  ATOM_stsd },
     { ATOM_mp4v,    MP4_ReadBox_sample_vide,  ATOM_stsd },



More information about the vlc-commits mailing list