On 11/9/2021 2:34 PM, Andreas Rheinhardt wrote:
The mxf and mxf_opatom muxer expect H.264 in Annex B format.
Amazing that nobody noticed this until now. Guess remuxing from mp4/mkv
to mxf is not a common scenario.
LGTM, just tested a quick remux and without the bsf it just fails.
Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com>
---
The check here is taken from mpegtsenc.
libavformat/mxfenc.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index c36ebef932..d1c4d43a50 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -3174,6 +3174,22 @@ static int mxf_interleave(AVFormatContext *s, AVPacket
*pkt,
return mxf_interleave_get_packet(s, pkt, flush);
}
+static int mxf_check_bitstream(AVFormatContext *s, const AVPacket *pkt)
+{
+ AVStream *const st = s->streams[pkt->stream_index];
+
+ switch (st->codecpar->codec_id) {
+ case AV_CODEC_ID_H264:
+ if (pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 &&
+ (AV_RB24(pkt->data) != 0x000001 ||
+ (st->codecpar->extradata_size > 0 &&
+ st->codecpar->extradata[0] == 1)))
+ return ff_stream_add_bitstream_filter(st, "h264_mp4toannexb",
NULL);
+ break;
+ }
+ return 1;
+}
+
#define MXF_COMMON_OPTIONS \
{ "signal_standard", "Force/set Signal Standard",\
offsetof(MXFContext, signal_standard), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 7,
AV_OPT_FLAG_ENCODING_PARAM, "signal_standard"},\
@@ -3249,6 +3265,7 @@ const AVOutputFormat ff_mxf_muxer = {
.audio_codec = AV_CODEC_ID_PCM_S16LE,
.video_codec = AV_CODEC_ID_MPEG2VIDEO,
.write_header = mxf_write_header,
+ .check_bitstream = mxf_check_bitstream,
.write_packet = mxf_write_packet,
.write_trailer = mxf_write_footer,
.deinit = mxf_deinit,
@@ -3282,6 +3299,7 @@ const AVOutputFormat ff_mxf_opatom_muxer = {
.audio_codec = AV_CODEC_ID_PCM_S16LE,
.video_codec = AV_CODEC_ID_DNXHD,
.write_header = mxf_write_header,
+ .check_bitstream = mxf_check_bitstream,
.write_packet = mxf_write_packet,
.write_trailer = mxf_write_footer,
.deinit = mxf_deinit,
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".