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