New issue
Advanced search Search tips

Issue 881922 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Jan 19
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Feature

Blocked on:
issue 890054



Sign in to add a comment

D3D11 VP9 playback tracking

Project Member Reported by tmathmeyer@chromium.org, Sep 7

Issue description

Project Member

Comment 1 by bugdroid1@chromium.org, Sep 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/33198f28e093b3bc2c5a877697fe6c82d7e89fc7

commit 33198f28e093b3bc2c5a877697fe6c82d7e89fc7
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Fri Sep 07 22:35:28 2018

Adds D3D11VP9Picture for use in an Accelerator

It is basically a mimic of the h264 picture, and will be used in the
D3D11Vp9accelerator class, when that is ready. There also appear to be
two styles for accelerators to downcast, where vaapi & V4L2 use
as___Picture() methods to get a raw pointer, but D3D11 just uses static
casts. I think a future good cleanup is to get rid of the extra methods
and not rely on forward declarations.

Bug:  881922 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I6a7cfbb81e230a7ea46ae3c3e27aebf52a559913
Reviewed-on: https://chromium-review.googlesource.com/1213871
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589695}
[modify] https://crrev.com/33198f28e093b3bc2c5a877697fe6c82d7e89fc7/media/gpu/BUILD.gn
[modify] https://crrev.com/33198f28e093b3bc2c5a877697fe6c82d7e89fc7/media/gpu/vp9_picture.h
[add] https://crrev.com/33198f28e093b3bc2c5a877697fe6c82d7e89fc7/media/gpu/windows/d3d11_vp9_picture.cc
[add] https://crrev.com/33198f28e093b3bc2c5a877697fe6c82d7e89fc7/media/gpu/windows/d3d11_vp9_picture.h

Project Member

Comment 2 by bugdroid1@chromium.org, Sep 8

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9cdf0fa1927864eb8f3c59f607fe3c609cb90ba8

commit 9cdf0fa1927864eb8f3c59f607fe3c609cb90ba8
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Sat Sep 08 02:05:09 2018

Move D3D11VideoDecoderClient to own header file

D3D11VideoDecoderClient is subclassed by the D3D11VideoDecoder to allow
accelerators to get and set picture buffers. Since this will be shared
by the H264Accelerator and VP9Accelerator, it should be moved into its
own file.

Bug:  881922 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: If48714459ad29c6f29d7b98c84f3f45cc878d448
Reviewed-on: https://chromium-review.googlesource.com/1214103
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589752}
[modify] https://crrev.com/9cdf0fa1927864eb8f3c59f607fe3c609cb90ba8/media/gpu/BUILD.gn
[modify] https://crrev.com/9cdf0fa1927864eb8f3c59f607fe3c609cb90ba8/media/gpu/windows/d3d11_h264_accelerator.h
[modify] https://crrev.com/9cdf0fa1927864eb8f3c59f607fe3c609cb90ba8/media/gpu/windows/d3d11_video_decoder.h
[add] https://crrev.com/9cdf0fa1927864eb8f3c59f607fe3c609cb90ba8/media/gpu/windows/d3d11_video_decoder_client.h

Project Member

Comment 3 by bugdroid1@chromium.org, Sep 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d322c0b657917c69332c33f48f52823456d3e148

commit d322c0b657917c69332c33f48f52823456d3e148
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Sat Sep 15 12:20:24 2018

Adds a stub of the VP9Accelerator

D3D11VP9Accelerator is just a stub for now, but is protected by checks
to make sure that it is not instantiated yet. There is also a slight
refactoring of D3D11VideoDecoder to better support multiple codec types
in the ::Initialize() and ::IsPotentiallySupported() methods.

Bug:  881922 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I28505b279f00ab3b8bb6f750d554aad3588a96eb
Reviewed-on: https://chromium-review.googlesource.com/1223029
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#591582}
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/base/media_switches.cc
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/base/media_switches.h
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/base/test_helpers.cc
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/base/test_helpers.h
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/gpu/BUILD.gn
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/gpu/windows/d3d11_video_decoder.cc
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/gpu/windows/d3d11_video_decoder.h
[modify] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/gpu/windows/d3d11_video_decoder_unittest.cc
[add] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/gpu/windows/d3d11_vp9_accelerator.cc
[add] https://crrev.com/d322c0b657917c69332c33f48f52823456d3e148/media/gpu/windows/d3d11_vp9_accelerator.h

