On 7/19/2018 9:57 AM, Francois Cartegnie wrote: > Hi, > > Sorry, can't reply to thread. > >> + if (version != 0) { >> + av_log(c->fc, AV_LOG_WARNING, "Unknown AV1 Codec Configuration Box >> version %d\n", version); >> + return 0; >> + } >> + avio_skip(pb, 3); /* flags */ >> + >> + avio_skip(pb, 1); /* reserved, initial_presentation_delay_present, >> initial_presentation_delay_minus_one */ >> + >> + ret = ff_get_extradata(c->fc, st->codecpar, pb, atom.size - 5); > > Seems to me that using OBU only as internal extradata, unlike h264 or > hevc, will only cause issues. > > There's no version as a guarantee on which OBU should be found, and it > implies parsing OBU just like with AnnexB.
Unlike avcc and hvcc, the spec didn't define a custom encapsulation for av1c, but it does state which types should be found: "The configOBUs field is expected to contain only OBU_SEQUENCE_HEADER and OBU_METADATA when the metadata OBU is applicable to all the associated samples" Matroska has the same requirements. > Parsing might also not be possible without accessing samples data when > there's potentially zero OBU in DCR. Steve Lhomme opened a issue[1] about it. The spec states "zero or more OBUs" in av1c, whereas In Matroska the Sequence Header is guaranteed to be present as they say "one or more OBUs". Fwiw, in ffmpeg's case at least, libavformat will generate the internal extradata on its own by extracting the first Sequence Header from the bitstream if the demuxer didn't allocate it itself. This is what's done for ivf and such containers. > > I've raised the issue on the spec, as the DCR itself does not seems to > contain enough extracted information, like profile for routing to a > proper decoder. Like you said, you're clearly expected to parse the Sequence Header OBU in configOBUs. Profile is the very first value in it after the OBU header. [1] https://github.com/AOMediaCodec/av1-isobmff/issues/46 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel