diff options
Diffstat (limited to 'src/output_thread.c')
-rw-r--r-- | src/output_thread.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/output_thread.c b/src/output_thread.c index 4eef2ccd..78592d6e 100644 --- a/src/output_thread.c +++ b/src/output_thread.c @@ -325,12 +325,10 @@ ao_chunk_data(struct audio_output *ao, const struct music_chunk *chunk, assert(!music_chunk_is_empty(chunk)); assert(music_chunk_check_format(chunk, &ao->in_audio_format)); - const char *data = chunk->data; - size_t length = chunk->length; - - (void)ao; - - assert(length % audio_format_frame_size(&ao->in_audio_format) == 0); + const char *data = chunk->frame ? chunk->frame->data[0] : NULL; + size_t length = data ? av_samples_get_buffer_size(NULL, ao->in_audio_format.channels, + chunk->frame->nb_samples, + chunk->frame->format, 1) : 0; if (length > 0 && replay_gain_filter != NULL) { if (chunk->replay_gain_serial != *replay_gain_serial_p) { |