[vlc-commits] packetizer: dts: handle substream in a dedicated state

Francois Cartegnie git at videolan.org
Mon Mar 11 19:39:13 CET 2019


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Mon Mar 11 12:24:35 2019 +0100| [516246a4bc518386c56854b90aa2a2db3522c8a0] | committer: Francois Cartegnie

packetizer: dts: handle substream in a dedicated state

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

 modules/packetizer/dts.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/modules/packetizer/dts.c b/modules/packetizer/dts.c
index c4204a6e31..3d557b2589 100644
--- a/modules/packetizer/dts.c
+++ b/modules/packetizer/dts.c
@@ -72,6 +72,11 @@ typedef struct
     size_t  i_input_size;
 } decoder_sys_t;
 
+enum
+{
+    STATE_SYNC_SUBSTREAM_EXTENSIONS = STATE_CUSTOM_FIRST,
+};
+
 static void PacketizeFlush( decoder_t *p_dec )
 {
     decoder_sys_t *p_sys = p_dec->p_sys;
@@ -209,6 +214,13 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block )
             }
 
             if( p_sys->dts.syncword == DTS_SYNC_SUBSTREAM )
+                p_sys->i_state = STATE_SYNC_SUBSTREAM_EXTENSIONS;
+            else
+                p_sys->i_state = STATE_NEXT_SYNC;
+            p_sys->i_input_size = p_sys->i_next_offset = p_sys->dts.i_frame_size;
+            break;
+
+        case STATE_SYNC_SUBSTREAM_EXTENSIONS:
             {
                 msg_Warn( p_dec, "substream without the paired core stream, "
                           "skip it" );
@@ -216,12 +228,8 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block )
                 if( block_SkipBytes( &p_sys->bytestream,
                                      p_sys->dts.i_frame_size ) != VLC_SUCCESS )
                     return NULL;
-                break;
             }
-
-            p_sys->i_input_size = p_sys->i_next_offset = p_sys->dts.i_frame_size;
-            p_sys->i_state = STATE_NEXT_SYNC;
-            /* fallthrough */
+            break;
 
         case STATE_NEXT_SYNC:
             /* Check if next expected frame contains the sync word */



More information about the vlc-commits mailing list