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
97103745
Commit
97103745
authored
Nov 29, 2014
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mpeg_audio: compile fake decoder only if mad is present
parent
ac5caa2c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
34 deletions
+45
-34
modules/codec/Makefile.am
modules/codec/Makefile.am
+4
-0
modules/codec/mpeg_audio.c
modules/codec/mpeg_audio.c
+41
-34
No files found.
modules/codec/Makefile.am
View file @
97103745
...
@@ -54,7 +54,11 @@ liblpcm_plugin_la_SOURCES = codec/lpcm.c
...
@@ -54,7 +54,11 @@ liblpcm_plugin_la_SOURCES = codec/lpcm.c
codec_LTLIBRARIES
+=
liblpcm_plugin.la
codec_LTLIBRARIES
+=
liblpcm_plugin.la
libmpeg_audio_plugin_la_SOURCES
=
codec/mpeg_audio.c
libmpeg_audio_plugin_la_SOURCES
=
codec/mpeg_audio.c
libmpeg_audio_plugin_la_CPPFLAGS
=
$(AM_CPPFLAGS)
codec_LTLIBRARIES
+=
libmpeg_audio_plugin.la
codec_LTLIBRARIES
+=
libmpeg_audio_plugin.la
if
HAVE_MAD
libmpeg_audio_plugin_la_CPPFLAGS
+=
-DHAVE_MPGA_FILTER
endif
libuleaddvaudio_plugin_la_SOURCES
=
codec/uleaddvaudio.c
libuleaddvaudio_plugin_la_SOURCES
=
codec/uleaddvaudio.c
codec_LTLIBRARIES
+=
libuleaddvaudio_plugin.la
codec_LTLIBRARIES
+=
libuleaddvaudio_plugin.la
...
...
modules/codec/mpeg_audio.c
View file @
97103745
...
@@ -47,9 +47,10 @@
...
@@ -47,9 +47,10 @@
*****************************************************************************/
*****************************************************************************/
struct
decoder_sys_t
struct
decoder_sys_t
{
{
#ifdef HAVE_MPGA_FILTER
/* Module mode */
/* Module mode */
bool
b_packetizer
;
bool
b_packetizer
;
#endif
/*
/*
* Input properties
* Input properties
*/
*/
...
@@ -84,15 +85,16 @@ struct decoder_sys_t
...
@@ -84,15 +85,16 @@ struct decoder_sys_t
/****************************************************************************
/****************************************************************************
* Local prototypes
* Local prototypes
****************************************************************************/
****************************************************************************/
#ifdef HAVE_MPGA_FILTER
static
int
OpenDecoder
(
vlc_object_t
*
);
static
int
OpenDecoder
(
vlc_object_t
*
);
static
int
OpenPacketizer
(
vlc_object_t
*
);
static
block_t
*
GetAoutBuffer
(
decoder_t
*
);
static
void
CloseDecoder
(
vlc_object_t
*
);
#endif
static
int
Open
(
vlc_object_t
*
);
static
block_t
*
DecodeBlock
(
decoder_t
*
,
block_t
**
);
static
block_t
*
DecodeBlock
(
decoder_t
*
,
block_t
**
);
static
uint8_t
*
GetOutBuffer
(
decoder_t
*
,
block_t
**
);
static
uint8_t
*
GetOutBuffer
(
decoder_t
*
,
block_t
**
);
static
block_t
*
GetAoutBuffer
(
decoder_t
*
);
static
block_t
*
GetSoutBuffer
(
decoder_t
*
);
static
block_t
*
GetSoutBuffer
(
decoder_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
int
SyncInfo
(
uint32_t
i_header
,
unsigned
int
*
pi_channels
,
static
int
SyncInfo
(
uint32_t
i_header
,
unsigned
int
*
pi_channels
,
unsigned
int
*
pi_channels_conf
,
unsigned
int
*
pi_channels_conf
,
unsigned
int
*
pi_sample_rate
,
unsigned
int
*
pi_bit_rate
,
unsigned
int
*
pi_sample_rate
,
unsigned
int
*
pi_bit_rate
,
...
@@ -104,16 +106,17 @@ static int SyncInfo( uint32_t i_header, unsigned int * pi_channels,
...
@@ -104,16 +106,17 @@ static int SyncInfo( uint32_t i_header, unsigned int * pi_channels,
* Module descriptor
* Module descriptor
*****************************************************************************/
*****************************************************************************/
vlc_module_begin
()
vlc_module_begin
()
set_description
(
N_
(
"MPEG audio layer I/II/III decoder"
)
)
set_category
(
CAT_INPUT
)
set_category
(
CAT_INPUT
)
set_subcategory
(
SUBCAT_INPUT_ACODEC
)
set_subcategory
(
SUBCAT_INPUT_ACODEC
)
set_capability
(
"decoder"
,
100
)
set_callbacks
(
OpenDecoder
,
CloseDecoder
)
add_submodule
()
set_description
(
N_
(
"MPEG audio layer I/II/III packetizer"
)
)
set_description
(
N_
(
"MPEG audio layer I/II/III packetizer"
)
)
set_capability
(
"packetizer"
,
10
)
set_capability
(
"packetizer"
,
10
)
set_callbacks
(
OpenPacketizer
,
CloseDecoder
)
set_callbacks
(
Open
,
Close
)
#ifdef HAVE_MPGA_FILTER
add_submodule
()
set_description
(
N_
(
"MPEG audio layer I/II/III decoder"
)
)
set_capability
(
"decoder"
,
100
)
set_callbacks
(
OpenDecoder
,
Close
)
#endif
vlc_module_end
()
vlc_module_end
()
/*****************************************************************************
/*****************************************************************************
...
@@ -136,7 +139,9 @@ static int Open( vlc_object_t *p_this )
...
@@ -136,7 +139,9 @@ static int Open( vlc_object_t *p_this )
return
VLC_ENOMEM
;
return
VLC_ENOMEM
;
/* Misc init */
/* Misc init */
p_sys
->
b_packetizer
=
false
;
#ifdef HAVE_MPGA_FILTER
p_sys
->
b_packetizer
=
true
;
#endif
p_sys
->
i_state
=
STATE_NOSYNC
;
p_sys
->
i_state
=
STATE_NOSYNC
;
date_Set
(
&
p_sys
->
end_date
,
0
);
date_Set
(
&
p_sys
->
end_date
,
0
);
block_BytestreamInit
(
&
p_sys
->
bytestream
);
block_BytestreamInit
(
&
p_sys
->
bytestream
);
...
@@ -158,25 +163,23 @@ static int Open( vlc_object_t *p_this )
...
@@ -158,25 +163,23 @@ static int Open( vlc_object_t *p_this )
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
#ifdef HAVE_MPGA_FILTER
static
int
OpenDecoder
(
vlc_object_t
*
p_this
)
static
int
OpenDecoder
(
vlc_object_t
*
p_this
)
{
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
/* HACK: Don't use this codec if we don't have an mpga audio filter */
/* HACK: Don't use this codec if we don't have an mpga audio filter */
if
(
!
module_exists
(
"mad"
)
)
if
(
!
module_exists
(
"mad"
)
)
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
return
Open
(
p_this
);
}
static
int
OpenPacketizer
(
vlc_object_t
*
p_this
)
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
int
i_ret
=
Open
(
p_this
);
int
i_ret
=
Open
(
p_this
);
if
(
i_ret
!=
VLC_SUCCESS
)
return
i_ret
;
if
(
i_ret
==
VLC_SUCCESS
)
p_dec
->
p_sys
->
b_packetizer
=
true
;
p_dec
->
p_sys
->
b_packetizer
=
false
;
return
VLC_SUCCESS
;
return
i_ret
;
}
}
#endif
/****************************************************************************
/****************************************************************************
* DecodeBlock: the whole thing
* DecodeBlock: the whole thing
...
@@ -455,6 +458,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
...
@@ -455,6 +458,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
return
NULL
;
return
NULL
;
}
}
#ifdef HAVE_MPGA_FILTER
/* Get beginning of next frame for libmad */
/* Get beginning of next frame for libmad */
if
(
!
p_sys
->
b_packetizer
)
if
(
!
p_sys
->
b_packetizer
)
{
{
...
@@ -462,7 +466,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
...
@@ -462,7 +466,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
memcpy
(
p_buf
+
p_sys
->
i_frame_size
,
memcpy
(
p_buf
+
p_sys
->
i_frame_size
,
p_header
,
MAD_BUFFER_GUARD
);
p_header
,
MAD_BUFFER_GUARD
);
}
}
#endif
p_sys
->
i_state
=
STATE_NOSYNC
;
p_sys
->
i_state
=
STATE_NOSYNC
;
/* Make sure we don't reuse the same pts twice */
/* Make sure we don't reuse the same pts twice */
...
@@ -512,22 +516,24 @@ static uint8_t *GetOutBuffer( decoder_t *p_dec, block_t **pp_out_buffer )
...
@@ -512,22 +516,24 @@ static uint8_t *GetOutBuffer( decoder_t *p_dec, block_t **pp_out_buffer )
p_dec
->
fmt_out
.
i_bitrate
=
p_sys
->
i_bit_rate
*
1000
;
p_dec
->
fmt_out
.
i_bitrate
=
p_sys
->
i_bit_rate
*
1000
;
if
(
p_sys
->
b_packetizer
)
#ifdef HAVE_MPGA_FILTER
{
if
(
!
p_sys
->
b_packetizer
)
block_t
*
p_sout_buffer
=
GetSoutBuffer
(
p_dec
);
p_buf
=
p_sout_buffer
?
p_sout_buffer
->
p_buffer
:
NULL
;
*
pp_out_buffer
=
p_sout_buffer
;
}
else
{
{
block_t
*
p_aout_buffer
=
GetAoutBuffer
(
p_dec
);
block_t
*
p_aout_buffer
=
GetAoutBuffer
(
p_dec
);
p_buf
=
p_aout_buffer
?
p_aout_buffer
->
p_buffer
:
NULL
;
p_buf
=
p_aout_buffer
?
p_aout_buffer
->
p_buffer
:
NULL
;
*
pp_out_buffer
=
p_aout_buffer
;
*
pp_out_buffer
=
p_aout_buffer
;
}
}
else
#endif
{
block_t
*
p_sout_buffer
=
GetSoutBuffer
(
p_dec
);
p_buf
=
p_sout_buffer
?
p_sout_buffer
->
p_buffer
:
NULL
;
*
pp_out_buffer
=
p_sout_buffer
;
}
return
p_buf
;
return
p_buf
;
}
}
#ifdef HAVE_MPGA_FILTER
/*****************************************************************************
/*****************************************************************************
* GetAoutBuffer:
* GetAoutBuffer:
*****************************************************************************/
*****************************************************************************/
...
@@ -551,6 +557,7 @@ static block_t *GetAoutBuffer( decoder_t *p_dec )
...
@@ -551,6 +557,7 @@ static block_t *GetAoutBuffer( decoder_t *p_dec )
return
p_buf
;
return
p_buf
;
}
}
#endif
/*****************************************************************************
/*****************************************************************************
* GetSoutBuffer:
* GetSoutBuffer:
...
@@ -572,9 +579,9 @@ static block_t *GetSoutBuffer( decoder_t *p_dec )
...
@@ -572,9 +579,9 @@ static block_t *GetSoutBuffer( decoder_t *p_dec )
}
}
/*****************************************************************************
/*****************************************************************************
* Close
Decoder
: clean up the decoder
* Close: clean up the decoder
*****************************************************************************/
*****************************************************************************/
static
void
Close
Decoder
(
vlc_object_t
*
p_this
)
static
void
Close
(
vlc_object_t
*
p_this
)
{
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
decoder_sys_t
*
p_sys
=
p_dec
->
p_sys
;
decoder_sys_t
*
p_sys
=
p_dec
->
p_sys
;
...
...
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