Commit e00551fb authored by Faustino Osuna's avatar Faustino Osuna

Detect and allow older versions of ffmpeg to be used in conjunction with VLC.

parent 17579930
......@@ -3058,9 +3058,10 @@ dnl Trying with pkg-config
VLC_SAVE_FLAGS
CPPFLAGS="${CPPFLAGS} ${FFMPEG_CFLAGS}"
CFLAGS="${CFLAGS} ${FFMPEG_CFLAGS}"
AC_CHECK_HEADERS(libavcodec/avcodec.h, [], [AC_MSG_ERROR([Missing header file libavcodec/avcodec.h.])] )
AC_CHECK_HEADERS(libavformat/avformat.h, [], [AC_MSG_ERROR([Missing header file libavformat/avformat.h.])] )
AC_CHECK_HEADERS(libavutil/avutil.h, [], [AC_MSG_ERROR([Missing header file libavutil/avutil.h.])] )
AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
AC_CHECK_HEADERS(libavformat/avformat.h ffmpeg/avformat.h)
AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avformat.h)
dnl newer ffmpeg have a separate libpostproc
PKG_CHECK_MODULES(POSTPROC, libpostproc,[
VLC_ADD_CFLAGS([ffmpeg],[${POSTPROC_CFLAGS}])
......@@ -3068,7 +3069,7 @@ dnl Trying with pkg-config
],[ true ])
CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}"
CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}"
AC_CHECK_HEADERS(libpostproc/postprocess.h, [], [AC_MSG_ERROR([Missing header file libpostproc/postprocess.h.])] )
AC_CHECK_HEADERS(postproc/postprocess.h)
if test "${SYS}" = "darwin"; then
VLC_ADD_BUILTINS([ffmpeg])
else
......@@ -3089,7 +3090,7 @@ dnl Trying with pkg-config
VLC_ADD_CFLAGS([ffmpeg],[${SWSCALE_CFLAGS}])
VLC_ADD_LIBS([ffmpeg],[${SWSCALE_LIBS}])
AC_CHECK_LIB(swscale, sws_getContext,
[AC_CHECK_HEADERS([libavutil/avutil.h libswscale/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
],[
......@@ -3099,10 +3100,10 @@ dnl Trying with pkg-config
dnl
CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_ffmpeg}"
LDFLAGS="${LDFLAGS_save} ${LDFLAGS_ffmpeg} ${LIBS_ffmpeg}"
AC_CHECK_HEADERS(libavcodec/avcodec.h, [], [AC_MSG_ERROR([Missing header file libavcodec/avcodec.h.])] )
AC_CHECK_HEADERS(libavformat/avformat.h)
AC_CHECK_HEADERS(libavutil/avutil.h)
AC_CHECK_HEADERS(libpostproc/postprocess.h, [], [AC_MSG_ERROR([Missing header file libpostproc/postprocess.h.])] )
AC_CHECK_HEADERS(libavcodec/avcodec.h ffmpeg/avcodec.h)
AC_CHECK_HEADERS(libavformat/avformat.h ffmpeg/avformat.h)
AC_CHECK_HEADERS(libavutil/avutil.h ffmpeg/avutil.h)
AC_CHECK_HEADERS(postproc/postprocess.h)
AC_CHECK_LIB(avutil, av_crc_init, [
VLC_ADD_LIBS([ffmpeg],[-lavutil])
......@@ -3127,11 +3128,24 @@ dnl Trying with pkg-config
CPPFLAGS="${CPPFLAGS_save}"
AC_CHECK_LIB(swscale, sws_getContext, [
AC_CHECK_HEADERS(libswscale/swscale.h)
AC_CHECK_HEADERS(libswscale/swscale.h ffmpeg/swscale.h)
VLC_ADD_LIBS([ffmpeg],[-lswscale]) ], [], [-lavcodec $LDAVUTIL])
LDFLAGS="${LDFLAGS_save}"
CPPFLAGS="${CPPFLAGS_save}"
])
if test "$ac_cv_header_libavcodec_avcodec_h" = "no" && test "$ac_cv_header_ffmpeg_avcodec_h" = "no"; then
AC_MSG_ERROR([Missing header file libavcodec/avcodec.h.])
fi
if test "$ac_cv_header_libavformat_avformat_h" = "no" && test $"ac_cv_header_ffmpeg_avformat_h" = "no"; then
AC_MSG_ERROR([Missing header file libavformat/avformat.h.])
fi
if test "$ac_cv_header_libavutil_avutil_h" = "no" && test "$ac_cv_header_ffmpeg_avutil_h" = "no"; then
AC_MSG_ERROR([Missing header file libavutil/avutil.h.])
fi
if test "$ac_cv_header_libswscale_swscale_h" = "no" && test "$ac_cv_header_ffmpeg_swscale_h" = "no"; then
AC_MSG_ERROR([Missing header file libswscale/swscale.h.])
fi
fi
fi
......
......@@ -87,6 +87,10 @@
#cmakedefine HAVE_ERRNO_H
#cmakedefine HAVE_FAAD_H
#cmakedefine HAVE_FCNTL_H
#cmakedefine HAVE_FFMPEG_AVCODEC_H
#cmakedefine HAVE_FFMPEG_AVFORMAT_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
......
......@@ -451,9 +451,9 @@ if(FFmpeg_FOUND)
set( CMAKE_REQUIRED_FLAGS_saved ${CMAKE_REQUIRED_FLAGS} )
set( CMAKE_REQUIRED_FLAGS ${FFmpeg_CFLAGS} )
vlc_check_include_files (libavcodec/avcodec.h)
vlc_check_include_files (libavutil/avutil.h)
vlc_check_include_files (libswscale/swscale.h)
vlc_check_include_files (libavcodec/avcodec.h ffmpeg/avcodec.h)
vlc_check_include_files (libavutil/avutil.h ffmpeg/avutil.h)
vlc_check_include_files (libswscale/swscale.h ffmpeg/swscale.h)
check_include_files ("stdint.h;postproc/postprocess.h" HAVE_POSTPROC_POSTPROCESS_H)
vlc_enable_modules(ffmpeg)
......
......@@ -35,8 +35,10 @@
#include <vlc_input.h>
/* ffmpeg header */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
......
......@@ -32,20 +32,22 @@
#include <vlc/vlc.h>
#include <vlc_vout.h>
#if defined(HAVE_LIBSWSCALE_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_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
#include "ffmpeg.h"
#if !defined(HAVE_LIBSWSCALE_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_LIBSWSCALE_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE) */
#endif /* !defined(HAVE_LIBSWSCALE_SWSCALE_H) && !defined(HAVE_FFMPEG_SWSCALE_H) && !defined(HAVE_LIBSWSCALE_TREE) */
......@@ -35,8 +35,10 @@
#include <vlc_filter.h>
/* ffmpeg header */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
......
......@@ -36,8 +36,10 @@
#include <vlc_meta.h>
/* ffmpeg header */
#ifdef HAVE_LIBAVFORMAT_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>
#endif
......@@ -47,7 +49,7 @@
//#define AVFORMAT_DEBUG 1
/* Version checking */
#if defined(HAVE_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
/*****************************************************************************
* demux_sys_t: demux descriptor
......
......@@ -41,8 +41,10 @@
/* ffmpeg header */
#define HAVE_MMX 1
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
......
......@@ -34,8 +34,10 @@
/* ffmpeg header */
#define HAVE_MMX 1
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
......@@ -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_LIBSWSCALE_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_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_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_LIBSWSCALE_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") );
......
......@@ -45,7 +45,7 @@
//#define AVFORMAT_DEBUG 1
/* Version checking */
#if defined(HAVE_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)
static const char *ppsz_mux_options[] = {
"mux", NULL
......
......@@ -31,8 +31,10 @@
#include <vlc_codec.h>
/* ffmpeg header */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
......
......@@ -34,14 +34,18 @@
#include <vlc_filter.h>
/* ffmpeg headers */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(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_LIBSWSCALE_SWSCALE_H
#if defined(HAVE_LIBSWSCALE_SWSCALE_H)
# include <libswscale/swscale.h>
#elif defined(HAVE_FFMPEG_H)
# include <ffmpeg/swscale.h>
#elif defined(HAVE_LIBSWSCALE_TREE)
# include <swscale.h>
#endif
......@@ -49,7 +53,7 @@
#include "ffmpeg.h"
/* Version checking */
#if ( (defined(HAVE_LIBSWSCALE_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
......
......@@ -35,8 +35,10 @@
#include <vlc_input.h> /* hmmm, just for INPUT_RATE_DEFAULT */
/* ffmpeg header */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
......@@ -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_LIBSWSCALE_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,
......
......@@ -35,15 +35,17 @@
#include <vlc_filter.h>
/* ffmpeg header */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.h>
#endif
#include "ffmpeg.h"
#if !defined(HAVE_LIBSWSCALE_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_LIBSWSCALE_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)) */
#endif /* ( (defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H) || defined(HAVE_LIBSWSCALE_TREE)) */
......@@ -136,7 +136,7 @@ struct decoder_sys_t
int i_align;
/* Misc */
#ifdef HAVE_LIBSWSCALE_SWSCALE_H
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_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_LIBSWSCALE_SWSCALE_H
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_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_LIBSWSCALE_SWSCALE_H
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_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_LIBSWSCALE_SWSCALE_H
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_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_LIBSWSCALE_SWSCALE_H
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_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_LIBSWSCALE_SWSCALE_H
#if defined(HAVE_LIBSWSCALE_SWSCALE_H) || defined(HAVE_FFMPEG_SWSCALE_H)
video_format_t fmt_in;
picture_t *p_pic, *p_dest;
......
......@@ -38,7 +38,9 @@
#include <vlc_network.h>
#define HAVE_MMX
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#if defined(HAVE_LIBAVCODEC_AVCODEC_H)
# include <libavcodec/avcodec.h>
#elif defined(HAVE_FFMPEG_AVCODEC_H)
# include <ffmpeg/avcodec.h>
#else
# include <avcodec.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