}
if( i_first == 0 )
+ {
i_first = mdate();
+ msg_Dbg( s, "received first data for our buffer");
+ }
/* Append the block */
p_sys->block.i_size += b->i_buffer;
if( p_sys->block.p_current == NULL )
return 0;
+ if( p_read == NULL )
+ return AStreamSeekBlock( s, p_sys->i_pos + i_read ) ? 0 : i_read;
+
while( i_data < i_read )
{
int i_current =
if( tk->i_start >= tk->i_end ) return 0; /* EOF */
+ if( p_read == NULL )
+ return AStreamSeekStream( s, p_sys->i_pos + i_read ) ? 0 : i_read;
+
#if 0
msg_Dbg( s, "AStreamReadStream: %d pos="I64Fd" tk=%d start="I64Fd
" offset=%d end="I64Fd,
int i_toread =
__MIN( p_sys->stream.i_used, STREAM_CACHE_TRACK_SIZE -
(tk->i_end - tk->i_start - p_sys->stream.i_offset) );
+ vlc_bool_t b_read = VLC_FALSE;
int64_t i_start, i_stop;
if( i_toread <= 0 ) return VLC_EGENERIC; /* EOF */
}
else if( i_read == 0 )
{
- return VLC_EGENERIC;
+ if( !b_read )
+ return VLC_EGENERIC;
+ return VLC_SUCCESS;
}
+ b_read = VLC_TRUE;
/* Update end */
tk->i_end += i_read;
int64_t i_first = 0;
int64_t i_start;
+ int64_t i_prebuffer = (s->p_sys->p_access->info.i_title > 1 ||
+ s->p_sys->p_access->info.i_seekpoint > 1) ? STREAM_CACHE_PREBUFFER_SIZE : STREAM_CACHE_TRACK_SIZE / 3;
msg_Dbg( s, "pre buffering" );
i_start = mdate();
int64_t i_date = mdate();
int i_read;
- if( s->b_die || tk->i_end >= STREAM_CACHE_PREBUFFER_SIZE ||
+ if( s->b_die || tk->i_end >= i_prebuffer ||
(i_first > 0 && i_first + STREAM_CACHE_PREBUFFER_LENGTH < i_date) )
{
int64_t i_byterate;
}
if( i_first == 0 )
+ {
i_first = mdate();
+ msg_Dbg( s, "received first data for our buffer");
+ }
tk->i_end += i_read;
}
/* Remove trailing LF/CR */
- while( i_line > 0 && ( p_line[i_line-1] == '\r' || p_line[i_line-1] == '\n') ) i_line--;
+ while( i_line > 0 && ( p_line[i_line-1] == '\r' ||
+ p_line[i_line-1] == '\n') ) i_line--;
if( i_read > 0 )
{
return p_line;
}
- /* We failed to read any data, probably EOF*/
+ /* We failed to read any data, probably EOF */
if( p_line ) free( p_line );
return NULL;
}