[vlc-commits] decoder: remove b_need_packetized

Thomas Guillem git at videolan.org
Wed Sep 9 09:58:56 CEST 2015


vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Mon Sep  7 16:34:51 2015 +0200| [080f21c3be96265da1dae5c0c9ec959add956b30] | committer: Thomas Guillem

decoder: remove b_need_packetized

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.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=080f21c3be96265da1dae5c0c9ec959add956b30
---

 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 c37924d..a09853f 100644
--- a/modules/codec/omxil/mediacodec.c
+++ b/modules/codec/omxil/mediacodec.c
@@ -560,7 +560,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 63470a5..3a94680 100644
--- a/modules/codec/omxil/omxil.c
+++ b/modules/codec/omxil/omxil.c
@@ -1248,8 +1248,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 8bfa88d..7c0b968 100644
--- a/modules/codec/videotoolbox.m
+++ b/modules/codec/videotoolbox.m
@@ -662,8 +662,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 ff5e3d1..ec74015 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 *restrict 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 )
     {



More information about the vlc-commits mailing list