mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-28 10:22:10 +00:00
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>
This commit is contained in:
parent
6253cee497
commit
4293464705
@ -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…
Reference in New Issue
Block a user