Let's try this again. Detect older and new versions of ffmpeg and allow for their coexistence within VLC.

This commit is contained in:
Faustino Osuna 2008-02-29 16:44:10 +00:00
parent afc470b348
commit 791b8caafd
16 changed files with 75 additions and 48 deletions

View File

@ -3058,9 +3058,9 @@ dnl Trying with pkg-config
VLC_SAVE_FLAGS
CPPFLAGS="${CPPFLAGS} ${FFMPEG_CFLAGS}"
CFLAGS="${CFLAGS} ${FFMPEG_CFLAGS}"
AC_CHECK_HEADERS(ffmpeg/avcodec.h, [], [AC_MSG_ERROR([Missing header file ffmpeg/avcodec.h.])] )
AC_CHECK_HEADERS(ffmpeg/avformat.h, [], [AC_MSG_ERROR([Missing header file ffmpeg/avformat.h.])] )
AC_CHECK_HEADERS(ffmpeg/avutil.h, [], [AC_MSG_ERROR([Missing header file ffmpeg/avutil.h.])] )
AC_CHECK_HEADERS(ffmpeg/avcodec.h libavcodec/avcodec.h)
AC_CHECK_HEADERS(ffmpeg/avformat.h libavformat/avformat.h)
AC_CHECK_HEADERS(ffmpeg/avutil.h libavutil/avutil.h)
dnl newer ffmpeg have a separate libpostproc
PKG_CHECK_MODULES(POSTPROC, libpostproc,[
VLC_ADD_CFLAGS([ffmpeg],[${POSTPROC_CFLAGS}])
@ -3068,7 +3068,7 @@ dnl Trying with pkg-config
],[ true ])
CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
AC_CHECK_HEADERS(postproc/postprocess.h, [], [AC_MSG_ERROR([Missing header file postproc/postprocess.h.])] )
AC_CHECK_HEADERS(postproc/postprocess.h)
if test "${SYS}" = "darwin"; then
VLC_ADD_BUILTINS([ffmpeg])
else
@ -3088,9 +3088,8 @@ dnl Trying with pkg-config
PKG_CHECK_MODULES(SWSCALE,[libswscale],[
VLC_ADD_CFLAGS([ffmpeg],[${SWSCALE_CFLAGS}])
VLC_ADD_LIBS([ffmpeg],[${SWSCALE_LIBS}])
dnl AC_CHECK_HEADERS(ffmpeg/swscale.h, [], [AC_MSG_ERROR([Missing header file ffmpeg/swscale.h.])])
AC_CHECK_LIB(swscale, sws_getContext,
[AC_CHECK_HEADERS([ffmpeg/avutil.h, ffmpeg/swscale.h])],[],[-lavutil -lm])
[AC_CHECK_HEADERS([ffmpeg/avutil.h libavutil/avutil.h ffmpeg/swscale.h libswscale/swscale.h])],[],[-lavutil -lm])
],[ true ])
VLC_RESTORE_FLAGS
],[
@ -3100,10 +3099,10 @@ dnl AC_CHECK_HEADERS(ffmpeg/swscale.h, [], [AC_MSG_ERROR([Missing header file
dnl
CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_ffmpeg}"
LDFLAGS="${LDFLAGS_save} ${LDFLAGS_ffmpeg} ${LIBS_ffmpeg}"
AC_CHECK_HEADERS(ffmpeg/avcodec.h, [], [AC_MSG_ERROR([Missing header file ffmpeg/avcodec.h.])] )
AC_CHECK_HEADERS(ffmpeg/avformat.h)
AC_CHECK_HEADERS(ffmpeg/avutil.h)
AC_CHECK_HEADERS(postproc/postprocess.h, [], [AC_MSG_ERROR([Missing header file postproc/postprocess.h.])] )
AC_CHECK_HEADERS(ffmpeg/avcodec.h libavcodec/avcodec.h)
AC_CHECK_HEADERS(ffmpeg/avformat.h libavformat/avformat.h)
AC_CHECK_HEADERS(ffmpeg/avutil.h libavutil/avutil.h)
AC_CHECK_HEADERS(postproc/postprocess.h)
AC_CHECK_LIB(avutil, av_crc_init, [
VLC_ADD_LIBS([ffmpeg],[-lavutil])
@ -3128,7 +3127,7 @@ dnl AC_CHECK_HEADERS(ffmpeg/swscale.h, [], [AC_MSG_ERROR([Missing header file
CPPFLAGS="${CPPFLAGS_save}"
AC_CHECK_LIB(swscale, sws_getContext, [
AC_CHECK_HEADERS(ffmpeg/swscale.h)
AC_CHECK_HEADERS(ffmpeg/swscale.h libswscale/swscale.h)
VLC_ADD_LIBS([ffmpeg],[-lswscale]) ], [], [-lavcodec $LDAVUTIL])
LDFLAGS="${LDFLAGS_save}"
CPPFLAGS="${CPPFLAGS_save}"

View File

@ -90,8 +90,11 @@
#cmakedefine HAVE_FFMPEG_AVCODEC_H
#cmakedefine HAVE_FFMPEG_AVFORMAT_H
#cmakedefine HAVE_FFMPEG_AVUTIL_H
#cmakedefine HAVE_FFMPEG_AVUTIL_H_
#cmakedefine HAVE_FFMPEG_SWSCALE_H
#cmakedefine HAVE_LIBAVCODEC_AVCODEC_H
#cmakedefine HAVE_LIBAVFORMAT_AVFORMAT_H
#cmakedefine HAVE_LIBAVUTIL_AVUTIL_H
#cmakedefine HAVE_LIBSWSCALE_SWSCALE_H
#cmakedefine HAVE_FLAC_STREAM_DECODER_H
#cmakedefine HAVE_FONTCONFIG_FONTCONFIG_H
#cmakedefine HAVE_FORK

View File

@ -464,10 +464,9 @@ if(FFmpeg_FOUND)
set( CMAKE_REQUIRED_FLAGS_saved ${CMAKE_REQUIRED_FLAGS} )
set( CMAKE_REQUIRED_FLAGS ${FFmpeg_CFLAGS} )
vlc_check_include_files (ffmpeg/avcodec.h)
vlc_check_include_files (ffmpeg/avutil.h)
vlc_check_include_files (ffmpeg/swscale.h)
check_include_files (swscale.h HAVE_LIBSWSCALE_TREE)
vlc_check_include_files (ffmpeg/avcodec.h libavcodec/avcodec.h)
vlc_check_include_files (ffmpeg/avutil.h libavutil/avutil.h)
vlc_check_include_files (ffmpeg/swscale.h libswscale/swscale.h)
check_include_files ("stdint.h;postproc/postprocess.h" HAVE_POSTPROC_POSTPROCESS_H)
vlc_enable_modules(ffmpeg)

View File

@ -35,7 +35,9 @@
#include <vlc_input.h>
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>

View File

@ -32,12 +32,14 @@
#include <vlc/vlc.h>
#include <vlc_vout.h>
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
#include <vlc_filter.h>
#endif
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
@ -45,7 +47,7 @@
#include "ffmpeg.h"
#if !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE)
#if !defined(HAVE_LIBSWSCALE_SWSCALE_H) && !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE)
void E_(InitLibavcodec) ( vlc_object_t *p_object );
static void ChromaConversion( vout_thread_t *, picture_t *, picture_t * );
@ -361,4 +363,4 @@ void E_(CloseChroma)( vlc_object_t *p_this )
free( p_vout->chroma.p_sys );
}
#endif /* !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE) */
#endif /* !defined(HAVE_LIBSWSCALE_SWSCALE_H) && !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE) */

View File

@ -35,7 +35,9 @@
#include <vlc_filter.h>
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>

View File

@ -36,7 +36,9 @@
#include <vlc_meta.h>
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVFORMAT_H
#if defined(HAVE_LIBAVFORMAT_AVFORMAT_H)
# include <libavformat/avformat.h>
#elif defined(HAVE_FFMPEG_AVFORMAT_H)
# include <ffmpeg/avformat.h>
#elif defined(HAVE_LIBAVFORMAT_TREE)
# include <avformat.h>
@ -47,7 +49,7 @@
//#define AVFORMAT_DEBUG 1
/* Version checking */
#if defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
/*****************************************************************************
* demux_sys_t: demux descriptor
@ -501,4 +503,4 @@ static offset_t IOSeek( void *opaque, offset_t offset, int whence )
return stream_Tell( p_demux->s );
}
#endif /* HAVE_FFMPEG_AVFORMAT_H */
#endif /* HAVE_LIBAVFORMAT_AVFORMAT_H */

View File

@ -41,7 +41,9 @@
/* ffmpeg header */
#define HAVE_MMX 1
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>

View File

@ -34,7 +34,9 @@
/* ffmpeg header */
#define HAVE_MMX 1
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
@ -74,7 +76,7 @@ static const char *nloopf_list_text[] =
static const char *enc_hq_list[] = { "rd", "bits", "simple" };
static const char *enc_hq_list_text[] = { N_("rd"), N_("bits"), N_("simple") };
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
static int pi_mode_values[] = { 0, 1, 2, 4, 8, 5, 6, 9, 10 };
static const char *ppsz_mode_descriptions[] =
{ N_("Fast bilinear"), N_("Bilinear"), N_("Bicubic (good quality)"),
@ -196,7 +198,7 @@ vlc_module_begin();
add_integer( ENC_CFG_PREFIX "chroma-elim-threshold", 0, NULL,
ENC_CHROMA_ELIM_TEXT, ENC_CHROMA_ELIM_LONGTEXT, VLC_TRUE );
#if defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
#if defined(HAVE_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
/* demux submodule */
add_submodule();
set_description( _("FFmpeg demuxer" ) );
@ -212,7 +214,7 @@ vlc_module_begin();
set_callbacks( E_(OpenMux), E_(CloseMux) );
#endif
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
/* video filter submodule */
add_submodule();
set_description( _("Video scaling filter") );

View File

@ -34,7 +34,9 @@
#include <vlc_sout.h>
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVFORMAT_H
#ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
# include <libavformat/avformat.h>
#elif defined(HAVE_FFMPEG_AVFORMAT_H)
# include <ffmpeg/avformat.h>
#elif defined(HAVE_LIBAVFORMAT_TREE)
# include <avformat.h>
@ -45,7 +47,7 @@
//#define AVFORMAT_DEBUG 1
/* Version checking */
#if defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
#if defined(HAVE_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
static const char *ppsz_mux_options[] = {
"mux", NULL

View File

@ -31,7 +31,9 @@
#include <vlc_codec.h>
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>

View File

@ -34,13 +34,17 @@
#include <vlc_filter.h>
/* ffmpeg headers */
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
#ifdef HAVE_FFMPEG_SWSCALE_H
#ifdef HAVE_LIBSWSCALE_SWSCALE_H
# include <libswscale/swscale.h>
#elif defined(HAVE_FFMPEG_SWSCALE_H)
# include <ffmpeg/swscale.h>
#elif defined(HAVE_LIBSWSCALE_TREE)
# include <swscale.h>
@ -49,7 +53,7 @@
#include "ffmpeg.h"
/* Version checking */
#if ( (defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)) && (LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0)) )
#if ( (defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)) && (LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0)) )
/*****************************************************************************
* filter_sys_t : filter descriptor

View File

@ -35,7 +35,9 @@
#include <vlc_input.h> /* hmmm, just for INPUT_RATE_DEFAULT */
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
@ -843,7 +845,7 @@ static void ffmpeg_CopyPicture( decoder_t *p_dec,
dest_pic.data[i] = p_pic->p[i].p_pixels;
dest_pic.linesize[i] = p_pic->p[i].i_pitch;
}
#if !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE)
#if !defined(HAVE_LIBSWSCALE_SWSCALE_H) && !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE)
img_convert( &dest_pic, PIX_FMT_YUV420P,
(AVPicture *)p_ff_pic,
p_sys->p_context->pix_fmt,

View File

@ -35,7 +35,9 @@
#include <vlc_filter.h>
/* ffmpeg header */
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
@ -43,7 +45,7 @@
#include "ffmpeg.h"
#if !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE)
#if !defined(HAVE_LIBSWSCALE_SWSCALE_H) && !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE)
void E_(InitLibavcodec) ( vlc_object_t *p_object );
static int CheckInit( filter_t *p_filter );
static picture_t *Process( filter_t *p_filter, picture_t *p_pic );
@ -566,4 +568,4 @@ static picture_t *Process( filter_t *p_filter, picture_t *p_pic )
p_pic->pf_release( p_pic );
return p_pic_dst;
}
#endif /* ( (defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)) */
#endif /* ( (defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)) */

View File

@ -136,7 +136,7 @@ struct decoder_sys_t
int i_align;
/* Misc */
#ifdef HAVE_FFMPEG_SWSCALE_H
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_SWSCALE_H)
image_handler_t *p_image;
#endif
};
@ -181,7 +181,7 @@ static int Open( vlc_object_t *p_this )
}
memset( p_sys, 0, sizeof(decoder_sys_t) );
#ifdef HAVE_FFMPEG_SWSCALE_H
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_SWSCALE_H)
p_sys->p_image = image_HandlerCreate( VLC_OBJECT(p_dec) );
if( !p_sys->p_image )
{
@ -225,7 +225,7 @@ static int Open( vlc_object_t *p_this )
if( p_sys->b_text )
p_dec->fmt_out.video.i_chroma = VLC_FOURCC('T','E','X','T');
else
#ifdef HAVE_FFMPEG_SWSCALE_H
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_SWSCALE_H)
p_dec->fmt_out.video.i_chroma = VLC_FOURCC('Y','U','V','A');
#else
p_dec->fmt_out.video.i_chroma = VLC_FOURCC('R','G','B','A');
@ -246,7 +246,7 @@ static void Close( vlc_object_t *p_this )
var_DelCallback( p_dec, "vbi-page", RequestPage, p_sys );
var_DelCallback( p_dec, "vbi-opaque", Opaque, p_sys );
#ifdef HAVE_FFMPEG_SWSCALE_H
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_SWSCALE_H)
if( p_sys->p_image ) image_HandlerDelete( p_sys->p_image );
#endif
if( p_sys->p_vbi_dec ) vbi_decoder_delete( p_sys->p_vbi_dec );
@ -323,7 +323,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block )
/* Create a new subpicture region */
memset( &fmt, 0, sizeof(video_format_t) );
fmt.i_chroma = p_sys->b_text ? VLC_FOURCC('T','E','X','T') :
#ifdef HAVE_FFMPEG_SWSCALE_H
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_SWSCALE_H)
VLC_FOURCC('Y','U','V','A');
#else
VLC_FOURCC('R','G','B','A');
@ -383,7 +383,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block )
}
else
{
#ifdef HAVE_FFMPEG_SWSCALE_H
#if defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_SWSCALE_H)
video_format_t fmt_in;
picture_t *p_pic, *p_dest;

View File

@ -38,7 +38,9 @@
#include <vlc_network.h>
#define HAVE_MMX
#ifdef HAVE_FFMPEG_AVCODEC_H
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>