diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/demuxers/demux_tta.c | 44 |
1 files changed, 11 insertions, 33 deletions
diff --git a/src/demuxers/demux_tta.c b/src/demuxers/demux_tta.c index 10229ed64..57d2c8357 100644 --- a/src/demuxers/demux_tta.c +++ b/src/demuxers/demux_tta.c @@ -122,39 +122,17 @@ static int demux_tta_send_chunk(demux_plugin_t *this_gen) { bytes_to_read = le2me_32(this->seektable[this->currentframe]); - while(bytes_to_read) { - off_t bytes_read = 0; - buf_element_t *buf = NULL; - - /* Get a buffer */ - buf = this->audio_fifo->buffer_pool_alloc(this->audio_fifo); - buf->type = BUF_AUDIO_TTA; - buf->pts = (int64_t)(FRAME_TIME * this->currentframe * 90000); - buf->extra_info->total_time = (int)(le2me_32(this->header.tta.data_length) * 1000.0 / le2me_32(this->header.tta.samplerate)); /* milliseconds */ - buf->decoder_flags = 0; - - /* Set normalised position */ - buf->extra_info->input_normpos = - (int) ((double) this->currentframe * 65535 / this->totalframes); - - /* Set time */ - buf->extra_info->input_time = (int)(FRAME_TIME * this->currentframe * 1000); - - bytes_read = this->input->read(this->input, buf->content, ( bytes_to_read > buf->max_size ) ? buf->max_size : bytes_to_read); - if (bytes_read < 0) { - this->status = DEMUX_FINISHED; - break; - } - - buf->size = bytes_read; - - bytes_to_read -= bytes_read; - - if ( bytes_to_read <= 0 ) - buf->decoder_flags |= BUF_FLAG_FRAME_END; - - this->audio_fifo->put(this->audio_fifo, buf); - } + _x_demux_read_send_data(this->audio_fifo, + this->input, + bytes_to_read, + (int64_t)(FRAME_TIME * this->currentframe * 90000), + BUF_AUDIO_TTA, + /*decoder_flags*/ 0, + (int) ((double) this->currentframe * 65535.0 / this->totalframes), + (int)(FRAME_TIME * this->currentframe * 1000), + (int)(le2me_32(this->header.tta.data_length) * 1000.0 / + le2me_32(this->header.tta.samplerate)), + this->currentframe); this->currentframe++; |