---
libavformat/mux.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/libavformat/mux.c b/libavformat/mux.c
index dd88225..7f67c4d 100644
--- a/libavformat/mux.c
+++ b/libavformat/mux.c
@@ -407,6 +407,9 @@ static int compute_pkt_fields2(AVFormatContext *s, AVStream
*st, AVPacket *pkt)
static int write_packet(AVFormatContext *s, AVPacket *pkt)
{
+ AVStream *st = s->streams[pkt->stream_index];
+ uint8_t *new_extradata;
+ int extradata_size;
int ret;
if (!(s->oformat->flags & (AVFMT_TS_NEGATIVE | AVFMT_NOTIMESTAMPS))) {
AVRational time_base = s->streams[pkt->stream_index]->time_base;
@@ -424,6 +427,21 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts += offset;
}
+
+ new_extradata = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA,
+ &extradata_size);
+ if (new_extradata) {
+ av_freep(&st->codec->extradata);
+ st->codec->extradata_size = 0;
+
+ st->codec->extradata = av_mallocz(extradata_size +
FF_INPUT_BUFFER_PADDING_SIZE);
+ if (!st->codec->extradata)
+ return AVERROR(ENOMEM);
+
+ memcpy(st->codec->extradata, new_extradata, extradata_size);
+ st->codec->extradata_size = extradata_size;
+ }
+
ret = s->oformat->write_packet(s, pkt);
if (s->pb && ret >= 0 && s->flags & AVFMT_FLAG_FLUSH_PACKETS)
--
1.7.10.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel