Browse Source

avformat/flvenc: Allow muxing video codecs which are not explicitly supported by the muxer

This allows stream copying video codecs before they are explicitly
supported. The same feature was in the past useful for audio codecs
in flv

This partly reverts the changes from 735ab7c5e0

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.7
Michael Niedermayer 11 years ago
parent
commit
76f4b11780
1 changed files with 11 additions and 2 deletions
  1. +11
    -2
      libavformat/flvenc.c

+ 11
- 2
libavformat/flvenc.c View File

@@ -336,6 +336,13 @@ static int unsupported_codec(AVFormatContext *s,
return AVERROR(ENOSYS); return AVERROR(ENOSYS);
} }


static int check_video_codec_tag(int codec_tag) {
if (codec_tag <= 0 || codec_tag > 15) {
return AVERROR(ENOSYS);
} else
return 0;
}

static int flv_write_header(AVFormatContext *s) static int flv_write_header(AVFormatContext *s)
{ {
int i; int i;
@@ -358,7 +365,7 @@ static int flv_write_header(AVFormatContext *s)
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
flv->video_enc = enc; flv->video_enc = enc;
if (!ff_codec_get_tag(flv_video_codec_ids, enc->codec_id))
if (check_video_codec_tag(enc->codec_tag) < 0)
return unsupported_codec(s, "Video", enc->codec_id); return unsupported_codec(s, "Video", enc->codec_id);


if (enc->codec_id == AV_CODEC_ID_MPEG4 || if (enc->codec_id == AV_CODEC_ID_MPEG4 ||
@@ -542,7 +549,9 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt)
case AVMEDIA_TYPE_VIDEO: case AVMEDIA_TYPE_VIDEO:
avio_w8(pb, FLV_TAG_TYPE_VIDEO); avio_w8(pb, FLV_TAG_TYPE_VIDEO);


flags = ff_codec_get_tag(flv_video_codec_ids, enc->codec_id);
flags = enc->codec_tag;
if (check_video_codec_tag(flags) < 0)
return unsupported_codec(s, "Video", enc->codec_id);


flags |= pkt->flags & AV_PKT_FLAG_KEY ? FLV_FRAME_KEY : FLV_FRAME_INTER; flags |= pkt->flags & AV_PKT_FLAG_KEY ? FLV_FRAME_KEY : FLV_FRAME_INTER;
break; break;


Loading…
Cancel
Save