default:
goto fail;
}
-
+ if (codec->flags & CODEC_FLAG_GLOBAL_HEADER) {
+ codec->extradata_size = get_be32(pb);
+ codec->extradata = av_malloc(codec->extradata_size);
+ if (!codec->extradata)
+ return AVERROR(ENOMEM);
+ get_buffer(pb, codec->extradata, codec->extradata_size);
+ }
}
/* get until end of block reached */
default:
return -1;
}
+ if (codec->flags & CODEC_FLAG_GLOBAL_HEADER) {
+ put_be32(pb, codec->extradata_size);
+ put_buffer(pb, codec->extradata, codec->extradata_size);
+ }
}
/* flush until end of block reached */