Some nice reference for GUIDS:
914C84A3: unknown
6AFFD11E: unknown
33FCFE41: unknown
9947EC6F: unknown
ED418A9F: D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_NOGMC
EFD64D74: D3D11_DECODER_PROFILE_MPEG4PT2_VLD_SIMPLE
5B11D51B: D3D11_DECODER_PROFILE_HEVC_VLD_MAIN
1B81BE68: D3D11_DECODER_PROFILE_H264_VLD_NOFGT
F9AACCBB: D3D11_DECODER_PROFILE_H264_VLD_STEREO_NOFGT
D79BE8DA: D3D11_DECODER_PROFILE_H264_VLD_STEREO_PROGRESSIVE_NOFGT
32FCFE3F: unknown
1B81BEA3: D3D11_DECODER_PROFILE_VC1_VLD
1B81BEA4: D3D11_DECODER_PROFILE_VC1_D2010
6F3EC719: D3D11_DECODER_PROFILE_MPEG1_VLD
EE27417F: D3D11_DECODER_PROFILE_MPEG2_VLD
86695F12: D3D11_DECODER_PROFILE_MPEG2and1_VLD
Project Member

Comment 5 by bugdroid1@chromium.org, Sep 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a588f58227393ab20681f2247362f28ef3cfd1f5

commit a588f58227393ab20681f2247362f28ef3cfd1f5
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Mon Sep 24 22:44:30 2018

Drop Version requirement of D3D11 to 11.0

Bug:  881922 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I9298701a3790ca2b7c9aaf43a6c9ce6c1abaa74c
Reviewed-on: https://chromium-review.googlesource.com/1241556
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593723}
[modify] https://crrev.com/a588f58227393ab20681f2247362f28ef3cfd1f5/media/gpu/windows/d3d11_video_decoder.cc
[modify] https://crrev.com/a588f58227393ab20681f2247362f28ef3cfd1f5/media/gpu/windows/d3d11_video_decoder_unittest.cc

Blockedon: 890054
Project Member

Comment 7 by bugdroid1@chromium.org, Oct 3

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/82ed7e91bb73df22a1db25e3fcd38dfdd0228de3

commit 82ed7e91bb73df22a1db25e3fcd38dfdd0228de3
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Wed Oct 03 01:49:36 2018

Support VP9 Hardware Acceleration using D3D11

Completes:
 - D3D11VP9Accelerator::SubmitDecode
 - D3D11VP9Accelerator::OutputPicture
 - D3D11VP9Accelerator::CreateVP9Picture

Which are the three methods required to successfully implement a
VP9Accelerator class.

Bug:  881922 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I6af7ebb07b53febf4797c1849a976b1ce8424df1
Reviewed-on: https://chromium-review.googlesource.com/c/1244664
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Reviewed-by: Rintaro Kuroiwa <rkuroiwa@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596089}
[modify] https://crrev.com/82ed7e91bb73df22a1db25e3fcd38dfdd0228de3/media/gpu/windows/d3d11_video_decoder.cc
[modify] https://crrev.com/82ed7e91bb73df22a1db25e3fcd38dfdd0228de3/media/gpu/windows/d3d11_vp9_accelerator.cc
[modify] https://crrev.com/82ed7e91bb73df22a1db25e3fcd38dfdd0228de3/media/gpu/windows/d3d11_vp9_accelerator.h
[modify] https://crrev.com/82ed7e91bb73df22a1db25e3fcd38dfdd0228de3/media/gpu/windows/d3d11_vp9_picture.h

Project Member

Comment 8 by bugdroid1@chromium.org, Oct 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9b2cdfcd800d8acffdb6ca5d57ea669d83d3467f

commit 9b2cdfcd800d8acffdb6ca5d57ea669d83d3467f
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Fri Oct 19 22:08:39 2018

Support encrypted playback for D3D11VP9Accelerator

Plumb the media::DecryptConfig from the CodecPicture to the D3D11 buffer
descriptor, and made a small refactor of some of the macros to support
error in the case where a decrypt context couldn't be acquired.

Bug:  881922 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I9ac2cd889bb59e478260e81b3b42ee3d9ff6b177
Reviewed-on: https://chromium-review.googlesource.com/c/1275289
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Reviewed-by: Rintaro Kuroiwa <rkuroiwa@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601315}
[modify] https://crrev.com/9b2cdfcd800d8acffdb6ca5d57ea669d83d3467f/media/gpu/windows/d3d11_h264_accelerator.cc
[modify] https://crrev.com/9b2cdfcd800d8acffdb6ca5d57ea669d83d3467f/media/gpu/windows/d3d11_video_decoder.cc
[modify] https://crrev.com/9b2cdfcd800d8acffdb6ca5d57ea669d83d3467f/media/gpu/windows/d3d11_vp9_accelerator.cc
[modify] https://crrev.com/9b2cdfcd800d8acffdb6ca5d57ea669d83d3467f/media/gpu/windows/d3d11_vp9_accelerator.h

Project Member

Comment 9 by bugdroid1@chromium.org, Nov 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0b35c5fd4f5950f7fba61d1eb5a6999392c17554

