player_thread: initialize chunk->times in silence generator

When waiting for the decoder to provide more data, the player thread
generates silence chunks if needed.  However, it forgot to initialize
the chunk.times attribute, which had now an undefined value.  This
patch sets it to -1.0, meaning "value is undefined".  Add a ">= 0.0"
check to audio_output_all_check().  This fixes spurious relative
seeking errors, because sometimes, the "elapsed" value falls back to
0.0.
This commit is contained in:
Max Kellermann 2009-11-12 18:41:25 +01:00
parent b9866e43d3
commit 76283c25a5
2 changed files with 5 additions and 1 deletions

View File

@ -441,7 +441,10 @@ audio_output_all_check(void)
this chunk */
return music_pipe_size(g_mp);
audio_output_all_elapsed_time = chunk->times;
if (chunk->length > 0 && chunk->times >= 0.0)
/* only update elapsed_time if the chunk
provides a defined value */
audio_output_all_elapsed_time = chunk->times;
is_tail = chunk->next == NULL;
if (is_tail)

View File

@ -333,6 +333,7 @@ player_send_silence(struct player *player)
chunk->audio_format = player->play_audio_format;
#endif
chunk->times = -1.0; /* undefined time stamp */
chunk->length = num_frames * frame_size;
memset(chunk->data, 0, chunk->length);