diff options
Diffstat (limited to 'src/demuxers')
-rw-r--r-- | src/demuxers/demux_ac3.c | 4 | ||||
-rw-r--r-- | src/demuxers/demux_dts.c | 6 | ||||
-rw-r--r-- | src/demuxers/demux_qt.c | 12 |
3 files changed, 14 insertions, 8 deletions
diff --git a/src/demuxers/demux_ac3.c b/src/demuxers/demux_ac3.c index 7f3dadeb7..279da6336 100644 --- a/src/demuxers/demux_ac3.c +++ b/src/demuxers/demux_ac3.c @@ -135,10 +135,10 @@ static int open_ac3_file(demux_ac3_t *this) { uint8_t *peak; blocksize = this->input->get_blocksize(this->input); - if (blocksize) { + if (blocksize && INPUT_IS_SEEKABLE(this->input)) { this->input->seek(this->input, 0, SEEK_SET); buf_element_t *buf = this->input->read_block(this->input, - this->audio_fifo, + this->stream->audio_fifo, blocksize); this->input->seek(this->input, 0, SEEK_SET); diff --git a/src/demuxers/demux_dts.c b/src/demuxers/demux_dts.c index 7baeae377..a9541b6f7 100644 --- a/src/demuxers/demux_dts.c +++ b/src/demuxers/demux_dts.c @@ -85,10 +85,10 @@ static int open_dts_file(demux_dts_t *this) { lprintf("open_dts_file\n"); blocksize = this->input->get_blocksize(this->input); - if (blocksize) { - this->input->seek(this->input, 0, SEEK_SET); + if (blocksize && INPUT_IS_SEEKABLE(this->input)) { + // this->input->seek(this->input, 0, SEEK_SET); buf_element_t *buf = this->input->read_block(this->input, - this->audio_fifo, + this->stream->audio_fifo, blocksize); this->input->seek(this->input, 0, SEEK_SET); diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c index f837a2272..0624dc673 100644 --- a/src/demuxers/demux_qt.c +++ b/src/demuxers/demux_qt.c @@ -918,9 +918,15 @@ static qt_error parse_trak_atom (qt_trak *trak, trak->edit_list_table[j].media_time); } - } else if (current_atom == MDHD_ATOM) - trak->timescale = BE_32(&trak_atom[i + 0x10]); - else if (current_atom == STSD_ATOM) { + } else if (current_atom == MDHD_ATOM) { + int version; + debug_atom_load ("demux_qt: mdhd atom\n"); + + version = trak_atom[i+4]; + if ( version > 1 ) continue; /* unsupported, undocumented */ + + trak->timescale = BE_32(&trak_atom[i + (version == 0 ? 0x10 : 0x18) ]); + } else if (current_atom == STSD_ATOM) { debug_atom_load ("demux_qt: stsd atom\n"); #if DEBUG_ATOM_LOAD |