]> git.sesse.net Git - vlc/commitdiff
* modules/demux/mp4/*: bug fix for MP4_TrackNextSample() + added fourcc for amr-wb.
authorGildas Bazin <gbazin@videolan.org>
Sat, 27 Nov 2004 21:44:57 +0000 (21:44 +0000)
committerGildas Bazin <gbazin@videolan.org>
Sat, 27 Nov 2004 21:44:57 +0000 (21:44 +0000)
modules/demux/mp4/libmp4.c
modules/demux/mp4/libmp4.h
modules/demux/mp4/mp4.c

index d23436c19635673590fda14994b085e308d9e942..4ef70645a915dcbd90aba39bbd21ea85e7e09791 100644 (file)
@@ -2142,6 +2142,7 @@ static struct
     { FOURCC_MAC6,  MP4_ReadBox_sample_soun,    MP4_FreeBox_sample_soun },
     { FOURCC_Qclp,  MP4_ReadBox_sample_soun,    MP4_FreeBox_sample_soun },
     { FOURCC_samr,  MP4_ReadBox_sample_soun,    MP4_FreeBox_sample_soun },
+    { FOURCC_sawb,  MP4_ReadBox_sample_soun,    MP4_FreeBox_sample_soun },
     { FOURCC_OggS,  MP4_ReadBox_sample_soun,    MP4_FreeBox_sample_soun },
 
     { FOURCC_vide,  MP4_ReadBox_sample_vide,    MP4_FreeBox_sample_vide },
index 18aa5c0f597ddb6795ff8965b5d871c2902fa4dc..941e701c6e6da1128e9c9ae222231857dda7ed4b 100644 (file)
 #define FOURCC_ulaw VLC_FOURCC( 'u', 'l', 'a', 'w' )
 #define FOURCC_Qclp VLC_FOURCC( 'Q', 'c', 'l', 'p' )
 #define FOURCC_samr VLC_FOURCC( 's', 'a', 'm', 'r' )
+#define FOURCC_sawb VLC_FOURCC( 's', 'a', 'w', 'b' )
 #define FOURCC_OggS VLC_FOURCC( 'O', 'g', 'g', 'S' )
 
 #define FOURCC_zlib VLC_FOURCC( 'z', 'l', 'i', 'b' )
index 667eb014f487d3662a6b2466b3cbe5f5450054f1..2962d67dc2b3b5613c7fefb6b56c99dc52501e30 100644 (file)
@@ -1986,8 +1986,7 @@ static uint64_t MP4_TrackGetPos( mp4_track_t *p_track )
     return( i_pos );
 }
 
-static int  MP4_TrackNextSample( demux_t     *p_demux,
-                                 mp4_track_t   *p_track )
+static int  MP4_TrackNextSample( demux_t *p_demux, mp4_track_t *p_track )
 {
 
     if( p_track->fmt.i_cat == AUDIO_ES &&
@@ -1997,7 +1996,11 @@ static int  MP4_TrackNextSample( demux_t     *p_demux,
 
         p_soun = p_track->p_sample->data.p_sample_soun;
 
-        if( p_soun->i_qt_version == 1 )
+        if( p_track->i_sample_size != 1 )
+        {
+            p_track->i_sample += 1;
+        }
+        else if( p_soun->i_qt_version == 1 )
         {
             /* chunk by chunk */
             p_track->i_sample =