[vlc-devel] [PATCH] New mpg123 decoder
Felix Paul Kühne
fkuehne at videolan.org
Fri Nov 28 13:35:08 CET 2014
Hey Ludo,
three remarks, two inlined.
1) When starting playback, the first buffer I hear from my speaker is a strong static noise. Afterwards, playback is fine. Can you check that?
> On 25 Nov 2014, at 17:57, Ludovic Fauvet <etix at videolan.org> wrote:
>
> ---
> NEWS | 1 +
> configure.ac | 5 +
> modules/MODULES_LIST | 1 +
> modules/codec/Makefile.am | 7 +
> modules/codec/mpg123.c | 318 ++++++++++++++++++++++++++++++++++++++++++++++
> 5 files changed, 332 insertions(+)
> create mode 100644 modules/codec/mpg123.c
>
> diff --git a/NEWS b/NEWS
> index d109573..1ef4da7 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -20,6 +20,7 @@ Decoder:
> * Important improvements for the MMAL decoder and output for rPI
> * Support HEVC hardware decoding using OMX and MediaCodec
> * Support VP9 and WMV3 decoding using OMX and performance improvements
> + * New MPEG-1 & 2 audio layer I, II, III + MPEG 2.5 decoder
2) .. “based on libmpg123"
> +/****************************************************************************
> + * DecodeBlock: the whole thing
> + ****************************************************************************/
> +static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
> +{
[snip]
> + /* Configure the output */
> + p_dec->fmt_out.audio.i_frame_length = p_block->i_nb_samples = mpg123_spf( p_sys->p_handle );
> + p_dec->fmt_out.audio.i_bytes_per_frame = mpg123_outblock( p_sys->p_handle );
> + p_dec->fmt_out.i_bitrate = p_sys->frame_info.bitrate * 1000;
> +
> + switch( p_sys->frame_info.mode )
> + {
> + case MPG123_M_STEREO:
> + case MPG123_M_JOINT:
> + p_dec->fmt_out.audio.i_original_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
> + break;
> + case MPG123_M_DUAL:
> + p_dec->fmt_out.audio.i_original_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT
> + | AOUT_CHAN_DUALMONO;
> + break;
> + case MPG123_M_MONO:
> + p_dec->fmt_out.audio.i_original_channels = AOUT_CHAN_CENTER;
> + break;
> + default:
> + msg_Err( p_dec, "Unknown mode");
> + block_Release( p_block );
> + return NULL;
> + }
> +
> + p_dec->fmt_out.audio.i_physical_channels =
> + p_dec->fmt_out.audio.i_original_channels & AOUT_CHAN_PHYSMASK;
I might miss something obvious here, but are you sure that you need to set this info for every single packet you decode?
Cheers,
Felix
More information about the vlc-devel
mailing list