commit 0b35c5fd4f5950f7fba61d1eb5a6999392c17554
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Tue Nov 27 22:29:29 2018

Encode InitializationVectors into VP9 video frames

Using a vector of subsamples and a starting initialization vector,
start incrementing the IV based on how large each video frame is. These
values are used by accelerators to support encrypted playback.

Since subsamples and frames can overlap, we have to cover multiple
scenarios:
frames & subsamples line up:
┌───────────────────┬────────────────────┐
│ frame 1           │ frame 2            │
┝━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━┥
│ clear1 | cipher 1 │ clear 2 | cipher 2 │
└───────────────────┴────────────────────┘

subsample clear covers all first frame and partial second frame:
┌───────────────────┬────────────────────┐
│ frame 1           │ frame 2            │
┝━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┥
│ clear1                  | cipher 1     │
└────────────────────────────────────────┘

one frame has more than one subsample, and subsamples might not align:
┌─────────────────────────┬────────────────────┐
│ frame 1                 │ frame 2            │
┝━━━━━━━━━━━━━━━━━━━┯━━━━━┷━━━━━━━━━━━━━━━━━━━━┥
│ clear1 | cipher 1 │ clear 2       | cipher 2 │
└───────────────────┴──────────────────────────┘
or:
┌────────────────────────────────────────┬────────────────────┐
│ frame 1                                │ frame 2            │
┝━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━┥
│ clear1 | cipher 1 │ clear 2 | cipher 2 │ clear 3 | cipher 3 │
└───────────────────┴────────────────────┴────────────────────┘
or:
┌─────────────────────────────────────────────┬───────────────┐
│ frame 1                                     │ frame 2       │
┝━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━┯━━━━┷━━━━━━━━━━━━━━━┥
│ clear1 | cipher 1 │ clear 2 | cipher 2 │ clear 3 | cipher 3 │
└───────────────────┴────────────────────┴────────────────────┘

a cipher section crosses a frame boundary: (this is an error and is caught)
┌───────────────────┬────────────────────┐
│ frame 1           │ frame 2            │
┝━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┥
│ clear1      | cipher 1                 │
└────────────────────────────────────────┘

Bug:  881922 
Bug: 836557
Change-Id: I7e69be34221702f77ec67daa8647c1767661bb51
Reviewed-on: https://chromium-review.googlesource.com/c/1307059
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: Rintaro Kuroiwa <rkuroiwa@chromium.org>
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611378}
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/base/decrypt_config.cc
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/base/decrypt_config.h
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/filters/vp9_parser.cc
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/filters/vp9_parser.h
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/filters/vp9_parser_fuzzertest.cc
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/filters/vp9_parser_unittest.cc
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/gpu/vp9_decoder.cc
[modify] https://crrev.com/0b35c5fd4f5950f7fba61d1eb5a6999392c17554/media/gpu/windows/dxva_video_decode_accelerator_win.cc

Project Member

Comment 10 by bugdroid1@chromium.org, Dec 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/582c6f98d40c393afc5c4f4009ccb0ab2f663cb0

commit 582c6f98d40c393afc5c4f4009ccb0ab2f663cb0
Author: Xiaohan Wang <xhwang@chromium.org>
Date: Wed Dec 19 23:12:37 2018

media: Always require non-null MediaLog in D3D11 decoders/accelerators

Currently D3D11VideoDecoder assumes its |media_log_| can be null and
check it before calling it. But it then passes media_log_.get() to
D3D11Vp9Accelerator unconditionally, which assumes its |media_log_| is
always non-null and call it unconditionally. This seems like a bug
though in production code the MediaLog is always non-null.

To avoid confusion and real bug, this CL adds DCHECKs to make sure the
MediaLog is always non-null. Tests are fixed to meet this requirement.

Bug:  881922 
Change-Id: Iee01d1b12a58ab74ebfaad733188b98dd7907494
Reviewed-on: https://chromium-review.googlesource.com/c/1384785
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#617999}
[modify] https://crrev.com/582c6f98d40c393afc5c4f4009ccb0ab2f663cb0/media/gpu/windows/d3d11_h264_accelerator.cc
[modify] https://crrev.com/582c6f98d40c393afc5c4f4009ccb0ab2f663cb0/media/gpu/windows/d3d11_video_decoder.cc
[modify] https://crrev.com/582c6f98d40c393afc5c4f4009ccb0ab2f663cb0/media/gpu/windows/d3d11_video_decoder_unittest.cc
[modify] https://crrev.com/582c6f98d40c393afc5c4f4009ccb0ab2f663cb0/media/gpu/windows/d3d11_vp9_accelerator.cc

Comment 12 by tmathmeyer@chromium.org, Jan 19 (4 days ago)

Status: Verified (was: Started)

Sign in to add a comment