diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-04-10 20:58:15 +0100 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-04-10 20:59:55 +0100 |
commit | 6f69f7a8bf6a0d013985578df2ef42ee6b1c7994 (patch) | |
tree | 0c2ec8349ff1763d5f48454b8b9f26374dbd80b0 /libavformat/vocdec.c | |
parent | 60b75186b2c878b6257b43c8fcc0b1356ada218e (diff) | |
parent | 9200514ad8717c63f82101dc394f4378854325bf (diff) | |
download | ffmpeg-6f69f7a8bf6a0d013985578df2ef42ee6b1c7994.tar.gz |
Merge commit '9200514ad8717c63f82101dc394f4378854325bf'
* commit '9200514ad8717c63f82101dc394f4378854325bf':
lavf: replace AVStream.codec with AVStream.codecpar
This has been a HUGE effort from:
- Derek Buitenhuis <derek.buitenhuis@gmail.com>
- Hendrik Leppkes <h.leppkes@gmail.com>
- wm4 <nfxjfg@googlemail.com>
- Clément Bœsch <clement@stupeflix.com>
- James Almer <jamrial@gmail.com>
- Michael Niedermayer <michael@niedermayer.cc>
- Rostislav Pehlivanov <atomnuker@gmail.com>
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'libavformat/vocdec.c')
-rw-r--r-- | libavformat/vocdec.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/libavformat/vocdec.c b/libavformat/vocdec.c index 0a11b97567..10df28b806 100644 --- a/libavformat/vocdec.c +++ b/libavformat/vocdec.c @@ -42,7 +42,6 @@ static int voc_read_header(AVFormatContext *s) VocDecContext *voc = s->priv_data; AVIOContext *pb = s->pb; int header_size; - AVStream *st; avio_skip(pb, 20); header_size = avio_rl16(pb) - 22; @@ -51,10 +50,8 @@ static int voc_read_header(AVFormatContext *s) return AVERROR(ENOSYS); } avio_skip(pb, header_size); - st = avformat_new_stream(s, NULL); - if (!st) - return AVERROR(ENOMEM); - st->codec->codec_type = AVMEDIA_TYPE_AUDIO; + + s->ctx_flags |= AVFMTCTX_NOHEADER; voc->remaining_size = 0; return 0; @@ -62,6 +59,12 @@ static int voc_read_header(AVFormatContext *s) static int voc_read_packet(AVFormatContext *s, AVPacket *pkt) { + if (!s->nb_streams) { + AVStream *st = avformat_new_stream(s, NULL); + if (!st) + return AVERROR(ENOMEM); + st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; + } return ff_voc_get_packet(s, pkt, s->streams[0], 0); } @@ -69,8 +72,16 @@ static int voc_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) { VocDecContext *voc = s->priv_data; - AVStream *st = s->streams[stream_index]; - int index = av_index_search_timestamp(st, timestamp, flags); + AVStream *st; + int index; + + if (s->nb_streams < 1) { + av_log(s, AV_LOG_ERROR, "cannot seek while no stream was found yet\n"); + return AVERROR(EINVAL); + } + + st = s->streams[stream_index]; + index = av_index_search_timestamp(st, timestamp, flags); if (index >= 0 && index < st->nb_index_entries - 1) { AVIndexEntry *e = &st->index_entries[index]; |