#include "chroma.h"
#include "avcommon.h"
-#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT( 53, 34, 0 )
-# error You must update libavcodec to a version >= 53.34.0
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT( 54, 25, 0 )
+# error You must update libavcodec to a version >= 54.25.0
#endif
/*****************************************************************************
}
/* *** get a p_context *** */
-#if LIBAVCODEC_VERSION_MAJOR >= 54
p_context = avcodec_alloc_context3(p_codec);
-#else
- p_context = avcodec_alloc_context();
-#endif
if( !p_context )
return VLC_ENOMEM;
p_context->debug = var_InheritInteger( p_dec, "avcodec-debug" );
}
int ret;
vlc_avcodec_lock();
-#if LIBAVCODEC_VERSION_MAJOR >= 54
ret = avcodec_open2( p_sys->p_context, p_sys->p_codec, NULL /* options */ );
-#else
- ret = avcodec_open( p_sys->p_context, p_sys->p_codec );
-#endif
vlc_avcodec_unlock();
if( ret < 0 )
return VLC_EGENERIC;
#define LIBAVCODEC_VERSION_CHECK( a, b, c, d, e ) \
(LIBAVCODEC_VERSION_MICRO < 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \
(LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, d, e ) )
-
-
-#if LIBAVCODEC_VERSION_MAJOR < 54
-# define AV_PICTURE_TYPE_B FF_B_TYPE
-# define AV_PICTURE_TYPE_I FF_I_TYPE
-# define AV_PICTURE_TYPE_P FF_P_TYPE
-
-# define AV_SAMPLE_FMT_NONE SAMPLE_FMT_NONE
-# define AV_SAMPLE_FMT_U8 SAMPLE_FMT_U8
-# define AV_SAMPLE_FMT_S16 SAMPLE_FMT_S16
-# define AV_SAMPLE_FMT_S32 SAMPLE_FMT_S32
-# define AV_SAMPLE_FMT_FLT SAMPLE_FMT_FLT
-# define AV_SAMPLE_FMT_DBL SAMPLE_FMT_DBL
-
-#ifndef AV_CH_FRONT_LEFT
-# define AV_CH_FRONT_LEFT CH_FRONT_LEFT
-#endif
-#ifndef AV_CH_FRONT_RIGHT
-# define AV_CH_FRONT_RIGHT CH_FRONT_RIGHT
-#endif
-#ifndef AV_CH_FRONT_CENTER
-# define AV_CH_FRONT_CENTER CH_FRONT_CENTER
-#endif
-#ifndef AV_CH_LOW_FREQUENCY
-# define AV_CH_LOW_FREQUENCY CH_LOW_FREQUENCY
-#endif
-#ifndef AV_CH_BACK_LEFT
-# define AV_CH_BACK_LEFT CH_BACK_LEFT
-#endif
-#ifndef AV_CH_BACK_RIGHT
-# define AV_CH_BACK_RIGHT CH_BACK_RIGHT
-#endif
-#ifndef AV_CH_FRONT_LEFT_OF_CENTER
-# define AV_CH_FRONT_LEFT_OF_CENTER CH_FRONT_LEFT_OF_CENTER
-#endif
-#ifndef AV_CH_FRONT_RIGHT_OF_CENTER
-# define AV_CH_FRONT_RIGHT_OF_CENTER CH_FRONT_RIGHT_OF_CENTER
-#endif
-#ifndef AV_CH_BACK_CENTER
-# define AV_CH_BACK_CENTER CH_BACK_CENTER
-#endif
-#ifndef AV_CH_SIDE_LEFT
-# define AV_CH_SIDE_LEFT CH_SIDE_LEFT
-#endif
-#ifndef AV_CH_SIDE_RIGHT
-# define AV_CH_SIDE_RIGHT CH_SIDE_RIGHT
-#endif
-#ifndef AV_CH_TOP_CENTER
-# define AV_CH_TOP_CENTER CH_TOP_CENTER
-#endif
-#ifndef AV_CH_TOP_FRONT_LEFT
-# define AV_CH_TOP_FRONT_LEFT CH_TOP_FRONT_LEFT
-#endif
-#ifndef AV_CH_TOP_FRONT_CENTER
-# define AV_CH_TOP_FRONT_CENTER CH_TOP_FRONT_CENTER
-#endif
-#ifndef AV_CH_TOP_FRONT_RIGHT
-# define AV_CH_TOP_FRONT_RIGHT CH_TOP_FRONT_RIGHT
-#endif
-#ifndef AV_CH_TOP_BACK_LEFT
-# define AV_CH_TOP_BACK_LEFT CH_TOP_BACK_LEFT
-#endif
-#ifndef AV_CH_TOP_BACK_CENTER
-# define AV_CH_TOP_BACK_CENTER CH_TOP_BACK_CENTER
-#endif
-#ifndef AV_CH_TOP_BACK_RIGHT
-# define AV_CH_TOP_BACK_RIGHT CH_TOP_BACK_RIGHT
-#endif
-#ifndef AV_CH_STEREO_LEFT
-# define AV_CH_STEREO_LEFT CH_STEREO_LEFT
-#endif
-#ifndef AV_CH_STEREO_RIGHT
-# define AV_CH_STEREO_RIGHT CH_STEREO_RIGHT
-#endif
-
-#endif /* LIBAVCODEC_VERSION_MAJOR < 54 */
static inline void vlc_init_avcodec(void)
{
vlc_avcodec_lock();
-
-#if LIBAVCODEC_VERSION_MAJOR < 54
- avcodec_init();
-#endif
avcodec_register_all();
-
vlc_avcodec_unlock();
}
#endif
p_sys->p_buffer = NULL;
p_sys->i_buffer_out = 0;
-#if LIBAVCODEC_VERSION_MAJOR < 54
- p_context = avcodec_alloc_context();
-#else
p_context = avcodec_alloc_context3(p_codec);
-#endif
p_sys->p_context = p_context;
p_sys->p_context->codec_id = p_sys->p_codec->id;
p_context->debug = var_InheritInteger( p_enc, "avcodec-debug" );
#endif
else if( !strncmp( psz_val, "ltp", 3 ) )
p_sys->i_aac_profile = FF_PROFILE_AAC_LTP;
-#if LIBAVCODEC_VERSION_CHECK( 54, 19, 0, 35, 100 )
/* These require libavcodec with libfdk-aac */
else if( !strncmp( psz_val, "hev2", 4 ) )
p_sys->i_aac_profile = FF_PROFILE_AAC_HE_V2;
else if( !strncmp( psz_val, "hev1", 4 ) )
p_sys->i_aac_profile = FF_PROFILE_AAC_HE;
-#endif
else
{
msg_Warn( p_enc, "unknown AAC profile requested, setting it to low" );
int ret;
vlc_avcodec_lock();
-#if LIBAVCODEC_VERSION_MAJOR < 54
- ret = avcodec_open( p_context, p_codec );
-#else
ret = avcodec_open2( p_context, p_codec, NULL /* options */ );
-#endif
vlc_avcodec_unlock();
if( ret )
{
p_context->codec = NULL;
vlc_avcodec_lock();
-#if LIBAVCODEC_VERSION_MAJOR < 54
- ret = avcodec_open( p_context, p_codec );
-#else
ret = avcodec_open2( p_context, p_codec, NULL /* options */ );
-#endif
vlc_avcodec_unlock();
if( ret )
{
{ VLC_CODEC_VBLE, CODEC_ID_VBLE, VIDEO_ES },
-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 1, 0 )
{ VLC_CODEC_CDXL, CODEC_ID_CDXL, VIDEO_ES },
-#endif
{ VLC_CODEC_UTVIDEO, CODEC_ID_UTVIDEO, VIDEO_ES },
-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 53, 42, 0 )
{ VLC_CODEC_DXTORY, CODEC_ID_DXTORY, VIDEO_ES },
-#endif
-#if LIBAVCODEC_VERSION_CHECK( 54, 16, 0, 27, 100 )
{ VLC_CODEC_MSS1, CODEC_ID_MSS1, VIDEO_ES },
-#endif
-#if LIBAVCODEC_VERSION_CHECK( 54, 17, 0, 32, 100 )
{ VLC_CODEC_MSA1, CODEC_ID_MSA1, VIDEO_ES },
-#endif
-#if LIBAVCODEC_VERSION_CHECK( 54, 18, 0, 34, 100 )
{ VLC_CODEC_TSC2, CODEC_ID_TSCC2, VIDEO_ES },
-#endif
-#if LIBAVCODEC_VERSION_CHECK( 54, 20, 0, 37, 100 )
{ VLC_CODEC_MTS2, CODEC_ID_MTS2, VIDEO_ES },
-#endif
#if LIBAVCODEC_VERSION_CHECK( 54, 27, 0, 55, 100 )
{ VLC_CODEC_MSS2, AV_CODEC_ID_MSS2, VIDEO_ES },
{ VLC_CODEC_TRUEHD, CODEC_ID_TRUEHD, AUDIO_ES },
{ VLC_CODEC_MLP, CODEC_ID_MLP, AUDIO_ES },
-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 5, 0 )
{ VLC_CODEC_WMAL, CODEC_ID_WMALOSSLESS, AUDIO_ES },
-#endif
-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 12, 0 )
{ VLC_CODEC_RALF, CODEC_ID_RALF, AUDIO_ES },
-#endif
-#if LIBAVCODEC_VERSION_CHECK( 54, 14, 0, 26, 100 )
{ VLC_CODEC_INDEO_AUDIO, CODEC_ID_IAC, AUDIO_ES },
-#endif
/* PCM */
{ VLC_CODEC_S8, CODEC_ID_PCM_S8, AUDIO_ES },
/* */
int ret;
vlc_avcodec_lock();
-#if LIBAVCODEC_VERSION_MAJOR < 54
- ret = avcodec_open(context, codec);
-#else
ret = avcodec_open2(context, codec, NULL /* options */);
-#endif
vlc_avcodec_unlock();
if (ret < 0) {
msg_Err(dec, "cannot open codec (%s)", namecodec);
/* */
-#if LIBAVCODEC_VERSION_MAJOR < 54
- AVPaletteControl palette;
-#else
-# warning FIXME
-#endif
+ //AVPaletteControl palette;
+#warning FIXME
/* */
bool b_flush;
/* ***** Get configuration of ffmpeg plugin ***** */
p_sys->p_context->workaround_bugs =
var_InheritInteger( p_dec, "avcodec-workaround-bugs" );
-#if LIBAVCODEC_VERSION_MAJOR < 54
- p_sys->p_context->error_recognition =
-#else
p_sys->p_context->err_recognition =
-#endif
var_InheritInteger( p_dec, "avcodec-error-resilience" );
if( var_CreateGetBool( p_dec, "grayscale" ) )
}
p_dec->fmt_out.i_codec = p_dec->fmt_out.video.i_chroma;
-#if LIBAVCODEC_VERSION_MAJOR < 54
/* Setup palette */
- memset( &p_sys->palette, 0, sizeof(p_sys->palette) );
- if( p_dec->fmt_in.video.p_palette )
- {
- p_sys->palette.palette_changed = 1;
-
- for( int i = 0; i < __MIN( AVPALETTE_COUNT, p_dec->fmt_in.video.p_palette->i_entries ); i++ )
- {
- union {
- uint32_t u;
- uint8_t a[4];
- } c;
- c.a[0] = p_dec->fmt_in.video.p_palette->palette[i][0];
- c.a[1] = p_dec->fmt_in.video.p_palette->palette[i][1];
- c.a[2] = p_dec->fmt_in.video.p_palette->palette[i][2];
- c.a[3] = p_dec->fmt_in.video.p_palette->palette[i][3];
-
- p_sys->palette.palette[i] = c.u;
- }
- p_sys->p_context->palctrl = &p_sys->palette;
-
- p_dec->fmt_out.video.p_palette = malloc( sizeof(video_palette_t) );
- if( p_dec->fmt_out.video.p_palette )
- *p_dec->fmt_out.video.p_palette = *p_dec->fmt_in.video.p_palette;
- }
- else if( p_sys->i_codec_id != CODEC_ID_MSVIDEO1 && p_sys->i_codec_id != CODEC_ID_CINEPAK )
- {
- p_sys->p_context->palctrl = &p_sys->palette;
- }
-#else
# warning FIXME
-#endif
/* ***** init this codec with special data ***** */
ffmpeg_InitCodec( p_dec );
/* */
p_ff_pic->type = FF_BUFFER_TYPE_USER;
-#if LIBAVCODEC_VERSION_MAJOR < 54
- p_ff_pic->age = 256*256*256*64;
-#endif
-
if( vlc_va_Get( p_sys->p_va, p_ff_pic ) )
{
msg_Err( p_dec, "VaGrabSurface failed" );
p_ff_pic->linesize[2] = p_pic->p[2].i_pitch;
p_ff_pic->linesize[3] = 0;
-#if LIBAVCODEC_VERSION_MAJOR < 54
- p_ff_pic->age = 256*256*256*64;
-#endif
-
post_mt( p_sys );
return 0;
fmt.video.i_width = cc->width;
fmt.video.i_height = cc->height;
-#if LIBAVCODEC_VERSION_MAJOR < 54
- if( cc->palctrl )
- {
- fmt.video.p_palette = malloc( sizeof(video_palette_t) );
- *fmt.video.p_palette = *(video_palette_t *)cc->palctrl;
- }
-#else
# warning FIXME: implement palette transmission
-#endif
psz_type = "video";
fmt.video.i_frame_rate = cc->time_base.den;
fmt.video.i_frame_rate_base = cc->time_base.num * __MAX( cc->ticks_per_frame, 1 );
QSCALE_TEXT, QSCALE_LONGTEXT, true )
add_bool( SOUT_CFG_PREFIX "mute-audio", true,
AUDIO_TEXT, AUDIO_LONGTEXT, true )
-#if LIBAVCODEC_VERSION_MAJOR >= 54
add_string( SOUT_CFG_PREFIX "options", NULL,
AV_OPTIONS_TEXT, AV_OPTIONS_LONGTEXT, true )
-#endif
vlc_module_end ()
static const char *const ppsz_sout_options[] = {
int i_fd;
int i_cmd, i_old_cmd;
-#if LIBAVCODEC_VERSION_MAJOR >= 54
AVDictionary *options;
-#endif
};
struct sout_stream_id_t
p_stream->pf_send = Send;
p_stream->p_sys = p_sys;
-#if LIBAVCODEC_VERSION_MAJOR >= 54
char *psz_opts = var_InheritString( p_stream, SOUT_CFG_PREFIX "options" );
if (psz_opts && *psz_opts) {
p_sys->options = vlc_av_get_options(psz_opts);
p_sys->options = NULL;
}
free(psz_opts);
-#endif
return VLC_SUCCESS;
}
sout_stream_t *p_stream = (sout_stream_t *)p_this;
sout_stream_sys_t *p_sys = p_stream->p_sys;
-#if LIBAVCODEC_VERSION_MAJOR >= 54
av_dict_free( &p_sys->options );
-#endif
-
free( p_sys );
}
return NULL;
}
-#if LIBAVCODEC_VERSION_MAJOR < 54
- id->ff_enc_c = avcodec_alloc_context();
-#else
id->ff_enc_c = avcodec_alloc_context3( id->ff_enc );
-#endif
id->ff_enc_c->dsp_mask = GetVlcDspMask();
id->ff_enc_c->sample_rate = p_fmt->audio.i_rate;
id->ff_enc_c->time_base.num = 1;
id->ff_enc_c->bit_rate = p_fmt->i_bitrate;
int ret;
-#if LIBAVCODEC_VERSION_MAJOR >= 54
AVDictionary *options = NULL;
if (p_sys->options)
av_dict_copy(&options, p_sys->options, 0);
msg_Err( p_stream, "Unknown option \"%s\"", t->key );
}
av_dict_free(&options);
-#else
- vlc_avcodec_lock();
- ret = avcodec_open( id->ff_enc_c, id->ff_enc );
- vlc_avcodec_unlock();
-#endif
if (ret)
{
return 0;
}
-#if LIBAVCODEC_VERSION_MAJOR < 54
- id->ff_enc_c = avcodec_alloc_context();
-#else
id->ff_enc_c = avcodec_alloc_context3( id->ff_enc );
-#endif
id->ff_enc_c->dsp_mask = GetVlcDspMask();
id->ff_enc_c->width = p_sys->p_pictures[p_sys->i_cmd-1].format.i_width;
id->ff_enc_c->height = p_sys->p_pictures[p_sys->i_cmd-1].format.i_height;
vlc_avcodec_lock();
int ret;
-#if LIBAVCODEC_VERSION_MAJOR >= 54
AVDictionary *options = NULL;
if (p_sys->options)
av_dict_copy(&options, p_sys->options, 0);
ret = avcodec_open2( id->ff_enc_c, id->ff_enc, options ? &options : NULL );
-#else
- ret = avcodec_open( id->ff_enc_c, id->ff_enc );
-#endif
vlc_avcodec_unlock();
-#if LIBAVCODEC_VERSION_MAJOR >= 54
+
AVDictionaryEntry *t = NULL;
while ((t = av_dict_get(options, "", t, AV_DICT_IGNORE_SUFFIX))) {
msg_Err( p_stream, "Unknown option \"%s\"", t->key );
}
av_dict_free(&options);
-#endif
+
if (ret)
{
msg_Err( p_stream, "cannot open encoder" );