On Fri, Mar 2, 2018 at 2:23 AM, Jun Zhao <mypopy...@gmail.com> wrote: > > > On 2018/3/2 6:43, Mark Thompson wrote: >> On 01/03/18 08:07, Jerome Borsboom wrote: >>> v1.1->v1.2: Changed ifdefs around vc1_get_INTCOMPFIELD, vc1_get_LUMSCALE2, >>> and vc1_get_LUMSHIFT2 to av_unused. >>> >>> avcodec/vaapi: add fields for VAAPI VC-1 interlaced decoding >>> >>> Pass necessary bitstream elements to the VAAPI VC-1 decoder in order >>> to start doing interlaced decoding in hardware. >>> >>> Signed-off-by: Jerome Borsboom <jerome.borsb...@carpalis.nl> >>> --- >>> libavcodec/vaapi_vc1.c | 163 >>> ++++++++++++++++++++++++++++++++++++++++--------- >>> 1 file changed, 134 insertions(+), 29 deletions(-) >> Wrt hashes, here is fate/vc1/ilaced_twomv.vc1 from a few different decoders: >> >> libavcodec software decoder: >> >> 0, 0, 0, 1, 3110400, 0x764f8856 >> 0, 2, 2, 1, 3110400, 0x3b615b79 >> 0, 3, 3, 1, 3110400, 0x4fbb6f84 >> 0, 4, 4, 1, 3110400, 0xc1ca8532 >> 0, 5, 5, 1, 3110400, 0xb6e7d363 >> 0, 6, 6, 1, 3110400, 0x1beb5c34 >> 0, 7, 7, 1, 3110400, 0xcb8cb061 >> 0, 8, 8, 1, 3110400, 0x13ddbd61 >> 0, 9, 9, 1, 3110400, 0xde8f052f >> 0, 10, 10, 1, 3110400, 0x4d4072db >> 0, 11, 11, 1, 3110400, 0x4e5d29e3 >> 0, 12, 12, 1, 3110400, 0x75300531 >> 0, 13, 13, 1, 3110400, 0x1114285a >> >> VAAPI, "Intel i965 driver for Intel(R) Coffee Lake - 2.1.1.pre1 >> (2.0.0-140-gff23e69)": >> >> 0, 0, 0, 1, 3110400, 0xc95e8861 >> 0, 2, 2, 1, 3110400, 0xf58b5cbf >> 0, 3, 3, 1, 3110400, 0x2f866f33 >> 0, 4, 4, 1, 3110400, 0x05c18415 >> 0, 5, 5, 1, 3110400, 0x94dff199 >> 0, 6, 6, 1, 3110400, 0xf31fda77 >> 0, 7, 7, 1, 3110400, 0x60b1b2da >> 0, 8, 8, 1, 3110400, 0x748993f5 >> 0, 9, 9, 1, 3110400, 0x750fdf14 >> 0, 10, 10, 1, 3110400, 0x0879792c >> 0, 11, 11, 1, 3110400, 0x7e0e60fa >> 0, 12, 12, 1, 3110400, 0xda5bd837 >> 0, 13, 13, 1, 3110400, 0xb6346ccf >> >> VAAPI, "Mesa Gallium driver 18.1.0-devel for AMD Radeon (TM) RX 460 Graphics >> (POLARIS11 / DRM 3.23.0 / 4.15.7, LLVM 4.0.1)": >> >> 0, 0, 0, 1, 3110400, 0xc95e8861 >> 0, 2, 2, 1, 3110400, 0xafefc967 >> 0, 3, 3, 1, 3110400, 0x1d736d3b >> 0, 4, 4, 1, 3110400, 0x4f0fe807 >> 0, 5, 5, 1, 3110400, 0x758c6e9b >> 0, 6, 6, 1, 3110400, 0x56a5c92a >> 0, 7, 7, 1, 3110400, 0xa60fcf66 >> 0, 8, 8, 1, 3110400, 0x0c638017 >> 0, 9, 9, 1, 3110400, 0x3fe3310c >> 0, 10, 10, 1, 3110400, 0x3d2ea8de >> 0, 11, 11, 1, 3110400, 0xe2f8de62 >> 0, 12, 12, 1, 3110400, 0xa309cd68 >> 0, 13, 13, 1, 3110400, 0x8602abb1 >> >> Microsoft decoder (thanks to Hendrik for these): >> >> 0, 0, 0, 1, 3110400, 0xc95e8861 >> 0, 2, 2, 1, 3110400, 0xf58b5cbf >> 0, 3, 3, 1, 3110400, 0x2f866f33 >> 0, 4, 4, 1, 3110400, 0x05c18415 >> 0, 5, 5, 1, 3110400, 0x4077ca93 >> 0, 6, 6, 1, 3110400, 0x44d105fc >> 0, 7, 7, 1, 3110400, 0xa0608374 >> 0, 8, 8, 1, 3110400, 0x407689dc >> 0, 9, 9, 1, 3110400, 0x4707d00a >> 0, 10, 10, 1, 3110400, 0x74986831 >> 0, 11, 11, 1, 3110400, 0xa5912619 >> 0, 12, 12, 1, 3110400, 0x44aa5565 >> 0, 13, 13, 1, 3110400, 0xb9752774 >> >> The VAAPI hardware implementations agree with the Microsoft decoder for the >> initial four (Intel) or one (AMD) frames, while the software decoder doesn't >> agree at all. Unfortunately the AMD output is completely broken after the >> first frame, but the Intel output does look sensible through the whole >> sequence. So, while this could probably be improved in drivers just as it >> could in the software decoder, the FATE test is not relevant here so this >> discussion shouldn't block anything. >> >> As such, I'm happy to apply all of this as it is now. Does anyone have any >> further comments, especially about the VC-1 parts of this change? If not, >> I'll apply the whole set this weekend. >> >> Thanks, >> >> - Mark > I am OK to merge this part, in fact, I have a similar patches > (https://github.com/mypopydev/FFmpeg/commit/da0e142cfc6302790bba08704d4cc0b507a78f70), > but I think Jerome Borsboom did better job than me, so I didn't submit > the patch. > > For VC1 interlaced decoding can't bit match (bit-exact) for Windows > Decoder/FFmpeg SW Decoder/VA-API HWAccel Decoder, I guess the root cause > is the DCT/iDCT precision.
For the record, DXVA2/D3D11 on my Intel Haswell GPU also matches the Intel VAAPI results, so it seems to be up to the hardware/driver. NVIDIA DXVA2/D3D11 matches the Microsoft software decoder, FWIW. Is VC-1 even specified strong enough to result in bit-exact output from every possible decoder? - Hendrik _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel