Browse Source

lavf/segment: do not copy codec_tag when not available

Some muxers do not allow stream if codec_tag is incompatible.

Sometimes the passed input codec's codec_tag is not compatible with the
output muxer.

Because the codec_tag field of the segment muxer cannot be set, ffmpeg.c
doesn't know how to handle these cases.

Signed-off-by: ChanMin Kim <kcm1700@gmail.com>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.1
ChanMin Kim Michael Niedermayer 13 years ago
parent
commit
4293464705
1 changed files with 12 additions and 1 deletions
  1. +12
    -1
      libavformat/segment.c

+ 12
- 1
libavformat/segment.c View File

@@ -108,9 +108,20 @@ static int segment_mux_init(AVFormatContext *s)

for (i = 0; i < s->nb_streams; i++) {
AVStream *st;
AVCodecContext *icodec, *ocodec;

if (!(st = avformat_new_stream(oc, NULL)))
return AVERROR(ENOMEM);
avcodec_copy_context(st->codec, s->streams[i]->codec);
icodec = s->streams[i]->codec;
ocodec = st->codec;
avcodec_copy_context(ocodec, icodec);
if (!oc->oformat->codec_tag ||
av_codec_get_id (oc->oformat->codec_tag, icodec->codec_tag) == ocodec->codec_id ||
av_codec_get_tag(oc->oformat->codec_tag, icodec->codec_id) <= 0) {
ocodec->codec_tag = icodec->codec_tag;
} else {
ocodec->codec_tag = 0;
}
st->sample_aspect_ratio = s->streams[i]->sample_aspect_ratio;
}



Loading…
Cancel
Save