vlc | branch: master | Thomas Guillem <[email protected]> | Fri Jan 13 11:33:46 
2017 +0100| [ce72ce94443d3389cca58b755be93f7146e3cd9b] | committer: Thomas 
Guillem

packetizer: dts: fix endless loop (again)

The "(Not useful if we went through NEXT_SYNC)" assumption is false.  If the
input is not packetized (like from demux/mpeg/es.c), nothing assure that we
have enough data.

see 1151319

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

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

diff --git a/modules/packetizer/dts.c b/modules/packetizer/dts.c
index 1bd9350..71ee2f9 100644
--- a/modules/packetizer/dts.c
+++ b/modules/packetizer/dts.c
@@ -240,13 +240,12 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t 
**pp_block )
                     block_SkipByte( &p_sys->bytestream );
                     break;
                 }
-                p_sys->i_state = STATE_SEND_DATA;
+                p_sys->i_state = STATE_GET_DATA;
             }
             break;
 
         case STATE_GET_DATA:
-            /* Make sure we have enough data.
-             * (Not useful if we went through NEXT_SYNC) */
+            /* Make sure we have enough data. */
             if( block_WaitBytes( &p_sys->bytestream,
                                  p_sys->dts.i_frame_size ) != VLC_SUCCESS )
             {
@@ -259,8 +258,10 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t 
**pp_block )
             if( p_sys->dts.b_substream  )
             {
                 /* FIXME: DTSHD is ignored for now */
-                block_SkipBytes( &p_sys->bytestream, p_sys->dts.i_frame_size );
                 p_sys->i_state = STATE_NOSYNC;
+                if( block_SkipBytes( &p_sys->bytestream,
+                                     p_sys->dts.i_frame_size ) != VLC_SUCCESS )
+                    return NULL;
                 break;
             }
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to