Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
059044f6 by Steve Lhomme at 2026-01-31T05:36:05+00:00
demux: avi: simplify track/position lookup

- - - - -
6e9681d0 by Steve Lhomme at 2026-01-31T05:36:05+00:00
demux: avi: fix test for valid track position

-1 is invalid but 0 is potentially OK.

Fixes #29576

- - - - -
a5ea7487 by Steve Lhomme at 2026-01-31T05:36:05+00:00
demux: avi: use the bool type for AVI_TrackStopFinishedStreams()

Since it returns true or false.

- - - - -
2bec5bbc by Steve Lhomme at 2026-01-31T05:36:05+00:00
demux: avi: use the proper defines for demuxer return values

Missing from 5a3410ab8fc9942b1ee9eb763fce78e1511887cc.

- - - - -


1 changed file:

- modules/demux/avi/avi.c


Changes:

=====================================
modules/demux/avi/avi.c
=====================================
@@ -30,6 +30,7 @@
 #include <assert.h>
 #include <ctype.h>
 #include <limits.h>
+#include <stdint.h>
 
 #include <vlc_common.h>
 #include <vlc_arrays.h>
@@ -252,7 +253,7 @@ static void AVI_MetaLoad( demux_t *, avi_chunk_list_t 
*p_riff, avi_chunk_avih_t
  * Stream management
  *****************************************************************************/
 static int        AVI_TrackSeek  ( demux_t *, int, vlc_tick_t );
-static int        AVI_TrackStopFinishedStreams( demux_t *);
+static bool       AVI_TrackStopFinishedStreams( demux_t *);
 
 /* Remarks:
  - For VBR mp3 stream:
@@ -1216,7 +1217,7 @@ static int Demux_Seekable( demux_t *p_demux )
     {
         bool b_done = true;
         block_t         *p_frame;
-        int64_t i_pos = -1;
+        int64_t i_pos = INT64_MAX;
         unsigned int i_track = 0;
 
         /* search for first chunk to be read */
@@ -1234,13 +1235,10 @@ static int Demux_Seekable( demux_t *p_demux )
             {
                 b_done = false; /* not yet finished */
 
-                if( tk->demuxctx.i_posf > 0 )
+                if( tk->demuxctx.i_posf >= 0 && i_pos > tk->demuxctx.i_posf )
                 {
-                    if( i_pos == -1 || i_pos > tk->demuxctx.i_posf )
-                    {
-                        i_track = i;
-                        i_pos = tk->demuxctx.i_posf;
-                    }
+                    i_track = i;
+                    i_pos = tk->demuxctx.i_posf;
                 }
             }
         }
@@ -1257,7 +1255,7 @@ static int Demux_Seekable( demux_t *p_demux )
             return VLC_DEMUXER_EOF;
         }
 
-        if( i_pos == -1 )
+        if( i_pos == INT64_MAX )
         {
             unsigned short i_loop_count = 0;
 
@@ -1270,7 +1268,8 @@ static int Demux_Seekable( demux_t *p_demux )
 
                 if( AVI_PacketNext( p_demux ) )
                 {
-                    return( AVI_TrackStopFinishedStreams( p_demux ) ? 0 : 1 );
+                    return( AVI_TrackStopFinishedStreams( p_demux ) ?
+                            VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
                 }
             }
             else
@@ -1287,7 +1286,8 @@ static int Demux_Seekable( demux_t *p_demux )
                 {
                     msg_Warn( p_demux,
                              "cannot get packet header, track disabled" );
-                    return( AVI_TrackStopFinishedStreams( p_demux ) ? 0 : 1 );
+                    return( AVI_TrackStopFinishedStreams( p_demux ) ?
+                            VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
                 }
                 if( avi_pk.i_stream >= p_sys->i_track ||
                     ( avi_pk.i_cat != AUDIO_ES && avi_pk.i_cat != VIDEO_ES ) )
@@ -1296,7 +1296,8 @@ static int Demux_Seekable( demux_t *p_demux )
                     {
                         msg_Warn( p_demux,
                                   "cannot skip packet, track disabled" );
-                        return( AVI_TrackStopFinishedStreams( p_demux ) ? 0 : 
1 );
+                        return( AVI_TrackStopFinishedStreams( p_demux ) ?
+                                VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
                     }
 
                     if( !++i_loop_count )
@@ -1330,7 +1331,8 @@ static int Demux_Seekable( demux_t *p_demux )
                         {
                             msg_Warn( p_demux,
                                       "cannot skip packet, track disabled" );
-                            return( AVI_TrackStopFinishedStreams( p_demux ) ? 
0 : 1 );
+                            return( AVI_TrackStopFinishedStreams( p_demux ) ?
+                                    VLC_DEMUXER_EOF : VLC_DEMUXER_SUCCESS );
                         }
                     }
                 }
@@ -1529,11 +1531,13 @@ static int Demux_UnSeekable( demux_t *p_demux )
                 case AVIFOURCC_JUNK:
                 case AVIFOURCC_LIST:
                 case AVIFOURCC_RIFF:
-                    return( !AVI_PacketNext( p_demux ) ? 1 : 0 );
+                    return( !AVI_PacketNext( p_demux ) ?
+                            VLC_DEMUXER_SUCCESS : VLC_DEMUXER_EOF );
                 case AVIFOURCC_idx1:
                     if( p_sys->b_odml )
                     {
-                        return( !AVI_PacketNext( p_demux ) ? 1 : 0 );
+                        return( !AVI_PacketNext( p_demux ) ?
+                                VLC_DEMUXER_SUCCESS : VLC_DEMUXER_EOF );
                     }
                     return VLC_DEMUXER_EOF;
                 default:
@@ -3234,11 +3238,11 @@ static int AVI_SeekSubtitleTrack( demux_sys_t *p_sys, 
avi_track_t *tk )
 /*****************************************************************************
  * Stream management
  *****************************************************************************/
-static int AVI_TrackStopFinishedStreams( demux_t *p_demux )
+static bool AVI_TrackStopFinishedStreams( demux_t *p_demux )
 {
     demux_sys_t *p_sys = p_demux->p_sys;
     unsigned int i;
-    int b_end = true;
+    bool b_end = true;
 
     for( i = 0; i < p_sys->i_track; i++ )
     {



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/f1725a8f5f6f1e411bf53e4b10535f13af417d4b...2bec5bbcc16ed5f7af6247feac03463e7f538d88

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/f1725a8f5f6f1e411bf53e4b10535f13af417d4b...2bec5bbcc16ed5f7af6247feac03463e7f538d88
You're receiving this email because of your account on code.videolan.org.


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

Reply via email to