diff --git a/libavformat/avformat_internal.h b/libavformat/avformat_internal.h index a1079fe122..ef7409658e 100644 --- a/libavformat/avformat_internal.h +++ b/libavformat/avformat_internal.h @@ -28,6 +28,16 @@ #include #include "avformat.h" +#include "internal.h" + +typedef struct FormatContextInternal { + FFFormatContext fc; +} FormatContextInternal; + +static av_always_inline FormatContextInternal *ff_fc_internal(AVFormatContext *s) +{ + return (FormatContextInternal*)s; +} #define RELATIVE_TS_BASE (INT64_MAX - (1LL << 48)) diff --git a/libavformat/options.c b/libavformat/options.c index 10d6ce2d35..9e4fd5f8b2 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -161,12 +161,15 @@ static int io_close2_default(AVFormatContext *s, AVIOContext *pb) AVFormatContext *avformat_alloc_context(void) { - FFFormatContext *const si = av_mallocz(sizeof(*si)); + FormatContextInternal *fci; + FFFormatContext *si; AVFormatContext *s; - if (!si) + fci = av_mallocz(sizeof(*fci)); + if (!fci) return NULL; + si = &fci->fc; s = &si->pub; s->av_class = &av_format_context_class; s->io_open = io_open_default;