Commit 5a9b7726 authored by Francois Cartegnie's avatar Francois Cartegnie

stream_filter: smooth: fix signedness

parent d3d3cfce
...@@ -56,7 +56,7 @@ static char *ConstructUrl( const char *template, const char *base_url, ...@@ -56,7 +56,7 @@ static char *ConstructUrl( const char *template, const char *base_url,
return url; return url;
} }
static chunk_t * chunk_Get( sms_stream_t *sms, const int64_t start_time ) static chunk_t * chunk_Get( sms_stream_t *sms, const uint64_t start_time )
{ {
int len = vlc_array_count( sms->chunks ); int len = vlc_array_count( sms->chunks );
for( int i = 0; i < len; i++ ) for( int i = 0; i < len; i++ )
...@@ -116,8 +116,10 @@ static int sms_Download( stream_t *s, chunk_t *chunk, char *url ) ...@@ -116,8 +116,10 @@ static int sms_Download( stream_t *s, chunk_t *chunk, char *url )
return VLC_EGENERIC; return VLC_EGENERIC;
int64_t size = stream_Size( p_ts ); int64_t size = stream_Size( p_ts );
if ( size < 0 )
return VLC_EGENERIC;
chunk->size = size; chunk->size = (uint64_t) size;
chunk->offset = p_sys->download.next_chunk_offset; chunk->offset = p_sys->download.next_chunk_offset;
p_sys->download.next_chunk_offset += chunk->size; p_sys->download.next_chunk_offset += chunk->size;
...@@ -255,8 +257,8 @@ static int get_new_chunks( stream_t *s, chunk_t *ck ) ...@@ -255,8 +257,8 @@ static int get_new_chunks( stream_t *s, chunk_t *ck )
for( uint8_t i = 0; i < fragment_count; i++ ) for( uint8_t i = 0; i < fragment_count; i++ )
{ {
int64_t dur = tfrf_df[i].i_fragment_duration; uint64_t dur = tfrf_df[i].i_fragment_duration;
int64_t stime = tfrf_df[i].i_fragment_abs_time; uint64_t stime = tfrf_df[i].i_fragment_abs_time;
msg_Dbg( s, "\"tfrf\" fragment duration %"PRIu64", "\ msg_Dbg( s, "\"tfrf\" fragment duration %"PRIu64", "\
"fragment abs time %"PRIu64, dur, stime); "fragment abs time %"PRIu64, dur, stime);
...@@ -388,7 +390,7 @@ static int Download( stream_t *s, sms_stream_t *sms ) ...@@ -388,7 +390,7 @@ static int Download( stream_t *s, sms_stream_t *sms )
msg_Err( s, "invalid stream type" ); msg_Err( s, "invalid stream type" );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
int64_t start_time = p_sys->download.lead[index]; uint64_t start_time = p_sys->download.lead[index];
quality_level_t *qlevel = get_qlevel( sms, sms->download_qlvl ); quality_level_t *qlevel = get_qlevel( sms, sms->download_qlvl );
if( unlikely( !qlevel ) ) if( unlikely( !qlevel ) )
...@@ -529,12 +531,12 @@ static int Download( stream_t *s, sms_stream_t *sms ) ...@@ -529,12 +531,12 @@ static int Download( stream_t *s, sms_stream_t *sms )
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static inline int64_t get_lead( stream_t *s ) static inline uint64_t get_lead( stream_t *s )
{ {
stream_sys_t *p_sys = s->p_sys; stream_sys_t *p_sys = s->p_sys;
int64_t lead = 0; uint64_t lead = 0;
int64_t alead = p_sys->download.lead[es_cat_to_index( AUDIO_ES )]; uint64_t alead = p_sys->download.lead[es_cat_to_index( AUDIO_ES )];
int64_t vlead = p_sys->download.lead[es_cat_to_index( VIDEO_ES )]; uint64_t vlead = p_sys->download.lead[es_cat_to_index( VIDEO_ES )];
bool video = SMS_GET_SELECTED_ST( VIDEO_ES ) ? true : false; bool video = SMS_GET_SELECTED_ST( VIDEO_ES ) ? true : false;
bool audio = SMS_GET_SELECTED_ST( AUDIO_ES ) ? true : false; bool audio = SMS_GET_SELECTED_ST( AUDIO_ES ) ? true : false;
...@@ -545,7 +547,10 @@ static inline int64_t get_lead( stream_t *s ) ...@@ -545,7 +547,10 @@ static inline int64_t get_lead( stream_t *s )
else else
lead = alead; lead = alead;
lead -= p_sys->playback.toffset; if( p_sys->playback.toffset > lead )
lead -= p_sys->playback.toffset;
else
lead = 0;
return lead; return lead;
} }
...@@ -598,7 +603,7 @@ void* sms_Thread( void *p_this ) ...@@ -598,7 +603,7 @@ void* sms_Thread( void *p_this )
* and for some reason the n^th advertised video fragment is related to * and for some reason the n^th advertised video fragment is related to
* the n+1^th advertised audio chunk or vice versa */ * the n+1^th advertised audio chunk or vice versa */
int64_t start_time = 0, lead = 0; uint64_t start_time = 0, lead = 0;
for( int i = 0; i < 3; i++ ) for( int i = 0; i < 3; i++ )
{ {
......
...@@ -589,10 +589,10 @@ static chunk_t *get_chunk( stream_t *s, const bool wait ) ...@@ -589,10 +589,10 @@ static chunk_t *get_chunk( stream_t *s, const bool wait )
return chunk; return chunk;
} }
static int sms_Read( stream_t *s, uint8_t *p_read, int i_read ) static unsigned int sms_Read( stream_t *s, uint8_t *p_read, unsigned int i_read )
{ {
stream_sys_t *p_sys = s->p_sys; stream_sys_t *p_sys = s->p_sys;
int copied = 0; unsigned int copied = 0;
chunk_t *chunk = NULL; chunk_t *chunk = NULL;
do do
...@@ -601,7 +601,7 @@ static int sms_Read( stream_t *s, uint8_t *p_read, int i_read ) ...@@ -601,7 +601,7 @@ static int sms_Read( stream_t *s, uint8_t *p_read, int i_read )
if( !chunk ) if( !chunk )
return copied; return copied;
if( chunk->read_pos >= (int)chunk->size ) if( chunk->read_pos >= chunk->size )
{ {
if( chunk->type == VIDEO_ES || if( chunk->type == VIDEO_ES ||
( !SMS_GET_SELECTED_ST( VIDEO_ES ) && chunk->type == AUDIO_ES ) ) ( !SMS_GET_SELECTED_ST( VIDEO_ES ) && chunk->type == AUDIO_ES ) )
...@@ -638,7 +638,7 @@ static int sms_Read( stream_t *s, uint8_t *p_read, int i_read ) ...@@ -638,7 +638,7 @@ static int sms_Read( stream_t *s, uint8_t *p_read, int i_read )
assert( type == ATOM_moof || type == ATOM_uuid ); assert( type == ATOM_moof || type == ATOM_uuid );
} }
int len = -1; uint64_t len = 0;
uint8_t *src = chunk->data + chunk->read_pos; uint8_t *src = chunk->data + chunk->read_pos;
if( i_read <= chunk->size - chunk->read_pos ) if( i_read <= chunk->size - chunk->read_pos )
len = i_read; len = i_read;
...@@ -664,12 +664,13 @@ static int Read( stream_t *s, void *buffer, unsigned i_read ) ...@@ -664,12 +664,13 @@ static int Read( stream_t *s, void *buffer, unsigned i_read )
{ {
stream_sys_t *p_sys = s->p_sys; stream_sys_t *p_sys = s->p_sys;
int length = 0; int length = 0;
i_read = __MIN(INT_MAX, i_read);
if( p_sys->b_error ) if( p_sys->b_error )
return 0; return 0;
length = sms_Read( s, (uint8_t*) buffer, i_read ); length = sms_Read( s, (uint8_t*) buffer, i_read );
if( length < 0 ) if( length == 0 )
return 0; return 0;
/* This call to sms_Read will increment p_sys->playback.index /* This call to sms_Read will increment p_sys->playback.index
...@@ -677,8 +678,8 @@ static int Read( stream_t *s, void *buffer, unsigned i_read ) ...@@ -677,8 +678,8 @@ static int Read( stream_t *s, void *buffer, unsigned i_read )
sms_Read( s, NULL, 0 ); sms_Read( s, NULL, 0 );
p_sys->playback.boffset += length; p_sys->playback.boffset += length;
if( (unsigned)length < i_read ) if( length < (int)i_read )
msg_Warn( s, "could not read %i bytes, only %i!", i_read, length ); msg_Warn( s, "could not read %u bytes, only %u !", i_read, length );
return length; return length;
} }
......
...@@ -35,18 +35,18 @@ typedef struct item_s ...@@ -35,18 +35,18 @@ typedef struct item_s
typedef struct sms_queue_s typedef struct sms_queue_s
{ {
int length; unsigned length;
item_t *first; item_t *first;
} sms_queue_t; } sms_queue_t;
typedef struct chunk_s typedef struct chunk_s
{ {
int64_t duration; /* chunk duration (seconds / TimeScale) */ uint64_t duration; /* chunk duration (seconds / TimeScale) */
int64_t start_time; /* PTS (seconds / TimeScale) */ uint64_t start_time; /* PTS (seconds / TimeScale) */
int size; /* chunk size in bytes */ uint64_t size; /* chunk size in bytes */
unsigned sequence; /* unique sequence number */ unsigned sequence; /* unique sequence number */
uint64_t offset; /* offset in the media */ uint64_t offset; /* offset in the media */
int read_pos; /* position in the chunk */ uint64_t read_pos; /* position in the chunk */
int type; /* video, audio, or subtitles */ int type; /* video, audio, or subtitles */
uint8_t *data; uint8_t *data;
...@@ -96,7 +96,7 @@ struct stream_sys_t ...@@ -96,7 +96,7 @@ struct stream_sys_t
unsigned i_tracks; /* Total number of tracks in the Manifest */ unsigned i_tracks; /* Total number of tracks in the Manifest */
sms_queue_t *bws; /* Measured bandwidths of the N last chunks */ sms_queue_t *bws; /* Measured bandwidths of the N last chunks */
uint64_t vod_duration; /* total duration of the VOD media */ uint64_t vod_duration; /* total duration of the VOD media */
int64_t time_pos; uint64_t time_pos;
unsigned timescale; unsigned timescale;
/* Download */ /* Download */
...@@ -167,7 +167,7 @@ struct stream_sys_t ...@@ -167,7 +167,7 @@ struct stream_sys_t
no_more_chunks( p_sys->download.ck_index, p_sys->selected_st ) ) no_more_chunks( p_sys->download.ck_index, p_sys->selected_st ) )
void sms_queue_free( sms_queue_t* ); void sms_queue_free( sms_queue_t* );
sms_queue_t *sms_queue_init( const int ); sms_queue_t *sms_queue_init( const unsigned int );
int sms_queue_put( sms_queue_t *, const uint64_t ); int sms_queue_put( sms_queue_t *, const uint64_t );
uint64_t sms_queue_avg( sms_queue_t *); uint64_t sms_queue_avg( sms_queue_t *);
quality_level_t *get_qlevel( sms_stream_t *, const unsigned ); quality_level_t *get_qlevel( sms_stream_t *, const unsigned );
......
...@@ -158,7 +158,7 @@ quality_level_t *get_qlevel( sms_stream_t *sms, const unsigned qid ) ...@@ -158,7 +158,7 @@ quality_level_t *get_qlevel( sms_stream_t *sms, const unsigned qid )
return NULL; return NULL;
} }
sms_queue_t *sms_queue_init( const int length ) sms_queue_t *sms_queue_init( const unsigned length )
{ {
sms_queue_t *ret = malloc( sizeof( sms_queue_t ) ); sms_queue_t *ret = malloc( sizeof( sms_queue_t ) );
if( unlikely( !ret ) ) if( unlikely( !ret ) )
...@@ -184,7 +184,7 @@ int sms_queue_put( sms_queue_t *queue, const uint64_t value ) ...@@ -184,7 +184,7 @@ int sms_queue_put( sms_queue_t *queue, const uint64_t value )
{ {
/* Remove the last (and oldest) item */ /* Remove the last (and oldest) item */
item_t *item, *prev = NULL; item_t *item, *prev = NULL;
int count = 0; unsigned int count = 0;
for( item = queue->first; item != NULL; item = item->next ) for( item = queue->first; item != NULL; item = item->next )
{ {
count++; count++;
...@@ -216,7 +216,7 @@ uint64_t sms_queue_avg( sms_queue_t *queue ) ...@@ -216,7 +216,7 @@ uint64_t sms_queue_avg( sms_queue_t *queue )
if( last == NULL ) if( last == NULL )
return 0; return 0;
uint64_t sum = queue->first->value; uint64_t sum = queue->first->value;
for( int i = 0; i < queue->length - 1; i++ ) for( unsigned int i = 0; queue->length && i < queue->length - 1; i++ )
{ {
if( last ) if( last )
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment