SOURCES_au = au.c
SOURCES_wav = wav.c
SOURCES_aac = aac.c
-SOURCES_mkv = mkv.cpp
+SOURCES_mkv = mkv.cpp mp4/libmp4.c mp4/drms.c
SOURCES_livedotcom = livedotcom.cpp ../access/mms/asf.c ../access/mms/buffer.c
SOURCES_nsv = nsv.c
SOURCES_real = real.c
#include "ebml/StdIOCallback.h"
+extern "C" {
+ #include "mp4/libmp4.h"
+}
#ifdef HAVE_ZLIB_H
# include <zlib.h>
#endif
tk.fmt.i_codec = VLC_FOURCC( 'm', 'p', '4', 'v' );
}
}
+ else if( !strcmp( tk.psz_codec, "V_QUICKTIME" ) )
+ {
+ MP4_Box_t *p_box = (MP4_Box_t*)malloc( sizeof( MP4_Box_t ) );
+ MP4_Stream_t *p_mp4_stream = MP4_MemoryStream( p_demux->s,
+ tk.i_extra_data,
+ tk.p_extra_data );
+ MP4_ReadBoxCommon( p_mp4_stream, p_box );
+ MP4_ReadBox_sample_vide( p_mp4_stream, p_box );
+ tk.fmt.i_codec = p_box->i_type;
+ tk.fmt.video.i_width = p_box->data.p_sample_vide->i_width;
+ tk.fmt.video.i_height = p_box->data.p_sample_vide->i_height;
+ tk.fmt.i_extra = p_box->data.p_sample_vide->i_qt_image_description;
+ tk.fmt.p_extra = malloc( tk.fmt.i_extra );
+ memcpy( tk.fmt.p_extra, p_box->data.p_sample_vide->p_qt_image_description, tk.fmt.i_extra );
+ MP4_FreeBox_sample_vide( p_box );
+ free( p_box );
+ free( p_mp4_stream );
+ }
else if( !strcmp( tk.psz_codec, "A_MS/ACM" ) )
{
if( tk.i_extra_data < (int)sizeof( WAVEFORMATEX ) )
*
* RETURN : 0 if it fail, 1 otherwise
*****************************************************************************/
-static int MP4_ReadBoxCommon( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+int MP4_ReadBoxCommon( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
{
int i_read;
uint8_t *p_peek;
}
-static int MP4_ReadBox_sample_vide( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+int MP4_ReadBox_sample_vide( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
{
unsigned int i;
}
-static void MP4_FreeBox_sample_vide( MP4_Box_t *p_box )
+void MP4_FreeBox_sample_vide( MP4_Box_t *p_box )
{
FREE( p_box->data.p_sample_vide->p_qt_image_description );
}
*****************************************************************************/
int MP4_BoxCount( MP4_Box_t *p_box, char *psz_fmt, ... );
+MP4_Stream_t *MP4_MemoryStream( stream_t *s,
+ int i_size, uint8_t *p_buffer );
+int MP4_ReadBoxCommon( MP4_Stream_t *p_stream, MP4_Box_t *p_box );
+int MP4_ReadBox_sample_vide( MP4_Stream_t *p_stream, MP4_Box_t *p_box );
+void MP4_FreeBox_sample_vide( MP4_Box_t *p_box );