Commit 37e30b12 authored by Laurent Aimar's avatar Laurent Aimar

* modules/codec/faad : an AAC decoder module using libfaad library

(faad2).
 * modules/demux/mp4/libmp4.c : could compile without zlib.
 * modules/codec/ffmpeg/* : set error resilience to -1 by default.(in
order to decode more files, but it could produce segfaults ... )
 * Makefile.*, configure.in : enable mp4 by default, add faad
module (disabled by default ).
parent 7acb51f9
...@@ -67,6 +67,7 @@ dvdread_CFLAGS = @dvdread_CFLAGS@ ...@@ -67,6 +67,7 @@ dvdread_CFLAGS = @dvdread_CFLAGS@
dvdplay_CFLAGS = @dvdplay_CFLAGS@ dvdplay_CFLAGS = @dvdplay_CFLAGS@
esd_CFLAGS = @esd_CFLAGS@ esd_CFLAGS = @esd_CFLAGS@
familiar_CFLAGS = @familiar_CFLAGS@ familiar_CFLAGS = @familiar_CFLAGS@
faad_CFLAGS = @faad_CFLAGS@
ffmpeg_CFLAGS = @ffmpeg_CFLAGS@ ffmpeg_CFLAGS = @ffmpeg_CFLAGS@
glide_CFLAGS = @glide_CFLAGS@ glide_CFLAGS = @glide_CFLAGS@
gnome_CFLAGS = @gnome_CFLAGS@ gnome_CFLAGS = @gnome_CFLAGS@
...@@ -105,6 +106,7 @@ dvdplay_LDFLAGS = @dvdplay_LDFLAGS@ ...@@ -105,6 +106,7 @@ dvdplay_LDFLAGS = @dvdplay_LDFLAGS@
esd_LDFLAGS = @esd_LDFLAGS@ esd_LDFLAGS = @esd_LDFLAGS@
familiar_LDFLAGS = @familiar_LDFLAGS@ familiar_LDFLAGS = @familiar_LDFLAGS@
distort_LDFLAGS = @distort_LDFLAGS@ distort_LDFLAGS = @distort_LDFLAGS@
faad_LDFLAGS = @faad_LDFLAGS@
ffmpeg_LDFLAGS = @ffmpeg_LDFLAGS@ ffmpeg_LDFLAGS = @ffmpeg_LDFLAGS@
mp4_LDFLAGS = @mp4_LDFLAGS@ mp4_LDFLAGS = @mp4_LDFLAGS@
ggi_LDFLAGS = @ggi_LDFLAGS@ ggi_LDFLAGS = @ggi_LDFLAGS@
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -1057,19 +1057,73 @@ then ...@@ -1057,19 +1057,73 @@ then
fi fi
fi fi
dnl
dnl faad decoder plugin
dnl
AC_ARG_ENABLE(faad,
[ --enable-faad faad codec (default disabled)])
if test "x${enable_faad}" = "xyes"
then
AC_ARG_WITH(faad,
[ --with-faad=PATH path to faad installation],[],[])
if test "x${with_faad}" != "xno" -a "x${with_faad}" != "x"
then
faad_CFLAGS="${faad_CFLAGS} -I${with_faad}/include"
faad_LDFLAGS="${faad_LDFLAGS} -L${with_faad}/lib"
fi
faad_LDFLAGS="${faad_LDFLAGS} -lm"
AC_ARG_WITH(faad-tree,
[ --with-faad-tree=PATH faad tree for static linking])
if test "x${with_faad_tree}" != "x"
then
AC_MSG_CHECKING(for libfaad.a in ${with_faad_tree})
real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
if test "x${real_faad_tree}" = x
then
dnl The given directory can't be found
AC_MSG_RESULT(no)
AC_MSG_ERROR([cannot cd to ${with_faad_tree}])
fi
if test -f "${real_faad_tree}/libfaad/.libs/libfaad.a"
then
dnl Use a custom faad
AC_MSG_RESULT(${real_faad_tree}/libfaad/.libs/libfaad.a)
BUILTINS="${BUILTINS} codec/faad/faad"
faad_LDFLAGS="${faad_LDFLAGS} ${real_faad_tree}/libfaad/.libs/libfaad.a"
faad_CFLAGS="${faad_CFLAGS} -I${real_faad_tree}/include"
else
dnl The given libfaad wasn't built
AC_MSG_RESULT(no)
AC_MSG_ERROR([cannot find ${real_faad_tree}/.libs/libfaad.a, make sure you compiled libfaad in ${with_faad_tree}])
fi
else
CFLAGS="${save_CFLAGS} ${faad_CFLAGS}"
LDFLAGS="${save_LDFLAGS} ${faad_LDFLAGS}"
AC_CHECK_HEADERS(faad.h, ,
[ AC_MSG_ERROR([Cannot find development headers for libfaad...]) ])
AC_CHECK_LIB(faad, faacDecOpen, [
PLUGINS="${PLUGINS} codec/faad/faad"
faad_LDFLAGS="${faad_LDFLAGS} -lfaad" ],
[ AC_MSG_ERROR([Cannot find libfaad library...]) ])
LDFLAGS="${save_LDFLAGS}"
CFLAGS="${save_CFLAGS}"
fi
fi
dnl dnl
dnl MP4 module dnl MP4 module
dnl dnl
AC_ARG_ENABLE(mp4, AC_ARG_ENABLE(mp4,
[ --enable-mp4 MP4 demux module (default disabled)]) [ --enable-mp4 MP4 demux module (default enabled)])
if test "x${enable_mp4}" = "xyes" if test "x${enable_mp4}" != "xno"
then then
AC_CHECK_HEADER(zlib.h,
AC_CHECK_LIB(z, inflateEnd, PLUGINS="${PLUGINS} demux/mp4/mp4"
[ PLUGINS="${PLUGINS} demux/mp4/mp4" AC_CHECK_HEADERS(zlib.h,
mp4_LDFLAGS="${mp4_LDFLAGS} -lz" ], [ mp4_LDFLAGS="${mp4_LDFLAGS} -lz" ] )
[ AC_MSG_ERROR([cannot find zlib library...]) ]),
[ AC_MSG_ERROR([cannot find zlib header...]) ])
fi fi
dnl dnl
...@@ -1978,6 +2032,7 @@ AC_SUBST(ts_dvbpsi_CFLAGS) ...@@ -1978,6 +2032,7 @@ AC_SUBST(ts_dvbpsi_CFLAGS)
AC_SUBST(directx_CFLAGS) AC_SUBST(directx_CFLAGS)
AC_SUBST(esd_CFLAGS) AC_SUBST(esd_CFLAGS)
AC_SUBST(familiar_CFLAGS) AC_SUBST(familiar_CFLAGS)
AC_SUBST(faad_CFLAGS)
AC_SUBST(ffmpeg_CFLAGS) AC_SUBST(ffmpeg_CFLAGS)
AC_SUBST(glide_CFLAGS) AC_SUBST(glide_CFLAGS)
AC_SUBST(gnome_CFLAGS) AC_SUBST(gnome_CFLAGS)
...@@ -2014,6 +2069,7 @@ AC_SUBST(ts_dvbpsi_LDFLAGS) ...@@ -2014,6 +2069,7 @@ AC_SUBST(ts_dvbpsi_LDFLAGS)
AC_SUBST(esd_LDFLAGS) AC_SUBST(esd_LDFLAGS)
AC_SUBST(familiar_LDFLAGS) AC_SUBST(familiar_LDFLAGS)
AC_SUBST(distort_LDFLAGS) AC_SUBST(distort_LDFLAGS)
AC_SUBST(faad_LDFLAGS)
AC_SUBST(ffmpeg_LDFLAGS) AC_SUBST(ffmpeg_LDFLAGS)
AC_SUBST(mp4_LDFLAGS) AC_SUBST(mp4_LDFLAGS)
AC_SUBST(ggi_LDFLAGS) AC_SUBST(ggi_LDFLAGS)
......
/* include/defs.h.in. Generated automatically from configure.in by autoheader. */ /* include/defs.h.in. Generated automatically from configure.in by autoheader 2.13. */
/* Define if using alloca.c. */ /* Define if using alloca.c. */
#undef C_ALLOCA #undef C_ALLOCA
...@@ -205,6 +205,9 @@ ...@@ -205,6 +205,9 @@
/* Define if you have the <dvdread/dvd_reader.h> header file. */ /* Define if you have the <dvdread/dvd_reader.h> header file. */
#undef HAVE_DVDREAD_DVD_READER_H #undef HAVE_DVDREAD_DVD_READER_H
/* Define if you have the <faad.h> header file. */
#undef HAVE_FAAD_H
/* Define if you have the <fcntl.h> header file. */ /* Define if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H #undef HAVE_FCNTL_H
...@@ -328,6 +331,9 @@ ...@@ -328,6 +331,9 @@
/* Define if you have the <unistd.h> header file. */ /* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
/* Define if you have the <zlib.h> header file. */
#undef HAVE_ZLIB_H
/* Define if you have the pth library (-lpth). */ /* Define if you have the pth library (-lpth). */
#undef HAVE_LIBPTH #undef HAVE_LIBPTH
......
.dep
*.lo
*.o.*
*.lo.*
faad_SOURCES = decoder.c
This diff is collapsed.
/*****************************************************************************
* decoder.h: faad decoder modules
*
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: decoder.h,v 1.1 2002/08/10 20:05:21 fenrir Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#define AAC_MAXCHANNELS 64
typedef struct waveformatex_s
{
u16 i_formattag;
u16 i_channels;
u32 i_samplespersec;
u32 i_avgbytespersec;
u16 i_blockalign;
u16 i_bitspersample;
u16 i_size; /* the extra size in bytes */
u8 *p_data; /* The extra data */
} waveformatex_t;
typedef struct adec_thread_s
{
waveformatex_t format;
/*
* faad decoder session
*/
/* faad stuff */
faacDecHandle *p_handle;
/* The bit stream structure handles the PES stream at the bit level */
bit_stream_t bit_stream;
/*
* Input properties
*/
decoder_fifo_t *p_fifo;
u8 *p_framedata;
int i_framesize;
u8 *p_buffer;
int i_buffer_size;
/*
* Output properties
*/
mtime_t i_pts;
aout_instance_t * p_aout; /* opaque */
aout_input_t * p_aout_input; /* opaque */
audio_sample_format_t output_format;
} adec_thread_t;
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* ffmpeg.c: video decoder using ffmpeg library * ffmpeg.c: video decoder using ffmpeg library
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: ffmpeg.c,v 1.3 2002/08/04 22:13:05 fenrir Exp $ * $Id: ffmpeg.c,v 1.4 2002/08/10 20:05:21 fenrir Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -88,7 +88,7 @@ static int b_ffmpeginit = 0; ...@@ -88,7 +88,7 @@ static int b_ffmpeginit = 0;
vlc_module_begin(); vlc_module_begin();
add_category_hint( N_("Miscellaneous"), NULL ); add_category_hint( N_("Miscellaneous"), NULL );
#if LIBAVCODEC_BUILD >= 4611 #if LIBAVCODEC_BUILD >= 4611
add_integer ( "ffmpeg-error-resilience", 0, NULL, add_integer ( "ffmpeg-error-resilience", -1, NULL,
"error resilience", ERROR_RESILIENCE_LONGTEXT ); "error resilience", ERROR_RESILIENCE_LONGTEXT );
add_integer ( "ffmpeg-workaround-bugs", 0, NULL, add_integer ( "ffmpeg-workaround-bugs", 0, NULL,
"workaround bugs", "0-99, seems to be for msmpeg v3\n" ); "workaround bugs", "0-99, seems to be for msmpeg v3\n" );
...@@ -431,16 +431,10 @@ static vout_thread_t *ffmpeg_CreateVout( videodec_thread_t *p_vdec, ...@@ -431,16 +431,10 @@ static vout_thread_t *ffmpeg_CreateVout( videodec_thread_t *p_vdec,
{ {
msg_Dbg( p_vdec->p_fifo, "no vout present, spawning one" ); msg_Dbg( p_vdec->p_fifo, "no vout present, spawning one" );
if( !( p_vout = vout_CreateThread( p_vdec->p_fifo, p_vout = vout_CreateThread( p_vdec->p_fifo,
i_width, i_width, i_height,
i_height, i_chroma, i_aspect );
i_chroma,
i_aspect ) ) )
{
return( NULL ); /* everythings have failed */
}
} }
/* up to now, all this stuff is used for post-processing */
return( p_vout ); return( p_vout );
} }
...@@ -633,8 +627,6 @@ static int InitThread( videodec_thread_t *p_vdec ) ...@@ -633,8 +627,6 @@ static int InitThread( videodec_thread_t *p_vdec )
{ {
int i_ffmpeg_codec; int i_ffmpeg_codec;
int i_tmp; int i_tmp;
int i_use_pp;
if( p_vdec->p_fifo->p_demux_data ) if( p_vdec->p_fifo->p_demux_data )
{ {
...@@ -696,9 +688,42 @@ static int InitThread( videodec_thread_t *p_vdec ) ...@@ -696,9 +688,42 @@ static int InitThread( videodec_thread_t *p_vdec )
#endif #endif
p_vdec->b_hurry_up = config_GetInt(p_vdec->p_fifo, "ffmpeg-hurry-up"); p_vdec->b_hurry_up = config_GetInt(p_vdec->p_fifo, "ffmpeg-hurry-up");
/* ***** Load for post processing ***** */
/* get overridden settings */ /* ***** Open the codec ***** */
if (avcodec_open(p_vdec->p_context, p_vdec->p_codec) < 0)
{
msg_Err( p_vdec->p_fifo, "cannot open codec (%s)",
p_vdec->psz_namecodec );
return( -1 );
}
else
{
msg_Dbg( p_vdec->p_fifo, "ffmpeg codec (%s) started",
p_vdec->psz_namecodec );
}
/* ***** init this codec with special data(up to now MPEG4 only) ***** */
if( p_vdec->format.i_data )
{
AVPicture avpicture;
int b_gotpicture;
switch( i_ffmpeg_codec )
{
case( CODEC_ID_MPEG4 ):
avcodec_decode_video( p_vdec->p_context, &avpicture,
&b_gotpicture,
p_vdec->format.p_data,
p_vdec->format.i_data );
break;
default:
break;
}
}
/* ***** Load post processing ***** */
/* get overridding settings */
p_vdec->i_pp_mode = 0; p_vdec->i_pp_mode = 0;
if( config_GetInt( p_vdec->p_fifo, "ffmpeg-db-yv" ) ) if( config_GetInt( p_vdec->p_fifo, "ffmpeg-db-yv" ) )
p_vdec->i_pp_mode |= PP_DEBLOCK_Y_V; p_vdec->i_pp_mode |= PP_DEBLOCK_Y_V;
...@@ -714,17 +739,10 @@ static int InitThread( videodec_thread_t *p_vdec ) ...@@ -714,17 +739,10 @@ static int InitThread( videodec_thread_t *p_vdec )
p_vdec->i_pp_mode |= PP_DERING_C; p_vdec->i_pp_mode |= PP_DERING_C;
if( ( config_GetInt( p_vdec->p_fifo, "ffmpeg-pp-q" ) > 0 )|| if( ( config_GetInt( p_vdec->p_fifo, "ffmpeg-pp-q" ) > 0 )||
( config_GetInt( p_vdec->p_fifo, "ffmpeg-pp-auto" ) )||
( p_vdec->i_pp_mode != 0 ) ) ( p_vdec->i_pp_mode != 0 ) )
{ {
i_use_pp = 1; /* check if the codec support postproc. */
}
else
{
i_use_pp = 0;
}
if( i_use_pp )
{
switch( i_ffmpeg_codec ) switch( i_ffmpeg_codec )
{ {
#if LIBAVCODEC_BUILD > 4608 #if LIBAVCODEC_BUILD > 4608
...@@ -739,91 +757,52 @@ static int InitThread( videodec_thread_t *p_vdec ) ...@@ -739,91 +757,52 @@ static int InitThread( videodec_thread_t *p_vdec )
// case( CODEC_ID_H263P ): I don't use it up to now // case( CODEC_ID_H263P ): I don't use it up to now
case( CODEC_ID_H263I ): case( CODEC_ID_H263I ):
/* Ok we can make postprocessing :)) */ /* Ok we can make postprocessing :)) */
break; /* first try to get a postprocess module */
default:
p_vdec->i_pp_mode = 0;
i_use_pp = 0;
msg_Warn( p_vdec->p_fifo,
"Post processing unsupported for this codec" );
break;
}
}
if( i_use_pp )
{
#if LIBAVCODEC_BUILD > 4613 #if LIBAVCODEC_BUILD > 4613
char *psz_name; p_vdec->p_pp = vlc_object_create( p_vdec->p_fifo,
sizeof( postprocessing_t ) );
/* first try to get a postprocess module */ p_vdec->p_pp->psz_object_name = "postprocessing";
p_vdec->p_pp = vlc_object_create( p_vdec->p_fifo, p_vdec->p_pp->p_module =
sizeof( postprocessing_t ) ); module_Need( p_vdec->p_pp, "postprocessing", "$ffmpeg-pp" );
p_vdec->p_pp->psz_object_name = "postprocessing";
if( !p_vdec->p_pp->p_module )
psz_name = config_GetPsz( p_vdec->p_pp, "ffmpeg-pp" ); {
p_vdec->p_pp->p_module = msg_Warn( p_vdec->p_fifo,
module_Need( p_vdec->p_pp, "postprocessing", psz_name ); "no suitable postprocessing module" );
FREE( psz_name ); vlc_object_destroy( p_vdec->p_pp );
if( !p_vdec->p_pp->p_module ) p_vdec->p_pp = NULL;
{ p_vdec->i_pp_mode = 0;
msg_Warn( p_vdec->p_fifo, "no suitable postprocessing module" ); }
vlc_object_destroy( p_vdec->p_pp ); else
p_vdec->p_pp = NULL; {
p_vdec->i_pp_mode = 0; /* get mode upon quality */
} p_vdec->i_pp_mode |=
else p_vdec->p_pp->pf_getmode(
{ config_GetInt( p_vdec->p_fifo, "ffmpeg-pp-q" ),
/* get mode upon quality */ config_GetInt( p_vdec->p_fifo, "ffmpeg-pp-auto" )
p_vdec->i_pp_mode |= );
p_vdec->p_pp->pf_getmode( config_GetInt( p_vdec->p_fifo,
"ffmpeg-pp-q" ), /* allocate table for postprocess */
config_GetInt( p_vdec->p_fifo, p_vdec->p_context->quant_store =
"ffmpeg-pp-auto" ) ); malloc( sizeof( int ) * ( MBR + 1 ) * ( MBC + 1 ) );
p_vdec->p_context->qstride = MBC + 1;
/* allocate table for postprocess */ }
p_vdec->p_context->quant_store =
malloc( sizeof( int ) * ( MBR + 1 ) * ( MBC + 1 ) );
p_vdec->p_context->qstride = MBC + 1;
}
#else #else
msg_Warn( p_vdec->p_fifo, p_vdec->i_pp_mode = 0;
"post-processing not supported, upgrade ffmpeg" ); msg_Warn( p_vdec->p_fifo,
p_vdec->i_pp_mode = 0; "post-processing not supported, upgrade ffmpeg" );
#endif #endif
}
/* ***** Open the codec ***** */
if (avcodec_open(p_vdec->p_context, p_vdec->p_codec) < 0)
{
msg_Err( p_vdec->p_fifo, "cannot open codec (%s)",
p_vdec->psz_namecodec );
return( -1 );
}
else
{
msg_Dbg( p_vdec->p_fifo, "ffmpeg codec (%s) started",
p_vdec->psz_namecodec );
}
/* ***** init this codec with special data(up to now MPEG4 only) ***** */
if( p_vdec->format.i_data )
{
AVPicture avpicture;
int b_gotpicture;
switch( i_ffmpeg_codec )
{
case( CODEC_ID_MPEG4 ):
avcodec_decode_video( p_vdec->p_context, &avpicture,
&b_gotpicture,
p_vdec->format.p_data,
p_vdec->format.i_data );
break; break;
default: default:
p_vdec->i_pp_mode = 0;
msg_Warn( p_vdec->p_fifo,
"Post processing unsupported for this codec" );
break; break;
} }
} }
// memset( &p_vdec->statistic, 0, sizeof( statistic_t ) );
return( 0 ); return( 0 );
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* ffmpeg_vdec.h: video decoder using ffmpeg library * ffmpeg_vdec.h: video decoder using ffmpeg library
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: ffmpeg.h,v 1.2 2002/08/04 22:13:05 fenrir Exp $ * $Id: ffmpeg.h,v 1.3 2002/08/10 20:05:21 fenrir Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -38,9 +38,21 @@ typedef struct bitmapinfoheader_s ...@@ -38,9 +38,21 @@ typedef struct bitmapinfoheader_s
int i_data; int i_data;
u8 *p_data; u8 *p_data;
} bitmapinfoheader_t; } bitmapinfoheader_t;
#if 0
typedef struct statistic_s
{
mtime_t i_frame_time[3]; /* total time to decode frame */
int i_frame_count[3]; /* number of frame to calculate frame_time */
int i_frame_late[3]; /* number of frame consecutively late */
int i_frame_skip[3]; /* number of frame skip */
} statistic_t;
#endif
typedef struct videodec_thread_s typedef struct videodec_thread_s
{ {
decoder_fifo_t *p_fifo; decoder_fifo_t *p_fifo;
...@@ -58,6 +70,8 @@ typedef struct videodec_thread_s ...@@ -58,6 +70,8 @@ typedef struct videodec_thread_s
char *psz_namecodec; char *psz_namecodec;
/* for frame skipping algo */ /* for frame skipping algo */
// statistic_s statistic;
int b_hurry_up; int b_hurry_up;
int i_frame_error; int i_frame_error;
int i_frame_skip; int i_frame_skip;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* libmp4.c : LibMP4 library for mp4 module for vlc * libmp4.c : LibMP4 library for mp4 module for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: libmp4.c,v 1.1 2002/08/04 17:23:42 sam Exp $ * $Id: libmp4.c,v 1.2 2002/08/10 20:05:21 fenrir Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -27,7 +27,10 @@ ...@@ -27,7 +27,10 @@
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/input.h> #include <vlc/input.h>
#include <zlib.h> /* for compressed moov */ #ifdef HAVE_ZLIB_H
# include <zlib.h> /* for compressed moov */
#endif
#include "libmp4.h" #include "libmp4.h"
/***************************************************************************** /*****************************************************************************
...@@ -1749,6 +1752,7 @@ void MP4_FreeBox_cmvd( input_thread_t *p_input, MP4_Box_t *p_box ) ...@@ -1749,6 +1752,7 @@ void MP4_FreeBox_cmvd( input_thread_t *p_input, MP4_Box_t *p_box )
FREE( p_box->data.p_cmvd->p_data ); FREE( p_box->data.p_cmvd->p_data );
} }
int MP4_ReadBox_cmov( MP4_Stream_t *p_stream, MP4_Box_t *p_box ) int MP4_ReadBox_cmov( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
{ {
MP4_Stream_t *p_stream_memory; MP4_Stream_t *p_stream_memory;
...@@ -1797,7 +1801,12 @@ int MP4_ReadBox_cmov( MP4_Stream_t *p_stream, MP4_Box_t *p_box ) ...@@ -1797,7 +1801,12 @@ int MP4_ReadBox_cmov( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
( p_dcom->data.p_dcom->i_algorithm >> 24 )&0xff ); ( p_dcom->data.p_dcom->i_algorithm >> 24 )&0xff );
return( 1 ); return( 1 );
} }
#ifndef HAVE_ZLIB_H
msg_Dbg( p_stream->p_input,
"Read Box: \"cmov\" zlib unsupported" );
return( 1 );
#else
/* decompress data */ /* decompress data */
/* allocate a new buffer */ /* allocate a new buffer */
if( !( p_data = malloc( p_cmvd->data.p_cmvd->i_uncompressed_size ) ) ) if( !( p_data = malloc( p_cmvd->data.p_cmvd->i_uncompressed_size ) ) )
...@@ -1875,6 +1884,7 @@ int MP4_ReadBox_cmov( MP4_Stream_t *p_stream, MP4_Box_t *p_box ) ...@@ -1875,6 +1884,7 @@ int MP4_ReadBox_cmov( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
"Read Box: \"cmov\" compressed movie header completed" ); "Read Box: \"cmov\" compressed movie header completed" );
#endif #endif
return( i_result ); return( i_result );
#endif /* HAVE_ZLIB_H */
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment