[vlc-commits] codec: speex: prepare to put pf_packetize and pf_decode into a union
Zhao Zhili
git at videolan.org
Tue Jun 19 11:26:39 CEST 2018
vlc | branch: master | Zhao Zhili <quinkblack at foxmail.com> | Fri Jun 8 17:47:15 2018 +0800| [ff9487367016c1bec3abc82fa909f16d46f9e17e] | committer: Thomas Guillem
codec: speex: prepare to put pf_packetize and pf_decode into a union
Signed-off-by: Thomas Guillem <thomas at gllm.fr>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ff9487367016c1bec3abc82fa909f16d46f9e17e
---
modules/codec/speex.c | 65 ++++++++++++++++++++++++++-------------------------
1 file changed, 33 insertions(+), 32 deletions(-)
diff --git a/modules/codec/speex.c b/modules/codec/speex.c
index bf3f0d5620..ef44d3562a 100644
--- a/modules/codec/speex.c
+++ b/modules/codec/speex.c
@@ -191,10 +191,7 @@ static block_t *SendPacket( decoder_t *, block_t * );
static void ParseSpeexComments( decoder_t *, ogg_packet * );
-/*****************************************************************************
- * OpenDecoder: probe the decoder and return score
- *****************************************************************************/
-static int OpenDecoder( vlc_object_t *p_this )
+static int OpenCommon( vlc_object_t *p_this, bool b_packetizer )
{
decoder_t *p_dec = (decoder_t*)p_this;
decoder_sys_t *p_sys;
@@ -206,32 +203,39 @@ static int OpenDecoder( vlc_object_t *p_this )
if( ( p_dec->p_sys = p_sys = malloc(sizeof(decoder_sys_t)) ) == NULL )
return VLC_ENOMEM;
p_sys->bits.buf_size = 0;
- p_sys->b_packetizer = false;
+ p_sys->b_packetizer = b_packetizer;
p_sys->rtp_rate = p_dec->fmt_in.audio.i_rate;
p_sys->b_has_headers = false;
date_Set( &p_sys->end_date, VLC_TS_INVALID );
- /* Set output properties */
- p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
-
- /*
- Set callbacks
- If the codec is spxr then this decoder is
- being invoked on a Speex stream arriving via RTP.
- A special decoder callback is used.
- */
- if (p_dec->fmt_in.i_original_fourcc == VLC_FOURCC('s', 'p', 'x', 'r'))
+ if( b_packetizer )
{
- msg_Dbg( p_dec, "Using RTP version of Speex decoder @ rate %d.",
- p_dec->fmt_in.audio.i_rate );
- p_dec->pf_decode = DecodeRtpSpeexPacket;
+ p_dec->fmt_out.i_codec = VLC_CODEC_SPEEX;
+ p_dec->pf_packetize = Packetize;
}
else
{
- p_dec->pf_decode = DecodeAudio;
+ /* Set output properties */
+ p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
+
+ /*
+ Set callbacks
+ If the codec is spxr then this decoder is
+ being invoked on a Speex stream arriving via RTP.
+ A special decoder callback is used.
+ */
+ if (p_dec->fmt_in.i_original_fourcc == VLC_FOURCC('s', 'p', 'x', 'r'))
+ {
+ msg_Dbg( p_dec, "Using RTP version of Speex decoder @ rate %d.",
+ p_dec->fmt_in.audio.i_rate );
+ p_dec->pf_decode = DecodeRtpSpeexPacket;
+ }
+ else
+ {
+ p_dec->pf_decode = DecodeAudio;
+ }
}
- p_dec->pf_packetize = Packetize;
p_dec->pf_flush = Flush;
p_sys->p_state = NULL;
@@ -241,20 +245,17 @@ static int OpenDecoder( vlc_object_t *p_this )
return VLC_SUCCESS;
}
-static int OpenPacketizer( vlc_object_t *p_this )
+/*****************************************************************************
+ * OpenDecoder: probe the decoder and return score
+ *****************************************************************************/
+static int OpenDecoder( vlc_object_t *p_this )
{
- decoder_t *p_dec = (decoder_t*)p_this;
- decoder_sys_t *p_sys = p_dec->p_sys;
-
- int i_ret = OpenDecoder( p_this );
-
- if( i_ret == VLC_SUCCESS )
- {
- p_sys->b_packetizer = true;
- p_dec->fmt_out.i_codec = VLC_CODEC_SPEEX;
- }
+ return OpenCommon( p_this, false );
+}
- return i_ret;
+static int OpenPacketizer( vlc_object_t *p_this )
+{
+ return OpenCommon( p_this, true );
}
static int CreateDefaultHeader( decoder_t *p_dec )
More information about the vlc-commits
mailing list