[FFmpeg-trac] #1294(undetermined:open): Support for Omneon AVC Intra 50/100 MXF OP1a files
FFmpeg
trac at avcodec.org
Sat Sep 15 17:51:29 CEST 2012
#1294: Support for Omneon AVC Intra 50/100 MXF OP1a files
-------------------------------------+-------------------------------------
Reporter: Thomas | Owner:
Mundt | Status: open
Type: defect | Component:
Priority: normal | undetermined
Version: git-master | Resolution:
Keywords: h264intra | Blocked By:
mxf | Reproduced by developer: 1
Blocking: |
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Comment (by reimar):
So below patch will allow playing the AVCI100 file.
If you try searching for the SPS/PPS you will see there is nothing similar
in the original file, so as I suspected the problem is not that SPS/PPS
exists only for the first file but that it does not exist at all in the
file.
However there are several issues
1) It does not work for AVCI50, so that one uses different SPS/PPS which I
don't know.
2) I have no way to detect which files are actually AVC-Intra and which
are normal files. Using this patch on normal files has a significant risk
of breaking things. I also don't know how to properly distinguish AVCI50
and AVCI100.
3) This probably should be moved into common code, since the mov demuxer
needs the same thing to play AVCI files.
{{{
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 3ddeb99..d93910f 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -1487,6 +1489,27 @@ static int mxf_parse_structural_metadata(MXFContext
*mxf)
if (descriptor->extradata) {
st->codec->extradata = descriptor->extradata;
st->codec->extradata_size = descriptor->extradata_size;
+ } else {
+ static const uint8_t avc100extra[] = {
+ // SPS
+ 0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x00, 0x29,
+ 0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63,
+ 0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19,
+ 0x18, 0x21, 0x03, 0x3a, 0x46, 0x65, 0x6a, 0x65,
+ 0x24, 0xad, 0xe9, 0x12, 0x32, 0x14, 0x1a, 0x26,
+ 0x34, 0xad, 0xa4, 0x41, 0x82, 0x23, 0x01, 0x50,
+ 0x2b, 0x1a, 0x24, 0x69, 0x48, 0x30, 0x40, 0x2e,
+ 0x11, 0x12, 0x08, 0xc6, 0x8c, 0x04, 0x41, 0x28,
+ 0x4c, 0x34, 0xf0, 0x1e, 0x01, 0x13, 0xf2, 0xe0,
+ 0x3c, 0x60, 0x20, 0x20, 0x28, 0x00, 0x00, 0x03,
+ // PPS
+ 0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x94, 0x20,
+ 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x32, 0x48,
+ 0x90
+ };
+ st->codec->extradata = av_mallocz(sizeof(avc100extra) +
FF_INPUT_BUFFER_PADDING_SIZE);
+ memcpy(st->codec->extradata, avc100extra,
sizeof(avc100extra));
+ st->codec->extradata_size = sizeof(avc100extra);
}
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
source_track->intra_only = mxf_is_intra_only(descriptor);
}}}
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1294#comment:6>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list