[vlc-devel] [PATCH 3/5] decoder: remove b_need_packetized
Thomas Guillem
thomas at gllm.fr
Mon Sep 7 18:59:29 CEST 2015
When needed (fmt->b_packetized == false), create a packetizer before creating a
decoder. The fmt_in of the decoder is copied either from the fmt_out of the
packetizer, or from the fmt of CreateDecoder.
---
include/vlc_codec.h | 3 ---
modules/codec/avcodec/avcodec.c | 2 --
modules/codec/avcodec/video.c | 3 ---
modules/codec/crystalhd.c | 1 -
modules/codec/faad.c | 3 ---
modules/codec/flac.c | 3 ---
modules/codec/gstdecode.c | 2 --
modules/codec/mft.c | 1 -
modules/codec/omxil/mediacodec.c | 1 -
modules/codec/omxil/omxil.c | 2 --
modules/codec/videotoolbox.m | 2 --
modules/codec/vpx.c | 1 -
modules/hw/mmal/codec.c | 1 -
src/input/decoder.c | 18 +++++++++---------
14 files changed, 9 insertions(+), 34 deletions(-)
diff --git a/include/vlc_codec.h b/include/vlc_codec.h
index 0c43978..0028eff 100644
--- a/include/vlc_codec.h
+++ b/include/vlc_codec.h
@@ -62,9 +62,6 @@ struct decoder_t
/* Output format of decoder/packetizer */
es_format_t fmt_out;
- /* Some decoders only accept packetized data (ie. not truncated) */
- bool b_need_packetized;
-
/* Tell the decoder if it is allowed to drop frames */
bool b_frame_drop_allowed;
diff --git a/modules/codec/avcodec/avcodec.c b/modules/codec/avcodec/avcodec.c
index 2251cda..5402f69 100644
--- a/modules/codec/avcodec/avcodec.c
+++ b/modules/codec/avcodec/avcodec.c
@@ -326,8 +326,6 @@ static int OpenDecoder( vlc_object_t *p_this )
if( avctx->level != FF_LEVEL_UNKNOWN)
p_dec->fmt_in.i_level = avctx->level;
- p_dec->b_need_packetized = true;
-
return VLC_SUCCESS;
}
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index 7e05a5f..89b39ab 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -495,9 +495,6 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context,
p_dec->pf_decode_video = DecodeVideo;
- if ( p_dec->fmt_in.i_codec == VLC_CODEC_VP9 )
- p_dec->b_need_packetized = true;
-
return VLC_SUCCESS;
}
diff --git a/modules/codec/crystalhd.c b/modules/codec/crystalhd.c
index d3b99ba..87c2134 100644
--- a/modules/codec/crystalhd.c
+++ b/modules/codec/crystalhd.c
@@ -348,7 +348,6 @@ static int OpenDecoder( vlc_object_t *p_this )
p_dec->fmt_out.i_codec = VLC_CODEC_YUYV;
p_dec->fmt_out.video.i_width = p_dec->fmt_in.video.i_width;
p_dec->fmt_out.video.i_height = p_dec->fmt_in.video.i_height;
- p_dec->b_need_packetized = true;
/* Set callbacks */
p_dec->pf_decode_video = DecodeBlock;
diff --git a/modules/codec/faad.c b/modules/codec/faad.c
index 6185af9..ae8fed8 100644
--- a/modules/codec/faad.c
+++ b/modules/codec/faad.c
@@ -192,9 +192,6 @@ static int Open( vlc_object_t *p_this )
p_sys->i_buffer = p_sys->i_buffer_size = 0;
p_sys->p_buffer = NULL;
- /* Faad2 can't deal with truncated data (eg. from MPEG TS) */
- p_dec->b_need_packetized = true;
-
p_sys->b_sbr = p_sys->b_ps = false;
p_dec->pf_decode_audio = DecodeBlock;
diff --git a/modules/codec/flac.c b/modules/codec/flac.c
index eaf8175..9fc69f8 100644
--- a/modules/codec/flac.c
+++ b/modules/codec/flac.c
@@ -359,9 +359,6 @@ static int OpenDecoder( vlc_object_t *p_this )
/* Set callbacks */
p_dec->pf_decode_audio = DecodeBlock;
- /* */
- p_dec->b_need_packetized = true;
-
return VLC_SUCCESS;
}
diff --git a/modules/codec/gstdecode.c b/modules/codec/gstdecode.c
index f623b9c..a2acf69 100644
--- a/modules/codec/gstdecode.c
+++ b/modules/codec/gstdecode.c
@@ -624,8 +624,6 @@ static int OpenDecoder( vlc_object_t *p_this )
"set state failure", VLC_EGENERIC );
p_sys->b_running = true;
- /* Force packetized for now */
- p_dec->b_need_packetized = true;
/* Set callbacks */
p_dec->pf_decode_video = DecodeBlock;
diff --git a/modules/codec/mft.c b/modules/codec/mft.c
index a61fa00..696319a 100644
--- a/modules/codec/mft.c
+++ b/modules/codec/mft.c
@@ -1155,7 +1155,6 @@ int Open(vlc_object_t *p_this)
}
p_dec->fmt_out.i_cat = p_dec->fmt_in.i_cat;
- p_dec->b_need_packetized = true;
return VLC_SUCCESS;
diff --git a/modules/codec/omxil/mediacodec.c b/modules/codec/omxil/mediacodec.c
index 62987f6..b9ae3f7 100644
--- a/modules/codec/omxil/mediacodec.c
+++ b/modules/codec/omxil/mediacodec.c
@@ -561,7 +561,6 @@ static int OpenDecoder(vlc_object_t *p_this, pf_MediaCodecApi_init pf_init)
p_dec->fmt_out.i_cat = p_dec->fmt_in.i_cat;
p_dec->fmt_out.video = p_dec->fmt_in.video;
p_dec->fmt_out.audio = p_dec->fmt_in.audio;
- p_dec->b_need_packetized = true;
p_sys->mime = mime;
p_sys->b_new_block = true;
diff --git a/modules/codec/omxil/omxil.c b/modules/codec/omxil/omxil.c
index 773d7b0..0700220 100644
--- a/modules/codec/omxil/omxil.c
+++ b/modules/codec/omxil/omxil.c
@@ -1249,8 +1249,6 @@ static int OpenGeneric( vlc_object_t *p_this, bool b_encode )
if(p_sys->b_error) goto error;
- p_dec->b_need_packetized = true;
-
if (!p_sys->b_use_pts)
msg_Dbg( p_dec, "using dts timestamp mode for %s", p_sys->psz_component);
diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m
index c9b15d2..0d2e3e9 100644
--- a/modules/codec/videotoolbox.m
+++ b/modules/codec/videotoolbox.m
@@ -660,8 +660,6 @@ static int OpenDecoder(vlc_object_t *p_this)
p_dec->fmt_out.i_codec = VLC_CODEC_I420;
}
- p_dec->b_need_packetized = true;
-
p_dec->pf_decode_video = DecodeBlock;
msg_Info(p_dec, "Using Video Toolbox to decode '%4.4s'", (char *)&p_dec->fmt_in.i_codec);
diff --git a/modules/codec/vpx.c b/modules/codec/vpx.c
index 1707e72..f17444a 100644
--- a/modules/codec/vpx.c
+++ b/modules/codec/vpx.c
@@ -201,7 +201,6 @@ static int Open(vlc_object_t *p_this)
dec->fmt_out.video.i_width = dec->fmt_in.video.i_width;
dec->fmt_out.video.i_height = dec->fmt_in.video.i_height;
dec->fmt_out.i_codec = VLC_CODEC_I420;
- dec->b_need_packetized = true;
return VLC_SUCCESS;
}
diff --git a/modules/hw/mmal/codec.c b/modules/hw/mmal/codec.c
index 38fda50..dca8db5 100644
--- a/modules/hw/mmal/codec.c
+++ b/modules/hw/mmal/codec.c
@@ -116,7 +116,6 @@ static int OpenDecoder(decoder_t *dec)
goto out;
}
dec->p_sys = sys;
- dec->b_need_packetized = true;
sys->opaque = var_InheritBool(dec, MMAL_OPAQUE_NAME);
bcm_host_init();
diff --git a/src/input/decoder.c b/src/input/decoder.c
index 61e74f9..6c00767 100644
--- a/src/input/decoder.c
+++ b/src/input/decoder.c
@@ -142,7 +142,6 @@ static int LoadDecoder( decoder_t *p_dec, bool b_packetizer,
const es_format_t *p_fmt )
{
p_dec->b_frame_drop_allowed = true;
- p_dec->b_need_packetized = false;
p_dec->i_extra_picture_buffers = 0;
p_dec->pf_decode_audio = NULL;
@@ -1597,26 +1596,27 @@ static decoder_t * CreateDecoder( vlc_object_t *p_parent,
p_dec->pf_get_display_date = DecoderGetDisplayDate;
p_dec->pf_get_display_rate = DecoderGetDisplayRate;
- /* Find a suitable decoder/packetizer module */
- if( LoadDecoder( p_dec, b_packetizer, fmt ) )
- return p_dec;
-
- /* Check if decoder requires already packetized data */
- if( !b_packetizer &&
- p_dec->b_need_packetized && !p_dec->fmt_in.b_packetized )
+ /* Load a packetizer module if the input is not already packetized */
+ if( !b_packetizer && !fmt->b_packetized )
{
p_owner->p_packetizer =
vlc_custom_create( p_parent, sizeof( decoder_t ), "packetizer" );
if( p_owner->p_packetizer )
{
- if( LoadDecoder( p_owner->p_packetizer, true, &p_dec->fmt_in ) )
+ if( LoadDecoder( p_owner->p_packetizer, true, fmt ) )
{
vlc_object_release( p_owner->p_packetizer );
p_owner->p_packetizer = NULL;
}
+ else
+ fmt = &p_owner->p_packetizer->fmt_out;
}
}
+ /* Find a suitable decoder/packetizer module */
+ if( LoadDecoder( p_dec, b_packetizer, fmt ) )
+ return p_dec;
+
/* Copy ourself the input replay gain */
if( fmt->i_cat == AUDIO_ES )
{
--
2.1.4
More information about the vlc-devel
mailing list