diff options
Diffstat (limited to 'libavformat/demux_utils.c')
-rw-r--r-- | libavformat/demux_utils.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 8a1e4ff5c0..a59476e0da 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -25,6 +25,7 @@ #include "libavcodec/bytestream.h" #include "libavcodec/packet_internal.h" #include "avformat.h" +#include "avio_internal.h" #include "demux.h" #include "internal.h" @@ -350,3 +351,19 @@ int ff_generate_avci_extradata(AVStream *st) return 0; } + +int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size) +{ + int ret = ff_alloc_extradata(par, size); + if (ret < 0) + return ret; + ret = ffio_read_size(pb, par->extradata, size); + if (ret < 0) { + av_freep(&par->extradata); + par->extradata_size = 0; + av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size); + return ret; + } + + return ret; +} |