Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
Steve Lhomme
VLC
Commits
81cdf729
Commit
81cdf729
authored
Sep 11, 2014
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec: remove useless indirection to The Context
parent
c9a16c71
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
44 deletions
+45
-44
modules/codec/avcodec/audio.c
modules/codec/avcodec/audio.c
+2
-2
modules/codec/avcodec/video.c
modules/codec/avcodec/video.c
+43
-42
No files found.
modules/codec/avcodec/audio.c
View file @
81cdf729
...
@@ -266,7 +266,7 @@ int InitAudioDec( decoder_t *p_dec, AVCodecContext *p_context,
...
@@ -266,7 +266,7 @@ int InitAudioDec( decoder_t *p_dec, AVCodecContext *p_context,
/* ***** Open the codec ***** */
/* ***** Open the codec ***** */
if
(
OpenAudioCodec
(
p_dec
)
<
0
)
if
(
OpenAudioCodec
(
p_dec
)
<
0
)
{
{
av_free
(
p_sys
->
p_context
->
extradata
);
av_free
(
p_context
->
extradata
);
free
(
p_sys
);
free
(
p_sys
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
...
...
modules/codec/avcodec/video.c
View file @
81cdf729
...
@@ -281,54 +281,55 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
...
@@ -281,54 +281,55 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
vlc_sem_init
(
&
p_sys
->
sem_mt
,
0
);
vlc_sem_init
(
&
p_sys
->
sem_mt
,
0
);
/* ***** Fill p_context with init values ***** */
/* ***** Fill p_context with init values ***** */
p_sys
->
p_context
->
codec_tag
=
ffmpeg_CodecTag
(
p_dec
->
fmt_in
.
i_original_fourcc
?:
p_dec
->
fmt_in
.
i_codec
);
p_context
->
codec_tag
=
ffmpeg_CodecTag
(
p_dec
->
fmt_in
.
i_original_fourcc
?:
p_dec
->
fmt_in
.
i_codec
);
/* ***** Get configuration of ffmpeg plugin ***** */
/* ***** Get configuration of ffmpeg plugin ***** */
p_sys
->
p_context
->
workaround_bugs
=
p_context
->
workaround_bugs
=
var_InheritInteger
(
p_dec
,
"avcodec-workaround-bugs"
);
var_InheritInteger
(
p_dec
,
"avcodec-workaround-bugs"
);
p_sys
->
p_context
->
err_recognition
=
p_context
->
err_recognition
=
var_InheritInteger
(
p_dec
,
"avcodec-error-resilience"
);
var_InheritInteger
(
p_dec
,
"avcodec-error-resilience"
);
if
(
var_CreateGetBool
(
p_dec
,
"grayscale"
)
)
if
(
var_CreateGetBool
(
p_dec
,
"grayscale"
)
)
p_sys
->
p_context
->
flags
|=
CODEC_FLAG_GRAY
;
p_context
->
flags
|=
CODEC_FLAG_GRAY
;
/* ***** Output always the frames ***** */
/* ***** Output always the frames ***** */
#if LIBAVCODEC_VERSION_CHECK(55, 23, 1, 40, 101)
#if LIBAVCODEC_VERSION_CHECK(55, 23, 1, 40, 101)
p_sys
->
p_context
->
flags
|=
CODEC_FLAG_OUTPUT_CORRUPT
;
p_context
->
flags
|=
CODEC_FLAG_OUTPUT_CORRUPT
;
#endif
#endif
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-vismv"
);
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-vismv"
);
if
(
i_val
)
p_sys
->
p_context
->
debug_mv
=
i_val
;
if
(
i_val
)
p_context
->
debug_mv
=
i_val
;
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-skiploopfilter"
);
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-skiploopfilter"
);
if
(
i_val
>=
4
)
p_sys
->
p_context
->
skip_loop_filter
=
AVDISCARD_ALL
;
if
(
i_val
>=
4
)
p_context
->
skip_loop_filter
=
AVDISCARD_ALL
;
else
if
(
i_val
==
3
)
p_sys
->
p_context
->
skip_loop_filter
=
AVDISCARD_NONKEY
;
else
if
(
i_val
==
3
)
p_context
->
skip_loop_filter
=
AVDISCARD_NONKEY
;
else
if
(
i_val
==
2
)
p_sys
->
p_context
->
skip_loop_filter
=
AVDISCARD_BIDIR
;
else
if
(
i_val
==
2
)
p_context
->
skip_loop_filter
=
AVDISCARD_BIDIR
;
else
if
(
i_val
==
1
)
p_sys
->
p_context
->
skip_loop_filter
=
AVDISCARD_NONREF
;
else
if
(
i_val
==
1
)
p_context
->
skip_loop_filter
=
AVDISCARD_NONREF
;
if
(
var_CreateGetBool
(
p_dec
,
"avcodec-fast"
)
)
if
(
var_CreateGetBool
(
p_dec
,
"avcodec-fast"
)
)
p_sys
->
p_context
->
flags2
|=
CODEC_FLAG2_FAST
;
p_context
->
flags2
|=
CODEC_FLAG2_FAST
;
/* ***** libavcodec frame skipping ***** */
/* ***** libavcodec frame skipping ***** */
p_sys
->
b_hurry_up
=
var_CreateGetBool
(
p_dec
,
"avcodec-hurry-up"
);
p_sys
->
b_hurry_up
=
var_CreateGetBool
(
p_dec
,
"avcodec-hurry-up"
);
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-skip-frame"
);
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-skip-frame"
);
if
(
i_val
>=
4
)
p_sys
->
p_context
->
skip_frame
=
AVDISCARD_ALL
;
if
(
i_val
>=
4
)
p_context
->
skip_frame
=
AVDISCARD_ALL
;
else
if
(
i_val
==
3
)
p_sys
->
p_context
->
skip_frame
=
AVDISCARD_NONKEY
;
else
if
(
i_val
==
3
)
p_context
->
skip_frame
=
AVDISCARD_NONKEY
;
else
if
(
i_val
==
2
)
p_sys
->
p_context
->
skip_frame
=
AVDISCARD_BIDIR
;
else
if
(
i_val
==
2
)
p_context
->
skip_frame
=
AVDISCARD_BIDIR
;
else
if
(
i_val
==
1
)
p_sys
->
p_context
->
skip_frame
=
AVDISCARD_NONREF
;
else
if
(
i_val
==
1
)
p_context
->
skip_frame
=
AVDISCARD_NONREF
;
else
if
(
i_val
==
-
1
)
p_sys
->
p_context
->
skip_frame
=
AVDISCARD_NONE
;
else
if
(
i_val
==
-
1
)
p_context
->
skip_frame
=
AVDISCARD_NONE
;
else
p_sys
->
p_context
->
skip_frame
=
AVDISCARD_DEFAULT
;
else
p_context
->
skip_frame
=
AVDISCARD_DEFAULT
;
p_sys
->
i_skip_frame
=
p_sys
->
p_context
->
skip_frame
;
p_sys
->
i_skip_frame
=
p_context
->
skip_frame
;
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-skip-idct"
);
i_val
=
var_CreateGetInteger
(
p_dec
,
"avcodec-skip-idct"
);
if
(
i_val
>=
4
)
p_sys
->
p_context
->
skip_idct
=
AVDISCARD_ALL
;
if
(
i_val
>=
4
)
p_context
->
skip_idct
=
AVDISCARD_ALL
;
else
if
(
i_val
==
3
)
p_sys
->
p_context
->
skip_idct
=
AVDISCARD_NONKEY
;
else
if
(
i_val
==
3
)
p_context
->
skip_idct
=
AVDISCARD_NONKEY
;
else
if
(
i_val
==
2
)
p_sys
->
p_context
->
skip_idct
=
AVDISCARD_BIDIR
;
else
if
(
i_val
==
2
)
p_context
->
skip_idct
=
AVDISCARD_BIDIR
;
else
if
(
i_val
==
1
)
p_sys
->
p_context
->
skip_idct
=
AVDISCARD_NONREF
;
else
if
(
i_val
==
1
)
p_context
->
skip_idct
=
AVDISCARD_NONREF
;
else
if
(
i_val
==
-
1
)
p_sys
->
p_context
->
skip_idct
=
AVDISCARD_NONE
;
else
if
(
i_val
==
-
1
)
p_context
->
skip_idct
=
AVDISCARD_NONE
;
else
p_sys
->
p_context
->
skip_idct
=
AVDISCARD_DEFAULT
;
else
p_context
->
skip_idct
=
AVDISCARD_DEFAULT
;
p_sys
->
i_skip_idct
=
p_sys
->
p_context
->
skip_idct
;
p_sys
->
i_skip_idct
=
p_context
->
skip_idct
;
/* ***** libavcodec direct rendering ***** */
/* ***** libavcodec direct rendering ***** */
p_sys
->
b_direct_rendering
=
false
;
p_sys
->
b_direct_rendering
=
false
;
...
@@ -338,7 +339,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
...
@@ -338,7 +339,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
/* No idea why ... but this fixes flickering on some TSCC streams */
/* No idea why ... but this fixes flickering on some TSCC streams */
p_sys
->
i_codec_id
!=
AV_CODEC_ID_TSCC
&&
p_sys
->
i_codec_id
!=
AV_CODEC_ID_CSCD
&&
p_sys
->
i_codec_id
!=
AV_CODEC_ID_TSCC
&&
p_sys
->
i_codec_id
!=
AV_CODEC_ID_CSCD
&&
p_sys
->
i_codec_id
!=
AV_CODEC_ID_CINEPAK
&&
p_sys
->
i_codec_id
!=
AV_CODEC_ID_CINEPAK
&&
!
p_
sys
->
p_
context
->
debug_mv
)
!
p_context
->
debug_mv
)
{
{
/* Some codecs set pix_fmt only after the 1st frame has been decoded,
/* Some codecs set pix_fmt only after the 1st frame has been decoded,
* so we need to do another check in ffmpeg_GetFrameBuf() */
* so we need to do another check in ffmpeg_GetFrameBuf() */
...
@@ -350,24 +351,24 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
...
@@ -350,24 +351,24 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
if
(
p_sys
->
b_direct_rendering
)
if
(
p_sys
->
b_direct_rendering
)
{
{
msg_Dbg
(
p_dec
,
"trying to use direct rendering"
);
msg_Dbg
(
p_dec
,
"trying to use direct rendering"
);
p_sys
->
p_context
->
flags
|=
CODEC_FLAG_EMU_EDGE
;
p_context
->
flags
|=
CODEC_FLAG_EMU_EDGE
;
}
}
else
else
{
{
msg_Dbg
(
p_dec
,
"direct rendering is disabled"
);
msg_Dbg
(
p_dec
,
"direct rendering is disabled"
);
}
}
p_sys
->
p_context
->
get_format
=
ffmpeg_GetFormat
;
p_context
->
get_format
=
ffmpeg_GetFormat
;
/* Always use our get_buffer wrapper so we can calculate the
/* Always use our get_buffer wrapper so we can calculate the
* PTS correctly */
* PTS correctly */
#if LIBAVCODEC_VERSION_MAJOR >= 55
#if LIBAVCODEC_VERSION_MAJOR >= 55
p_sys
->
p_context
->
get_buffer2
=
lavc_GetFrame
;
p_context
->
get_buffer2
=
lavc_GetFrame
;
#else
#else
p_sys
->
p_context
->
get_buffer
=
ffmpeg_GetFrameBuf
;
p_context
->
get_buffer
=
ffmpeg_GetFrameBuf
;
p_sys
->
p_context
->
reget_buffer
=
avcodec_default_reget_buffer
;
p_context
->
reget_buffer
=
avcodec_default_reget_buffer
;
p_sys
->
p_context
->
release_buffer
=
ffmpeg_ReleaseFrameBuf
;
p_context
->
release_buffer
=
ffmpeg_ReleaseFrameBuf
;
#endif
#endif
p_sys
->
p_context
->
opaque
=
p_dec
;
p_context
->
opaque
=
p_dec
;
#ifdef HAVE_AVCODEC_MT
#ifdef HAVE_AVCODEC_MT
int
i_thread_count
=
var_InheritInteger
(
p_dec
,
"avcodec-threads"
);
int
i_thread_count
=
var_InheritInteger
(
p_dec
,
"avcodec-threads"
);
...
@@ -382,24 +383,24 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
...
@@ -382,24 +383,24 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
}
}
i_thread_count
=
__MIN
(
i_thread_count
,
16
);
i_thread_count
=
__MIN
(
i_thread_count
,
16
);
msg_Dbg
(
p_dec
,
"allowing %d thread(s) for decoding"
,
i_thread_count
);
msg_Dbg
(
p_dec
,
"allowing %d thread(s) for decoding"
,
i_thread_count
);
p_sys
->
p_context
->
thread_count
=
i_thread_count
;
p_context
->
thread_count
=
i_thread_count
;
p_sys
->
p_context
->
thread_safe_callbacks
=
true
;
p_context
->
thread_safe_callbacks
=
true
;
switch
(
i_codec_id
)
switch
(
i_codec_id
)
{
{
case
AV_CODEC_ID_MPEG4
:
case
AV_CODEC_ID_MPEG4
:
case
AV_CODEC_ID_H263
:
case
AV_CODEC_ID_H263
:
p_sys
->
p_context
->
thread_type
=
0
;
p_context
->
thread_type
=
0
;
break
;
break
;
case
AV_CODEC_ID_MPEG1VIDEO
:
case
AV_CODEC_ID_MPEG1VIDEO
:
case
AV_CODEC_ID_MPEG2VIDEO
:
case
AV_CODEC_ID_MPEG2VIDEO
:
p_sys
->
p_context
->
thread_type
&=
~
FF_THREAD_SLICE
;
p_context
->
thread_type
&=
~
FF_THREAD_SLICE
;
/* fall through */
/* fall through */
# if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 1, 0))
# if (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 1, 0))
case
AV_CODEC_ID_H264
:
case
AV_CODEC_ID_H264
:
case
AV_CODEC_ID_VC1
:
case
AV_CODEC_ID_VC1
:
case
AV_CODEC_ID_WMV3
:
case
AV_CODEC_ID_WMV3
:
p_sys
->
p_context
->
thread_type
&=
~
FF_THREAD_FRAME
;
p_context
->
thread_type
&=
~
FF_THREAD_FRAME
;
# endif
# endif
}
}
...
@@ -413,13 +414,13 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
...
@@ -413,13 +414,13 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
if
(
avcodec_hw
==
NULL
||
strcasecmp
(
avcodec_hw
,
"none"
)
)
if
(
avcodec_hw
==
NULL
||
strcasecmp
(
avcodec_hw
,
"none"
)
)
{
{
msg_Warn
(
p_dec
,
"threaded frame decoding is not compatible with DXVA2, disabled"
);
msg_Warn
(
p_dec
,
"threaded frame decoding is not compatible with DXVA2, disabled"
);
p_sys
->
p_context
->
thread_type
&=
~
FF_THREAD_FRAME
;
p_context
->
thread_type
&=
~
FF_THREAD_FRAME
;
}
}
free
(
avcodec_hw
);
free
(
avcodec_hw
);
# endif
# endif
if
(
p_sys
->
p_context
->
thread_type
&
FF_THREAD_FRAME
)
if
(
p_context
->
thread_type
&
FF_THREAD_FRAME
)
p_dec
->
i_extra_picture_buffers
=
2
*
p_sys
->
p_context
->
thread_count
;
p_dec
->
i_extra_picture_buffers
=
2
*
p_context
->
thread_count
;
#endif
#endif
/* ***** misc init ***** */
/* ***** misc init ***** */
...
...
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