* ffmpeg : add a new fourcc, ( 3IV2 you shoudln't be able to decode it
authorLaurent Aimar <fenrir@videolan.org>
Tue, 23 Jul 2002 22:42:20 +0000 (22:42 +0000)
committerLaurent Aimar <fenrir@videolan.org>
Tue, 23 Jul 2002 22:42:20 +0000 (22:42 +0000)
but sometimes it's in fact MPEG-4, thx titer ).

 * mp4 : add capability to read mov with mp3 track. But it seems that
mad doesn't like too much fragmented data packets, and thus breaks the
audio.( since with '--codec dummy' I'm able to read resulting audio file
without any problem :)

plugins/ffmpeg/ffmpeg.h
plugins/mp4/libmp4.c
plugins/mp4/libmp4.h
plugins/mp4/mp4.c

index c3eb770..a7900c4 100644 (file)
@@ -2,7 +2,7 @@
  * ffmpeg_vdec.h: video decoder using ffmpeg library
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: ffmpeg.h,v 1.8 2002/07/23 17:19:02 fenrir Exp $
+ * $Id: ffmpeg.h,v 1.9 2002/07/23 22:42:20 fenrir Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  * 
@@ -86,6 +86,8 @@ typedef struct bitmapinfoheader_s
 
 /* ?? */
 #define FOURCC_3IV1         VLC_FOURCC('3','I','V','1')
+#define FOURCC_3IV2         VLC_FOURCC('3','I','V','2')
+
 /* H263 and H263i */        
 #define FOURCC_H263         VLC_FOURCC('H','2','6','3')
 #define FOURCC_h263         VLC_FOURCC('h','2','6','3')
@@ -164,6 +166,8 @@ static int ffmpeg_GetFfmpegCodec( vlc_fourcc_t i_fourcc,
         case FOURCC_DX50:
         case FOURCC_mp4v:
         case FOURCC_4:
+        case FOURCC_3IV2:
+
             i_codec = CODEC_ID_MPEG4;
             psz_name = "MPEG-4";
             break;
index 618224e..1fc138b 100644 (file)
@@ -2,7 +2,7 @@
  * libmp4.c : LibMP4 library for mp4 module for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: libmp4.c,v 1.5 2002/07/23 17:19:02 fenrir Exp $
+ * $Id: libmp4.c,v 1.6 2002/07/23 22:42:20 fenrir Exp $
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  * 
  * This program is free software; you can redistribute it and/or modify
@@ -1312,60 +1312,6 @@ int MP4_ReadBox_sample_vide( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
     MP4_READBOX_EXIT( 1 );
 }
 
-#if 0
-int MP4_ReadBox_sample_mp4v( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
-{
-    int i;    
-
-    MP4_READBOX_ENTER( MP4_Box_data_sample_mp4v_t );
-    
-    for( i = 0; i < 6 ; i++ )
-    {
-        MP4_GET1BYTE( p_box->data.p_sample_mp4v->i_reserved1[i] );
-    }
-
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_data_reference_index );
-
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_predefined1 );
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_reserved2 );
-
-    for( i = 0; i < 3 ; i++ )
-    {
-        MP4_GET4BYTES( p_box->data.p_sample_mp4v->i_predefined2[i] );
-    }
-
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_width );
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_height );
-    
-    MP4_GET4BYTES( p_box->data.p_sample_mp4v->i_horizresolution );
-    MP4_GET4BYTES( p_box->data.p_sample_mp4v->i_vertresolution );
-
-    MP4_GET4BYTES( p_box->data.p_sample_mp4v->i_reserved3 );
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_predefined3 );
-
-    /* This is a pascal string, padded to 32 bytes */
-    memcpy( &p_box->data.p_sample_mp4v->i_compressorname, p_peek+1, 31 );
-    p_box->data.p_sample_mp4v->i_compressorname[*p_peek] = 0;
-    p_peek += 32; i_read -= 32;
-
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_depth );
-    MP4_GET2BYTES( p_box->data.p_sample_mp4v->i_predefined4 );
-
-
-    MP4_SeekStream( p_stream, p_box->i_pos + MP4_BOX_HEADERSIZE( p_box ) + 78);
-    MP4_ReadBoxContainerRaw( p_stream, p_box ); /* esds */
-    
-#ifdef MP4_VERBOSE
-    msg_Dbg( p_stream->p_input, "Read Box: \"mp4v\" in stsd %dx%d depth %d compressor %s",
-                      p_box->data.p_sample_mp4v->i_width,
-                      p_box->data.p_sample_mp4v->i_height,
-                      p_box->data.p_sample_mp4v->i_depth,
-                      p_box->data.p_sample_mp4v->i_compressorname );
-#endif
-    MP4_READBOX_EXIT( 1 );
-}
-#endif 
-
 
 int MP4_ReadBox_stsd( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
 {
@@ -1996,6 +1942,7 @@ static struct
     /* for codecs */
     { FOURCC_soun,  MP4_ReadBox_sample_soun,    MP4_FreeBox_Common },
     { FOURCC__mp3,  MP4_ReadBox_sample_soun,    MP4_FreeBox_Common },
+    { FOURCC_ms55,  MP4_ReadBox_sample_soun,    MP4_FreeBox_Common },
     { FOURCC_mp4a,  MP4_ReadBox_sample_soun,    MP4_FreeBox_Common },
 
     { FOURCC_vide,  MP4_ReadBox_sample_vide,    MP4_FreeBox_Common },
@@ -2005,6 +1952,7 @@ static struct
     { FOURCC_h263,  MP4_ReadBox_sample_vide,    MP4_FreeBox_Common },
     { FOURCC_cvid,  MP4_ReadBox_sample_vide,    MP4_FreeBox_Common },
     { FOURCC_3IV1,  MP4_ReadBox_sample_vide,    MP4_FreeBox_Common },
+    { FOURCC_3IV2,  MP4_ReadBox_sample_vide,    MP4_FreeBox_Common },
     { FOURCC_mjpa,  MP4_ReadBox_sample_vide,    MP4_FreeBox_Common },
     { FOURCC_mjpb,  MP4_ReadBox_sample_vide,    MP4_FreeBox_Common },
     { FOURCC_mjqt,  NULL,                       NULL }, /* found in mjpa/b */
index f376942..b97182a 100644 (file)
@@ -2,7 +2,7 @@
  * libmp4.h : LibMP4 library for mp4 module for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: libmp4.h,v 1.5 2002/07/23 17:19:02 fenrir Exp $
+ * $Id: libmp4.h,v 1.6 2002/07/23 22:42:20 fenrir Exp $
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  * 
  * This program is free software; you can redistribute it and/or modify
@@ -95,7 +95,9 @@
 #define FOURCC_zlib VLC_FOURCC( 'z', 'l', 'i', 'b' )
 #define FOURCC_SVQ1 VLC_FOURCC( 'S', 'V', 'Q', '1' )
 #define FOURCC__mp3 VLC_FOURCC( '.', 'm', 'p', '3' )
+#define FOURCC_ms55 VLC_FOURCC( 'm', 's', 0x0, 0x55 )
 #define FOURCC_3IV1 VLC_FOURCC( '3', 'I', 'V', '1' )
+#define FOURCC_3IV2 VLC_FOURCC( '3', 'I', 'V', '2' )
 #define FOURCC_h263 VLC_FOURCC( 'h', '2', '6', '3' )
 #define FOURCC_DIVX VLC_FOURCC( 'D', 'I', 'V', 'X' )
 #define FOURCC_cvid VLC_FOURCC( 'c', 'v', 'i', 'd' )
index a994874..c5e92ee 100644 (file)
@@ -2,7 +2,7 @@
  * mp4.c : MP4 file input module for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: mp4.c,v 1.6 2002/07/23 17:19:02 fenrir Exp $
+ * $Id: mp4.c,v 1.7 2002/07/23 22:42:20 fenrir Exp $
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  * 
  * This program is free software; you can redistribute it and/or modify
@@ -790,12 +790,6 @@ static void MP4_StartDecoder( input_thread_t *p_input,
         return;
     }
 
-    if( !p_sample->data.p_data )
-    {
-        printf( "\nAhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh %.4s\n",
-                &p_sample->i_type );
-        return;
-    } 
     vlc_mutex_lock( &p_input->stream.stream_lock );
     p_demux_track->p_es = input_AddES( p_input,
                                        p_input->stream.p_selected_program, 
@@ -811,7 +805,18 @@ static void MP4_StartDecoder( input_thread_t *p_input,
     
     p_demux_track->p_es->i_stream_id = p_demux_track->i_track_ID;
 
-    p_demux_track->p_es->i_fourcc = p_sample->i_type;
+    /* It's a little ugly but .. there are special cases */
+    switch( p_sample->i_type )
+    {
+        case( VLC_FOURCC( '.', 'm', 'p', '3' ) ):
+        case( VLC_FOURCC( 'm', 's', 0x00, 0x55 ) ):
+            p_demux_track->p_es->i_fourcc = VLC_FOURCC( 'm', 'p', 'g', 'a' );
+            break;
+        default:
+            p_demux_track->p_es->i_fourcc = p_sample->i_type;
+            break;
+    }
+    
     p_demux_track->p_es->i_cat = p_demux_track->i_cat;
     
     i_decoder_specific_info_len = 0;