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/ffmdec.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/ffmdec.c')
-rw-r--r-- | libavformat/ffmdec.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/libavformat/ffmdec.c b/libavformat/ffmdec.c index 257319bd06..53a9f1fca9 100644 --- a/libavformat/ffmdec.c +++ b/libavformat/ffmdec.c @@ -283,7 +283,7 @@ static int ffm2_read_header(AVFormatContext *s) AVIOContext *pb = s->pb; AVCodecContext *codec; const AVCodecDescriptor *codec_desc; - int ret; + int ret, i; int f_main = 0, f_cprv = -1, f_stvi = -1, f_stau = -1; AVCodec *enc; char *buffer; @@ -356,8 +356,12 @@ static int ffm2_read_header(AVFormatContext *s) codec->flags2 = avio_rb32(pb); codec->debug = avio_rb32(pb); if (codec->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { - if (ff_get_extradata(codec, pb, avio_rb32(pb)) < 0) + int size = avio_rb32(pb); + codec->extradata = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!codec->extradata) return AVERROR(ENOMEM); + codec->extradata_size = size; + avio_read(pb, codec->extradata, size); } break; case MKBETAG('S', 'T', 'V', 'I'): @@ -476,6 +480,9 @@ static int ffm2_read_header(AVFormatContext *s) avio_seek(pb, next, SEEK_SET); } + for (i = 0; i < s->nb_streams; i++) + avcodec_parameters_from_context(s->streams[i]->codecpar, s->streams[i]->codec); + /* get until end of block reached */ while ((avio_tell(pb) % ffm->packet_size) != 0 && !pb->eof_reached) avio_r8(pb); @@ -617,9 +624,15 @@ static int ffm_read_header(AVFormatContext *s) goto fail; } if (codec->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { - if (ff_get_extradata(codec, pb, avio_rb32(pb)) < 0) + int size = avio_rb32(pb); + codec->extradata = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!codec->extradata) return AVERROR(ENOMEM); + codec->extradata_size = size; + avio_read(pb, codec->extradata, size); } + + avcodec_parameters_from_context(st->codecpar, codec); } /* get until end of block reached */ |