check:
/* sanity check */
+ assert(segment->data);
if (segment->data->i_buffer == 0)
{
vlc_mutex_lock(&hls->lock);
return segment;
}
-static int segment_RestorePos( segment_t *segment )
+static int segment_RestorePos(segment_t *segment)
{
- if( segment->data )
+ if (segment->data)
{
- uint64_t size = segment->size -segment->data->i_buffer;
- if( size > 0 )
+ uint64_t size = segment->size - segment->data->i_buffer;
+ if (size > 0)
{
segment->data->i_buffer += size;
segment->data->p_buffer -= size;
static ssize_t hls_Read(stream_t *s, uint8_t *p_read, unsigned int i_read)
{
stream_sys_t *p_sys = s->p_sys;
- ssize_t copied = 0;
+ ssize_t used = 0;
do
{
segment->data = NULL;
}
else
- segment_RestorePos( segment );
+ segment_RestorePos(segment);
p_sys->playback.segment++;
vlc_mutex_unlock(&segment->lock);
if (len > 0)
{
- if( p_read ) /* otherwise caller skips data */
- memcpy(p_read + copied, segment->data->p_buffer, len);
+ if (p_read) /* if NULL, then caller skips data */
+ memcpy(p_read + used, segment->data->p_buffer, len);
segment->data->i_buffer -= len;
segment->data->p_buffer += len;
- copied += len;
+ used += len;
i_read -= len;
}
vlc_mutex_unlock(&segment->lock);
} while (i_read > 0);
- return copied;
+ return used;
}
static int Read(stream_t *s, void *buffer, unsigned int i_read)
if (p_sys->b_error)
return 0;
+ /* NOTE: buffer might be NULL if caller wants to skip data */
length = hls_Read(s, (uint8_t*) buffer, i_read);
if (length < 0)
return 0;
return VLC_EGENERIC;
}
vlc_mutex_lock(&segment->lock);
- segment_RestorePos( segment );
+ segment_RestorePos(segment);
vlc_mutex_unlock(&segment->lock);
for (int n = 0; n < count; n++)
vlc_mutex_unlock(&hls->lock);
return VLC_EGENERIC;
}
+
vlc_mutex_lock(&segment->lock);
- segment_RestorePos( segment );
+ segment_RestorePos(segment);
vlc_mutex_unlock(&segment->lock);
/* start download at current playback segment */