Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
8f24e725
Commit
8f24e725
authored
Jan 29, 2012
by
Rafaël Carré
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec: update to libavcodec 54
parent
4c3037ac
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
123 additions
and
42 deletions
+123
-42
modules/codec/avcodec/audio.c
modules/codec/avcodec/audio.c
+27
-25
modules/codec/avcodec/avcodec.c
modules/codec/avcodec/avcodec.c
+10
-0
modules/codec/avcodec/avcodec.h
modules/codec/avcodec/avcodec.h
+36
-0
modules/codec/avcodec/encoder.c
modules/codec/avcodec/encoder.c
+22
-8
modules/codec/avcodec/subtitle.c
modules/codec/avcodec/subtitle.c
+7
-1
modules/codec/avcodec/video.c
modules/codec/avcodec/video.c
+21
-8
No files found.
modules/codec/avcodec/audio.c
View file @
8f24e725
...
...
@@ -41,6 +41,8 @@
# include <avcodec.h>
#endif
#include "libavutil/audioconvert.h"
#include "avcodec.h"
/*****************************************************************************
...
...
@@ -415,24 +417,24 @@ void GetVlcAudioFormat( vlc_fourcc_t *pi_codec, unsigned *pi_bits, int i_sample_
{
switch
(
i_sample_fmt
)
{
case
SAMPLE_FMT_U8
:
case
AV_
SAMPLE_FMT_U8
:
*
pi_codec
=
VLC_CODEC_U8
;
*
pi_bits
=
8
;
break
;
case
SAMPLE_FMT_S32
:
case
AV_
SAMPLE_FMT_S32
:
*
pi_codec
=
VLC_CODEC_S32N
;
*
pi_bits
=
32
;
break
;
case
SAMPLE_FMT_FLT
:
case
AV_
SAMPLE_FMT_FLT
:
*
pi_codec
=
VLC_CODEC_FL32
;
*
pi_bits
=
32
;
break
;
case
SAMPLE_FMT_DBL
:
case
AV_
SAMPLE_FMT_DBL
:
*
pi_codec
=
VLC_CODEC_FL64
;
*
pi_bits
=
64
;
break
;
case
SAMPLE_FMT_S16
:
case
AV_
SAMPLE_FMT_S16
:
default:
*
pi_codec
=
VLC_CODEC_S16N
;
*
pi_bits
=
16
;
...
...
@@ -442,26 +444,26 @@ void GetVlcAudioFormat( vlc_fourcc_t *pi_codec, unsigned *pi_bits, int i_sample_
static
const
uint64_t
pi_channels_map
[][
2
]
=
{
{
CH_FRONT_LEFT
,
AOUT_CHAN_LEFT
},
{
CH_FRONT_RIGHT
,
AOUT_CHAN_RIGHT
},
{
CH_FRONT_CENTER
,
AOUT_CHAN_CENTER
},
{
CH_LOW_FREQUENCY
,
AOUT_CHAN_LFE
},
{
CH_BACK_LEFT
,
AOUT_CHAN_REARLEFT
},
{
CH_BACK_RIGHT
,
AOUT_CHAN_REARRIGHT
},
{
CH_FRONT_LEFT_OF_CENTER
,
0
},
{
CH_FRONT_RIGHT_OF_CENTER
,
0
},
{
CH_BACK_CENTER
,
AOUT_CHAN_REARCENTER
},
{
CH_SIDE_LEFT
,
AOUT_CHAN_MIDDLELEFT
},
{
CH_SIDE_RIGHT
,
AOUT_CHAN_MIDDLERIGHT
},
{
CH_TOP_CENTER
,
0
},
{
CH_TOP_FRONT_LEFT
,
0
},
{
CH_TOP_FRONT_CENTER
,
0
},
{
CH_TOP_FRONT_RIGHT
,
0
},
{
CH_TOP_BACK_LEFT
,
0
},
{
CH_TOP_BACK_CENTER
,
0
},
{
CH_TOP_BACK_RIGHT
,
0
},
{
CH_STEREO_LEFT
,
0
},
{
CH_STEREO_RIGHT
,
0
},
{
AV_
CH_FRONT_LEFT
,
AOUT_CHAN_LEFT
},
{
AV_
CH_FRONT_RIGHT
,
AOUT_CHAN_RIGHT
},
{
AV_
CH_FRONT_CENTER
,
AOUT_CHAN_CENTER
},
{
AV_
CH_LOW_FREQUENCY
,
AOUT_CHAN_LFE
},
{
AV_
CH_BACK_LEFT
,
AOUT_CHAN_REARLEFT
},
{
AV_
CH_BACK_RIGHT
,
AOUT_CHAN_REARRIGHT
},
{
AV_
CH_FRONT_LEFT_OF_CENTER
,
0
},
{
AV_
CH_FRONT_RIGHT_OF_CENTER
,
0
},
{
AV_
CH_BACK_CENTER
,
AOUT_CHAN_REARCENTER
},
{
AV_
CH_SIDE_LEFT
,
AOUT_CHAN_MIDDLELEFT
},
{
AV_
CH_SIDE_RIGHT
,
AOUT_CHAN_MIDDLERIGHT
},
{
AV_
CH_TOP_CENTER
,
0
},
{
AV_
CH_TOP_FRONT_LEFT
,
0
},
{
AV_
CH_TOP_FRONT_CENTER
,
0
},
{
AV_
CH_TOP_FRONT_RIGHT
,
0
},
{
AV_
CH_TOP_BACK_LEFT
,
0
},
{
AV_
CH_TOP_BACK_CENTER
,
0
},
{
AV_
CH_TOP_BACK_RIGHT
,
0
},
{
AV_
CH_STEREO_LEFT
,
0
},
{
AV_
CH_STEREO_RIGHT
,
0
},
};
static
void
SetupOutputFormat
(
decoder_t
*
p_dec
,
bool
b_trust
)
...
...
modules/codec/avcodec/avcodec.c
View file @
8f24e725
...
...
@@ -262,7 +262,11 @@ static int OpenDecoder( vlc_object_t *p_this )
}
/* *** 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
,
"ffmpeg-debug"
);
...
...
@@ -390,7 +394,9 @@ void InitLibavcodec( vlc_object_t *p_object )
/* *** init ffmpeg library (libavcodec) *** */
if
(
!
b_ffmpeginit
)
{
#if LIBAVCODEC_VERSION_MAJOR < 54
avcodec_init
();
#endif
avcodec_register_all
();
av_log_set_callback
(
LibavutilCallback
);
b_ffmpeginit
=
true
;
...
...
@@ -442,7 +448,11 @@ int ffmpeg_OpenCodec( decoder_t *p_dec )
}
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
;
...
...
modules/codec/avcodec/avcodec.h
View file @
8f24e725
...
...
@@ -309,6 +309,42 @@ int ffmpeg_OpenCodec( decoder_t *p_dec );
# define AVMEDIA_TYPE_ATTACHMENT CODEC_TYPE_ATTACHMENT
#endif
#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 SAMPLE_FMT_NONE AV_SAMPLE_FMT_NONE
# define SAMPLE_FMT_U8 AV_SAMPLE_FMT_U8
# define SAMPLE_FMT_S16 AV_SAMPLE_FMT_S16
# define SAMPLE_FMT_S32 AV_SAMPLE_FMT_S32
# define SAMPLE_FMT_FLT AV_SAMPLE_FMT_FLT
# define SAMPLE_FMT_DBL AV_SAMPLE_FMT_DBL
# define CH_FRONT_LEFT AV_CH_FRONT_LEFT
# define CH_FRONT_RIGHT AV_CH_FRONT_RIGHT
# define CH_FRONT_CENTER AV_CH_FRONT_CENTER
# define CH_LOW_FREQUENCY AV_CH_LOW_FREQUENCY
# define CH_BACK_LEFT AV_CH_BACK_LEFT
# define CH_BACK_RIGHT AV_CH_BACK_RIGHT
# define CH_FRONT_LEFT_OF_CENTER AV_CH_FRONT_LEFT_OF_CENTER
# define CH_FRONT_RIGHT_OF_CENTER AV_CH_FRONT_RIGHT_OF_CENTER
# define CH_BACK_CENTER AV_CH_BACK_CENTER
# define CH_SIDE_LEFT AV_CH_SIDE_LEFT
# define CH_SIDE_RIGHT AV_CH_SIDE_RIGHT
# define CH_TOP_CENTER AV_CH_TOP_CENTER
# define CH_TOP_FRONT_LEFT AV_CH_TOP_FRONT_LEFT
# define CH_TOP_FRONT_CENTER AV_CH_TOP_FRONT_CENTER
# define CH_TOP_FRONT_RIGHT AV_CH_TOP_FRONT_RIGHT
# define CH_TOP_BACK_LEFT AV_CH_TOP_BACK_LEFT
# define CH_TOP_BACK_CENTER AV_CH_TOP_BACK_CENTER
# define CH_TOP_BACK_RIGHT AV_CH_TOP_BACK_RIGHT
# define CH_STEREO_LEFT AV_CH_STEREO_LEFT
# define CH_STEREO_RIGHT AV_CH_STEREO_RIGHT
#endif
#ifndef AV_PKT_FLAG_KEY
# define AV_PKT_FLAG_KEY PKT_FLAG_KEY
#endif
modules/codec/avcodec/encoder.c
View file @
8f24e725
...
...
@@ -304,7 +304,12 @@ int OpenEncoder( vlc_object_t *p_this )
p_sys
->
p_buffer_out
=
NULL
;
p_sys
->
i_buffer_out
=
0
;
p_sys
->
p_context
=
p_context
=
avcodec_alloc_context
();
#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
,
"ffmpeg-debug"
);
p_context
->
opaque
=
(
void
*
)
p_this
;
...
...
@@ -604,7 +609,7 @@ int OpenEncoder( vlc_object_t *p_this )
p_context
->
codec_type
=
AVMEDIA_TYPE_AUDIO
;
p_context
->
sample_fmt
=
p_codec
->
sample_fmts
?
p_codec
->
sample_fmts
[
0
]
:
SAMPLE_FMT_S16
;
AV_
SAMPLE_FMT_S16
;
p_enc
->
fmt_in
.
i_codec
=
VLC_CODEC_S16N
;
p_context
->
sample_rate
=
p_enc
->
fmt_out
.
audio
.
i_rate
;
p_context
->
time_base
.
num
=
1
;
...
...
@@ -694,7 +699,11 @@ int OpenEncoder( vlc_object_t *p_this )
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
)
{
...
...
@@ -748,7 +757,11 @@ int OpenEncoder( vlc_object_t *p_this )
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
)
{
...
...
@@ -929,7 +942,7 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict )
if
(
current_date
+
HURRY_UP_GUARD1
>
frame
.
pts
)
{
frame
.
pict_type
=
FF_P_TYPE
;
frame
.
pict_type
=
AV_PICTURE_TYPE_P
;
/* msg_Dbg( p_enc, "hurry up mode 1 %lld", current_date + HURRY_UP_GUARD1 - frame.pts ); */
}
}
...
...
@@ -1015,8 +1028,8 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict )
}
/* End work-around */
if
(
p_sys
->
p_context
->
coded_frame
->
pict_type
!=
FF_I_TYPE
&&
p_sys
->
p_context
->
coded_frame
->
pict_type
!=
FF_P_TYPE
)
if
(
p_sys
->
p_context
->
coded_frame
->
pict_type
!=
AV_PICTURE_TYPE_I
&&
p_sys
->
p_context
->
coded_frame
->
pict_type
!=
AV_PICTURE_TYPE_P
)
{
p_block
->
i_dts
=
p_block
->
i_pts
;
}
...
...
@@ -1044,15 +1057,16 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict )
switch
(
p_sys
->
p_context
->
coded_frame
->
pict_type
)
{
case
FF_I_TYPE
:
case
AV_PICTURE_TYPE_I
:
p_block
->
i_flags
|=
BLOCK_FLAG_TYPE_I
;
break
;
case
FF_P_TYPE
:
case
AV_PICTURE_TYPE_P
:
p_block
->
i_flags
|=
BLOCK_FLAG_TYPE_P
;
break
;
case
FF_B_TYPE
:
case
AV_PICTURE_TYPE_B
:
p_block
->
i_flags
|=
BLOCK_FLAG_TYPE_B
;
break
;
}
return
p_block
;
...
...
modules/codec/avcodec/subtitle.c
View file @
8f24e725
...
...
@@ -90,8 +90,14 @@ int InitSubtitleDec(decoder_t *dec, AVCodecContext *context,
context
->
extradata
=
NULL
;
/* */
int
ret
;
vlc_avcodec_lock
();
if
(
avcodec_open
(
context
,
codec
)
<
0
)
{
#if LIBAVCODEC_VERSION_MAJOR < 54
ret
=
avcodec_open
(
context
,
codec
);
#else
ret
=
avcodec_open2
(
context
,
codec
,
NULL
/* options */
);
#endif
if
(
ret
<
0
)
{
vlc_avcodec_unlock
();
msg_Err
(
dec
,
"cannot open codec (%s)"
,
namecodec
);
free
(
context
->
extradata
);
...
...
modules/codec/avcodec/video.c
View file @
8f24e725
...
...
@@ -94,8 +94,13 @@ struct decoder_sys_t
/* Hack to force display of still pictures */
bool
b_first_frame
;
/* */
#if LIBAVCODEC_VERSION_MAJOR < 54
AVPaletteControl
palette
;
#else
# warning FIXME
#endif
/* */
bool
b_flush
;
...
...
@@ -114,9 +119,6 @@ struct decoder_sys_t
# define post_mt(s)
#endif
/* FIXME (dummy palette for now) */
static
const
AVPaletteControl
palette_control
;
/*****************************************************************************
* Local prototypes
*****************************************************************************/
...
...
@@ -233,8 +235,12 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
/* ***** Get configuration of ffmpeg plugin ***** */
p_sys
->
p_context
->
workaround_bugs
=
var_InheritInteger
(
p_dec
,
"ffmpeg-workaround-bugs"
);
#if LIBAVCODEC_VERSION_MAJOR < 54
p_sys
->
p_context
->
error_recognition
=
var_InheritInteger
(
p_dec
,
"ffmpeg-error-resilience"
);
#else
# warning FIXME (moved to AVFormat)
#endif
if
(
var_CreateGetBool
(
p_dec
,
"grayscale"
)
)
p_sys
->
p_context
->
flags
|=
CODEC_FLAG_GRAY
;
...
...
@@ -400,6 +406,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
}
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
)
...
...
@@ -429,6 +436,9 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
{
p_sys
->
p_context
->
palctrl
=
&
p_sys
->
palette
;
}
#else
# warning FIXME
#endif
/* ***** init this codec with special data ***** */
ffmpeg_InitCodec
(
p_dec
);
...
...
@@ -650,7 +660,7 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
}
/* Sanity check (seems to be needed for some streams) */
if
(
p_sys
->
p_ff_pic
->
pict_type
==
FF_B_TYPE
)
if
(
p_sys
->
p_ff_pic
->
pict_type
==
AV_PICTURE_TYPE_B
)
{
p_sys
->
b_has_b_frames
=
true
;
}
...
...
@@ -983,8 +993,10 @@ static int ffmpeg_GetFrameBuf( struct AVCodecContext *p_context,
/* */
p_ff_pic
->
type
=
FF_BUFFER_TYPE_USER
;
/* FIXME what is that, should give good value */
p_ff_pic
->
age
=
256
*
256
*
256
*
64
;
// FIXME FIXME from ffmpeg
#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
)
)
{
...
...
@@ -1074,8 +1086,9 @@ static int ffmpeg_GetFrameBuf( struct AVCodecContext *p_context,
p_ff_pic
->
linesize
[
2
]
=
p_pic
->
p
[
2
].
i_pitch
;
p_ff_pic
->
linesize
[
3
]
=
0
;
/* FIXME what is that, should give good value */
p_ff_pic
->
age
=
256
*
256
*
256
*
64
;
// FIXME FIXME from ffmpeg
#if LIBAVCODEC_VERSION_MAJOR < 54
p_ff_pic
->
age
=
256
*
256
*
256
*
64
;
#endif
post_mt
(
p_sys
);
return
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment