On Mon, 22 Jan 2018 11:20:08 +0000 "Li, Zhong" <[email protected]> wrote:
> MSDK provides an API (MFXVideoDECODE_DecodeHeader) to parse video > parameters. Currently it hasn't been used. > Instead, software parsers are used. It works well for h264 decoder, and > basically works well for hevc decoder (some issues found by Mayxm due to > width/height are unaligned, I also found some hevc clips without setting > profile can be decoded by software but qsv failed) . > More issues found on other decoders such as VP8. The decoding conformance > pass rate is low and looks like it is due to some missing/incompatible header > information is passed to qsv decoder (though Mark provides a patch 182cf17 > but still something is missing). > Similar issues happens on MJPEG decoding which I am going to add. > Maybe we can continue to work on software parsers for qsv, but I believe > replace software parser with MFXVideoDECODE_DecodeHeader is a better choice: > > 1. It can remove the dependence on various software parsers, and just > need a unified interface for all codes. > > 2. It will be very easy to add new decoder such as MJPEG decoding > support without any software parser patches. > > 3. MFXVideoDECODE_DecodeHeader is used by MSDK sample decoder (i.e: > sample_decode), so it is reliable for MSDK decoder. (As my test, it can > effectively improve decoding conformance pass rate, especially for vp8 > decoding.) > > 4. CUVID decoder is using CUVID parser instead of software parser, maybe > qsv can align with it. > > Negative effect: > > 1. May cause some regression since it will take effect to all codecs. > > 2. Others? > > Appreciated for any comment. If we are agree with that, patches will be > sent soon (about following next two weeks). I don't know how qsvdec works in particular (doesn't it pretty much parse all the codec stream in MFX?). But if you look how it went for cuvid vs. nvdec, using as much parsing functionality from libavcodec as possible is superior. Cuvid/nvdec are nvidia's decoder wrappers as they are named in FFmpeg. (They don't necessarily match with the naming nvidia itself uses.) Cuvid is a "full stream" decoder, which lets nvidia's software parse the full stream. nvdec is a hwaccel, using nvidia's low level API on top of libavcodec's own decoders, and which gets only slices _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
