video.c \
audio.c \
deinterlace.c \
+ avutil.h \
fourcc.h \
chroma.h \
$(NULL)
avformat.c \
avformat.h \
demux.c \
+ avutil.h \
fourcc.h \
chroma.h \
$(NULL)
#include "avcodec.h"
#include "fourcc.h"
+#include "avutil.h"
/*****************************************************************************
* decoder_sys_t: decoder descriptor
free( p_sys );
}
-/*****************************************************************************
- *
- *****************************************************************************/
-void LibavcodecCallback( void *p_opaque, int i_level,
- const char *psz_format, va_list va )
-{
- int i_vlc_level;
- AVCodecContext *p_avctx = (AVCodecContext *)p_opaque;
- AVClass *p_avc;
- vlc_object_t *p_this;
- char *psz_new_format;
- const char *psz_item_name;
-
- p_avc = p_avctx ? p_avctx->av_class : 0;
-
-#define cln p_avc->class_name
- /* Make sure we can get p_this back */
- if( !p_avctx || !p_avc || !cln ||
- cln[0]!='A' || cln[1]!='V' || cln[2]!='C' || cln[3]!='o' ||
- cln[4]!='d' || cln[5]!='e' || cln[6]!='c' )
- {
- if( i_level == AV_LOG_ERROR ) vfprintf( stderr, psz_format, va );
- return;
- }
-#undef cln
-
- p_this = (vlc_object_t *)p_avctx->opaque;
-
- switch( i_level )
- {
- case AV_LOG_QUIET:
- i_vlc_level = VLC_MSG_ERR;
- break;
- case AV_LOG_ERROR:
- i_vlc_level = VLC_MSG_WARN;
- break;
- case AV_LOG_INFO:
- i_vlc_level = VLC_MSG_DBG;
- break;
- case AV_LOG_DEBUG:
- /* Print debug messages if they were requested */
- if( p_avctx->debug ) vfprintf( stderr, psz_format, va );
- return;
- default:
- return;
- }
-
- psz_item_name = p_avc->item_name(p_opaque);
- psz_new_format = malloc( strlen(psz_format) + strlen(psz_item_name)
- + 18 + 5 );
- snprintf( psz_new_format, strlen(psz_format) + strlen(psz_item_name)
- + 18 + 5, "%s (%s@%p)", psz_format, p_avc->item_name(p_opaque), p_opaque );
- msg_GenericVa( p_this, i_vlc_level,
- MODULE_STRING, psz_new_format, va );
- free( psz_new_format );
-}
-
void InitLibavcodec( vlc_object_t *p_object )
{
static int b_ffmpeginit = 0;
{
avcodec_init();
avcodec_register_all();
- av_log_set_callback( LibavcodecCallback );
+ av_log_set_callback( LibavutilCallback );
b_ffmpeginit = 1;
msg_Dbg( p_object, "libavcodec initialized (interface %d )",
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#include <vlc_codecs.h> /* BITMAPINFOHEADER */
-
picture_t * DecodeVideo ( decoder_t *, block_t ** );
aout_buffer_t * DecodeAudio( decoder_t *, block_t ** );
#include <vlc_codec.h>
/* ffmpeg header */
-#define HAVE_MMX 1
-#ifdef HAVE_LIBAVCODEC_AVCODEC_H
-# include <libavcodec/avcodec.h>
-#elif defined(HAVE_FFMPEG_AVCODEC_H)
-# include <ffmpeg/avcodec.h>
-#else
-# include <avcodec.h>
-#endif
-
-#if LIBAVCODEC_BUILD < 5000
-# error You must have a libavcodec >= 5000 (get CVS)
+#ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
+# include <libavformat/avformat.h>
+#elif defined(HAVE_FFMPEG_AVFORMAT_H)
+# include <ffmpeg/avformat.h>
#endif
#include "avformat.h"
set_callbacks( OpenMux, CloseMux );
#endif
vlc_module_end();
-
-/*****************************************************************************
- *
- *****************************************************************************/
-void LibavcodecCallback( void *p_opaque, int i_level,
- const char *psz_format, va_list va )
-{
- int i_vlc_level;
- AVCodecContext *p_avctx = (AVCodecContext *)p_opaque;
- AVClass *p_avc;
- vlc_object_t *p_this;
- char *psz_new_format;
- const char *psz_item_name;
-
- p_avc = p_avctx ? p_avctx->av_class : 0;
-
-#define cln p_avc->class_name
- /* Make sure we can get p_this back */
- if( !p_avctx || !p_avc || !cln ||
- cln[0]!='A' || cln[1]!='V' || cln[2]!='C' || cln[3]!='o' ||
- cln[4]!='d' || cln[5]!='e' || cln[6]!='c' )
- {
- if( i_level == AV_LOG_ERROR ) vfprintf( stderr, psz_format, va );
- return;
- }
-#undef cln
-
- p_this = (vlc_object_t *)p_avctx->opaque;
-
- switch( i_level )
- {
- case AV_LOG_QUIET:
- i_vlc_level = VLC_MSG_ERR;
- break;
- case AV_LOG_ERROR:
- i_vlc_level = VLC_MSG_WARN;
- break;
- case AV_LOG_INFO:
- i_vlc_level = VLC_MSG_DBG;
- break;
- case AV_LOG_DEBUG:
- /* Print debug messages if they were requested */
- if( p_avctx->debug ) vfprintf( stderr, psz_format, va );
- return;
- default:
- return;
- }
-
- psz_item_name = p_avc->item_name(p_opaque);
- psz_new_format = malloc( strlen(psz_format) + strlen(psz_item_name)
- + 18 + 5 );
- snprintf( psz_new_format, strlen(psz_format) + strlen(psz_item_name)
- + 18 + 5, "%s (%s@%p)", psz_format, p_avc->item_name(p_opaque), p_opaque );
- msg_GenericVa( p_this, i_vlc_level,
- MODULE_STRING, psz_new_format, va );
- free( psz_new_format );
-}
-
-void InitLibavcodec( vlc_object_t *p_object )
-{
- static int b_ffmpeginit = 0;
- vlc_mutex_t *lock = var_AcquireMutex( "avcodec" );
-
- /* *** init ffmpeg library (libavcodec) *** */
- if( !b_ffmpeginit )
- {
- avcodec_init();
- avcodec_register_all();
- av_log_set_callback( LibavcodecCallback );
- b_ffmpeginit = 1;
-
- msg_Dbg( p_object, "libavcodec initialized (interface %d )",
- LIBAVCODEC_VERSION_INT );
- }
- else
- {
- msg_Dbg( p_object, "libavcodec already initialized" );
- }
-
- vlc_mutex_unlock( lock );
-}
--- /dev/null
+/*****************************************************************************
+ * avutil.h: avutil helper functions
+ *****************************************************************************
+ * Copyright (C) 1999-2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Laurent Aimar <fenrir@via.ecp.fr>
+ * Gildas Bazin <gbazin@videolan.org>
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Export libavutil messages to the VLC message system
+ *****************************************************************************/
+void LibavutilCallback( void *p_opaque, int i_level,
+ const char *psz_format, va_list va )
+{
+ int i_vlc_level;
+ AVCodecContext *p_avctx = (AVCodecContext *)p_opaque;
+ AVClass *p_avc;
+ vlc_object_t *p_this;
+ char *psz_new_format;
+ const char *psz_item_name;
+
+ p_avc = p_avctx ? p_avctx->av_class : 0;
+
+#define cln p_avc->class_name
+ /* Make sure we can get p_this back */
+ if( !p_avctx || !p_avc || !cln ||
+ cln[0]!='A' || cln[1]!='V' || cln[2]!='C' || cln[3]!='o' ||
+ cln[4]!='d' || cln[5]!='e' || cln[6]!='c' )
+ {
+ if( i_level == AV_LOG_ERROR ) vfprintf( stderr, psz_format, va );
+ return;
+ }
+#undef cln
+
+ p_this = (vlc_object_t *)p_avctx->opaque;
+
+ switch( i_level )
+ {
+ case AV_LOG_QUIET:
+ i_vlc_level = VLC_MSG_ERR;
+ break;
+ case AV_LOG_ERROR:
+ i_vlc_level = VLC_MSG_WARN;
+ break;
+ case AV_LOG_INFO:
+ i_vlc_level = VLC_MSG_DBG;
+ break;
+ case AV_LOG_DEBUG:
+ /* Print debug messages if they were requested */
+ if( p_avctx->debug ) vfprintf( stderr, psz_format, va );
+ return;
+ default:
+ return;
+ }
+
+ psz_item_name = p_avc->item_name(p_opaque);
+ psz_new_format = malloc( strlen(psz_format) + strlen(psz_item_name)
+ + 18 + 5 );
+ snprintf( psz_new_format, strlen(psz_format) + strlen(psz_item_name)
+ + 18 + 5, "%s (%s@%p)", psz_format, p_avc->item_name(p_opaque), p_opaque );
+ msg_GenericVa( p_this, i_vlc_level,
+ MODULE_STRING, psz_new_format, va );
+ free( psz_new_format );
+}
/*****************************************************************************
- * ffmpeg.c: video decoder using ffmpeg library
+ * imageresample.c: scaling and chroma conversion using the old libavcodec API
*****************************************************************************
* Copyright (C) 1999-2001 the VideoLAN team
* $Id$
#include <vlc_plugin.h>
#include <vlc_codec.h>
-/* ffmpeg header */
-#define HAVE_MMX 1
-#ifdef HAVE_LIBAVCODEC_AVCODEC_H
-# include <libavcodec/avcodec.h>
-#elif defined(HAVE_FFMPEG_AVCODEC_H)
-# include <ffmpeg/avcodec.h>
-#else
-# include <avcodec.h>
-#endif
-
-#if LIBAVCODEC_BUILD < 5000
-# error You must have a libavcodec >= 5000 (get CVS)
-#endif
-
#include "imgresample.h"
-/****************************************************************************
- * Local prototypes
- ****************************************************************************/
-static const int pi_mode_values[] = { 0, 1, 2, 4, 8, 5, 6, 9, 10 };
-static const char *const ppsz_mode_descriptions[] =
-{ N_("Fast bilinear"), N_("Bilinear"), N_("Bicubic (good quality)"),
- N_("Experimental"), N_("Nearest neighbour (bad quality)"),
- N_("Area"), N_("Luma bicubic / chroma bilinear"), N_("Gauss"),
- N_("SincR"), N_("Lanczos"), N_("Bicubic spline") };
-
/*****************************************************************************
* Module descriptor
*****************************************************************************/
#include "avformat.h"
#include "fourcc.h"
+#include "avutil.h"
//#define AVFORMAT_DEBUG 1
-/* Version checking */
-#if defined(HAVE_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_FFMPEG_AVFORMAT_H)
-
static const char *const ppsz_mux_options[] = {
"mux", NULL
};
/* Should we call it only once ? */
av_register_all();
- av_log_set_callback( LibavcodecCallback );
+ av_log_set_callback( LibavutilCallback );
config_ChainParse( p_mux, "ffmpeg-", ppsz_mux_options, p_mux->p_cfg );
}
codec = stream->codec;
- /* This is used by LibavcodecCallback (ffmpeg.c) to print messages */
+ /* This is used by LibavutilCallback (avutil.h) to print messages */
codec->opaque = (void*)p_mux;
switch( p_input->p_fmt->i_cat )
return 0;
}
-
-#endif /* HAVE_FFMPEG_AVFORMAT_H */
* Local prototypes
****************************************************************************/
static const int pi_mode_values[] = { 0, 1, 2, 4, 8, 5, 6, 9, 10 };
-static const char *const ppsz_mode_descriptions[] =
+const char *const ppsz_mode_descriptions[] =
{ N_("Fast bilinear"), N_("Bilinear"), N_("Bicubic (good quality)"),
N_("Experimental"), N_("Nearest neighbour (bad quality)"),
N_("Area"), N_("Luma bicubic / chroma bilinear"), N_("Gauss"),
#include <vlc_codec.h>
#include <vlc_vout.h>
#include <vlc_input.h> /* hmmm, just for INPUT_RATE_DEFAULT */
+#include <vlc_codecs.h> /* BITMAPINFOHEADER */
/* ffmpeg header */
#ifdef HAVE_LIBAVCODEC_AVCODEC_H