New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 778093 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Feature

Blocked on:
issue 782394
issue 786457


Participants' hotlists:
high-bit-depth


Sign in to add a comment

Support 10-bits per component video format decoding in VAAPI

Project Member Reported by mcasas@chromium.org, Oct 25 2017

Issue description

libvaapi claims to support 10b per component/channel [1] on Kaby Lake.
Our vaapi_wrapper.cc also claims to understand those [2] but then 
on second thoughts vaapi_video_decode_accelerator.cc says njet [3]
and we fall back to the, this time working, venerable VpxVideoDecoder
(see e.g. the code around [4]).

Note that [5] also seems to be unhappy with >8b per channel depth but
we can decode it nonetheless when using the said VpxVideoDecoer.

Anyway, what we need is to make sure that, if VAAPI can support 10b
per channel video decoding, we use it.

[1] https://wiki.libav.org/Hardware/vaapi
[2] https://cs.chromium.org/chromium/src/media/gpu/vaapi_wrapper.cc?type=cs&sq=package:chromium&l=138
[3] https://cs.chromium.org/chromium/src/media/gpu/vaapi_video_decode_accelerator.cc?type=cs&sq=package:chromium&q=VaapiVideoDecodeAccelerator::VaapiVP9Accelerator::SubmitDecode%5C(&l=1794
[4] https://cs.chromium.org/chromium/src/media/filters/vpx_video_decoder.cc?type=cs&sq=package:chromium&l=888
[5] https://cs.chromium.org/chromium/src/media/filters/vp9_parser.cc?l=537
 

Comment 1 by mcasas@chromium.org, Oct 25 2017

Labels: GPU-Intel

Comment 2 by kcwu@chromium.org, Oct 25 2017

FYI, you can make vp9_parser.cc support 10-bits by just extend kDcQLookup and kAcQLookup tables for 10-bits. I didn't do so because I heard libvaapi didn't support 10bits at that time.


Comment 3 by mcasas@chromium.org, Oct 25 2017

Cc: fgalligan@chromium.org kcwu@chromium.org
Project Member

Comment 4 by bugdroid1@chromium.org, Oct 25 2017

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

commit d6902f4829057d88da2feaefbe56accb237c3309
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Wed Oct 25 15:23:21 2017

Move VAAPI static methods to impl classes

This CL moves the factory method VaapiPicture::Create to the two impl
classes vaapi_{drm,tfp}_picture, instead of having a single one with
#ifdefs.

Also in the process moved VaapiPicture::GetGLTextureTarget() which
was in a similar situation, made a member const, inlined AllowOverlay()
and changed LOG with DLOG()s in a file because:
 "prefer DVLOG(1) to other logging methods" [1]).

[1] https://chromium.googlesource.com/chromium/src/+/master/styleguide/c++/c++.md#logging

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I632acf8193ce052781b54ebed5d4957028635780
Reviewed-on: https://chromium-review.googlesource.com/735743
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#511468}
[modify] https://crrev.com/d6902f4829057d88da2feaefbe56accb237c3309/media/gpu/vaapi_drm_picture.cc
[modify] https://crrev.com/d6902f4829057d88da2feaefbe56accb237c3309/media/gpu/vaapi_picture.cc
[modify] https://crrev.com/d6902f4829057d88da2feaefbe56accb237c3309/media/gpu/vaapi_picture.h
[modify] https://crrev.com/d6902f4829057d88da2feaefbe56accb237c3309/media/gpu/vaapi_tfp_picture.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 26 2017

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

commit 7b787a8ae50ebf11f19ad38e2988aa8b6797af3a
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Thu Oct 26 12:41:46 2017

Vaapi: remove unused method VaapiWrapper::GetDerivedVaImage()

This CL removes the unused VaapiWrapper::GetDerivedVaImage() method.

https://cs.chromium.org/search/?sq=package:chromium&type=cs&q=GetDerivedVaImage

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I2ac596525bd0505da46fa9390d74f77ddb9de2cf
Reviewed-on: https://chromium-review.googlesource.com/738440
Reviewed-by: Pawel Osciak <posciak@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#511796}
[modify] https://crrev.com/7b787a8ae50ebf11f19ad38e2988aa8b6797af3a/media/gpu/vaapi_wrapper.cc
[modify] https://crrev.com/7b787a8ae50ebf11f19ad38e2988aa8b6797af3a/media/gpu/vaapi_wrapper.h

Project Member

Comment 6 by bugdroid1@chromium.org, Oct 26 2017

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

commit 2b952807825a9464cb6bd3bef888284e3e3c6bc4
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Thu Oct 26 15:41:23 2017

vaapi: remove VP9 Profiles > 0 from supported list

This CL removes VP9 Profiles > 0 from |kProfileMap| since these
are not supported (libva does support hem, but vaapi_wrapper doesn't).
(This was landed as part of a roll in crrev.com/2834313002).

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I090b3c096729c7d154acf44c47cb6c7b33776460
Reviewed-on: https://chromium-review.googlesource.com/737110
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#511828}
[modify] https://crrev.com/2b952807825a9464cb6bd3bef888284e3e3c6bc4/media/gpu/vaapi_wrapper.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Oct 28 2017

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

commit ac22b6c4cd333ee04e750a8152bb62a7fa585937
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Sat Oct 28 17:16:14 2017

vaapi: move VASurface methods to a new file va_surface.cc

This CL creates a new va_surface.cc to accompany the existing
va_surface.h, and moves into it the existing methods out of
vaapi_wrapper.cc which is already large enough.

** No new code is intended except:
 added a DCHECK and a few consts.

... but just in case:
TEST=compile a simplechrome with the patch, deploy to soraka, then
navigate to crosvideo2.appspot.com, reproduce e.g. VP9 1080p, and
verify in chrome://media-internals that GpuVideoDecoder is used
(and, of course, that the reproduction is as good as w/o the patch).


Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: If778645dba01600f63d1e857a5c9c76f761f0fda
Reviewed-on: https://chromium-review.googlesource.com/740041
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512404}
[modify] https://crrev.com/ac22b6c4cd333ee04e750a8152bb62a7fa585937/media/gpu/BUILD.gn
[add] https://crrev.com/ac22b6c4cd333ee04e750a8152bb62a7fa585937/media/gpu/va_surface.cc
[modify] https://crrev.com/ac22b6c4cd333ee04e750a8152bb62a7fa585937/media/gpu/va_surface.h
[modify] https://crrev.com/ac22b6c4cd333ee04e750a8152bb62a7fa585937/media/gpu/vaapi_wrapper.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Oct 30 2017

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

commit e37576eef6f8355d8de5267622264263a389cb48
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Mon Oct 30 11:48:24 2017

vaapi: make VADisplayState anonymous and file-static

This CL makes VaapiWrapper::VADisplayState internal to vaapi_wrapper.cc;
it removes two unnecessary member variables (|major_version_| and
|minor_version_|) which were used in a single method, which is slightly
rewritten for early-return.

The method VaapiWrapper::GetDisplayState() is made VADisplayState::Get()
which makes more sense. Until recently, this would have not existed and
instead we'd have a LazyInstance, but times have changed :-)

TEST=compile a simplechrome with the patch, deploy to soraka, then
navigate to crosvideo2.appspot.com, reproduce e.g. VP9 1080p, and
verify in chrome://media-internals that GpuVideoDecoder is used
(and, of course, that the reproduction is as good as w/o the patch).

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I4fa6b548fe5d7f123629ce9e5699151293bcfdc3
Reviewed-on: https://chromium-review.googlesource.com/739425
Reviewed-by: Pawel Osciak <posciak@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512473}
[modify] https://crrev.com/e37576eef6f8355d8de5267622264263a389cb48/media/gpu/vaapi_wrapper.cc
[modify] https://crrev.com/e37576eef6f8355d8de5267622264263a389cb48/media/gpu/vaapi_wrapper.h

Project Member

Comment 9 by bugdroid1@chromium.org, Oct 31 2017

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

commit 8f166030eb056c3623d8c77386076951aa561b5b
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Tue Oct 31 13:25:42 2017

vaapi: move va_stub_header.fragment to vaapi/ folder

This CL moves the file va_stub_header.fragment to
//media/gpu/vaapi/ folder.

This file is used in conjunction with the signature files
in the said folder, to produce an include file with the
functions used from libva. Right now having the fragment
in //media/gpu is unnecessary.

TEST= ** No new code added, if it compiles, we're good **
Bug:  778093 

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I05619e0e14c5f9bb48f3117709c6f29c6eaf1210
Reviewed-on: https://chromium-review.googlesource.com/744462
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Reviewed-by: Pawel Osciak <posciak@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512805}
[modify] https://crrev.com/8f166030eb056c3623d8c77386076951aa561b5b/media/gpu/BUILD.gn
[rename] https://crrev.com/8f166030eb056c3623d8c77386076951aa561b5b/media/gpu/vaapi/va_stub_header.fragment

Owner: mcasas@chromium.org
Status: Assigned (was: Available)
Project Member

Comment 12 by bugdroid1@chromium.org, Nov 3 2017

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

commit f4d324a8e8ed5f1c8f4d19431ebb14dea2acf983
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Fri Nov 03 19:32:01 2017

Add accelerated video deco/enco support to chrome://gpu

This CL adds the accelerated video deco/enco caps to
chrome://gpu. The result can be seen in [1].

[1] https://i.imgur.com/2A2M6Rs.png (or https://i.imgur.com/2A2M6Rs.png)

Bug:  778093 
Change-Id: I8a12cb456026982bd16402adf71a81c9a7c3aa07
Reviewed-on: https://chromium-review.googlesource.com/753242
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513871}
[modify] https://crrev.com/f4d324a8e8ed5f1c8f4d19431ebb14dea2acf983/content/browser/gpu/gpu_internals_ui.cc
[modify] https://crrev.com/f4d324a8e8ed5f1c8f4d19431ebb14dea2acf983/content/browser/resources/gpu/info_view.html
[modify] https://crrev.com/f4d324a8e8ed5f1c8f4d19431ebb14dea2acf983/content/browser/resources/gpu/info_view.js

Project Member

Comment 13 by bugdroid1@chromium.org, Nov 7 2017

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

commit 60878ca9728c7972c04e4829f182a12df948285b
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Tue Nov 07 15:27:19 2017

vaapi_wrapper: move Pre/PostSandboxInitialization to VaDisplayState

This CL moves the static Pre-PostSandboxInitialization() methods
from VaapiWrapper to its internal VADisplayState singleton.

Both these sandbox initialization methods are run in a singleton
pre-normal activity fashion, so VaDisplayState is a more logical
place and also enhances encapsulation.

PreSandboxInitialization() is moved verbatim.

This CL also moves the printout of PostSandboxInitialization
from VaInitialize() to the said static method.

(This CL is also necessary for a later one making the collection
of the supported profiles fully internal to vaapi_wrapper.cc.)

TEST=simplechrome + vp9 playbacks works as before in Soraka.

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ib395d7d333d4ee8d645c8c038352ebc32211602d
Reviewed-on: https://chromium-review.googlesource.com/753843
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Pawel Osciak <posciak@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514473}
[modify] https://crrev.com/60878ca9728c7972c04e4829f182a12df948285b/media/gpu/vaapi_wrapper.cc
[modify] https://crrev.com/60878ca9728c7972c04e4829f182a12df948285b/media/gpu/vaapi_wrapper.h

Cc: -fgalligan@chromium.org fgalligan@google.com
Blockedon: 782394
Project Member

Comment 16 by bugdroid1@chromium.org, Nov 10 2017

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

commit ec6c6e0a27aed7db660f6e07afefc0ed95f88383
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Fri Nov 10 01:38:54 2017

vaapi: extend VP9Parser for 10-bit per channel VP9

This CL extends |kDcQLookup| and |kAcQLookup| for 10-bit
VP9 formats (they are also reformatted to suit the definition
on the Spec [1] -- hence the "clang format off". The tables
are moved to the anonymous namespace at the top of the file.

This CL also adds a new ivf file and extends
vp9_parser_unittest.cc (Vp9ParserTest) accordingly.

libva (via vaapi_* files) is the only client that supports
VP9.2 and only supports 10 bits per component formats, so
there's no point in supporting 12 bits per component now
(see https://github.com/01org/libva/issues/137).

Method Vp9Parser::SetupSegmentationDequant() is changed to
return a boolean which is false if e.g. the VP9 has an
unsupported bit depth. ToT has only a DLOG_IF(ERROR...).

[1] https://www.webmproject.org/vp9/#draft-vp9-bitstream-and-decoding-process-specification

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I4179c2849160f8486252e48b8e648ab78eff92e0
Reviewed-on: https://chromium-review.googlesource.com/740762
Reviewed-by: Fredrik Hubinette <hubbe@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515405}
[modify] https://crrev.com/ec6c6e0a27aed7db660f6e07afefc0ed95f88383/media/filters/vp9_parser.cc
[modify] https://crrev.com/ec6c6e0a27aed7db660f6e07afefc0ed95f88383/media/filters/vp9_parser.h
[modify] https://crrev.com/ec6c6e0a27aed7db660f6e07afefc0ed95f88383/media/filters/vp9_parser_unittest.cc
[modify] https://crrev.com/ec6c6e0a27aed7db660f6e07afefc0ed95f88383/media/test/data/README
[add] https://crrev.com/ec6c6e0a27aed7db660f6e07afefc0ed95f88383/media/test/data/crowd-vp9.2.ivf

Project Member

Comment 17 by bugdroid1@chromium.org, Nov 14 2017

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

commit 172c7e374787f68ff1036cbc355fb802883c3620
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Tue Nov 14 19:13:36 2017

vaapi: move LazyProfileInfos to the vaapi_wrapper.cc file

LazyProfileInfos is a VaapiWrapper singleton to enumerate upon
construction the supported encode and decode ProfileInfos. This
CL moves ProfileInfo and LazyProfileInfos to the implementation
file, and bundles in it the methods used exclusively there.

Details:
- LazyProfileInfos is moved to vaapi_wrapper.cc, and the
 struct ProfileInfo is made internal to it.

- LazyProfileInfos() calls explicitly VADisplayState::Initialize()
 on ctor and DeInitialize() on dtor, whereas before it relied
 on an ephemeral VaapiWrapper to do this dance, churning objects
 unnecessarily..

- VADisplayState::PostSandboxInitialization() is now called
 in a singleton way from LazyProfileInfos() ctor.

TEST=compiled and deployed simplechrome on Soraka, chrome://gpu
enumerates the same supported enco/deco profiles. Played back
a VP9 4K video and confirmed via chrome://media-internals that
GpuVideoDecoder is used. Compiled-copied-run the unittests:
video_decode_accelerator_unittest --test_video_data=test-25fps.vp9:320:240:250:250:35:150:12

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I307ae09b03c7830e508dcbc936ae6de6503772c8
Reviewed-on: https://chromium-review.googlesource.com/758879
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#516376}
[modify] https://crrev.com/172c7e374787f68ff1036cbc355fb802883c3620/media/gpu/vaapi_wrapper.cc
[modify] https://crrev.com/172c7e374787f68ff1036cbc355fb802883c3620/media/gpu/vaapi_wrapper.h

Project Member

Comment 18 by bugdroid1@chromium.org, Nov 15 2017

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

commit 20b6d400c963409faddfe11195b2260afddfba5a
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Wed Nov 15 12:51:06 2017

vaapi: cleanup: move LazyProfileInfos to unnamed namespace

This CL is a follow up to crrev.com/c/758879, and relocates to
the unnamed namespace of the file the LazyProfileInfos methods
that are scattered in vaapi_wrapper.cc.

**No code was changed whatsoever**,
  this CL just moves things around.

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I64f7093b19d4de7fdbd9a66443be3dfc976460a9
Reviewed-on: https://chromium-review.googlesource.com/769989
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#516675}
[modify] https://crrev.com/20b6d400c963409faddfe11195b2260afddfba5a/media/gpu/vaapi_wrapper.cc

Project Member

Comment 19 by bugdroid1@chromium.org, Nov 15 2017

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

commit f97eee40125026aef804caf67a917099dca1e680
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Wed Nov 15 23:21:43 2017

vaapi wrapper: s/LazyProfileInfos/VASupportedProfiles/

This CL renames vaapi_wrapper.cc's LazyProfileInfos to
VASupportedProfiles, because the latter reflects better
the purpose, and we shouldn't have to encode the lifetime
in the class name.

TEST=**No new code**, mechanical changes.

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ia1ae707a370347980dadb63baa71c8bfab3bd72a
Reviewed-on: https://chromium-review.googlesource.com/772970
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#516882}
[modify] https://crrev.com/f97eee40125026aef804caf67a917099dca1e680/media/gpu/vaapi_wrapper.cc

Blockedon: 786457
Project Member

Comment 22 by bugdroid1@chromium.org, Nov 28 2017

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

commit e811a3e57cef042000fd6bed13f1e8aa76601302
Author: Miguel Casas <mcasas@chromium.org>
Date: Tue Nov 28 01:56:11 2017

WebM: Parse VP9 Profile out of CodecPrivate

This CL teaches WebMVideoClient to parse the |codec_private|
field, if present, to figure out the VP9 Profile if any. This
is a necessary step to support VP9.2 10b on Vaapi.

TEST=crosvideo.appspot.com/?codec=vp9.2&loop=true and newly
added unittests.

Bug:  778093 , 592074
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ic62519b32818fe409d15f54b6ddb9798deea88da
Reviewed-on: https://chromium-review.googlesource.com/786211
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Sergey Volk <servolk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#519519}
[modify] https://crrev.com/e811a3e57cef042000fd6bed13f1e8aa76601302/media/formats/BUILD.gn
[modify] https://crrev.com/e811a3e57cef042000fd6bed13f1e8aa76601302/media/formats/webm/webm_video_client.cc
[modify] https://crrev.com/e811a3e57cef042000fd6bed13f1e8aa76601302/media/formats/webm/webm_video_client.h
[add] https://crrev.com/e811a3e57cef042000fd6bed13f1e8aa76601302/media/formats/webm/webm_video_client_unittest.cc

Blockedon: 789160
Project Member

Comment 24 by bugdroid1@chromium.org, Nov 28 2017

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

commit 609b671ad2bdc4a9b40e92d2d1fc37c985cd3f70
Author: Miguel Casas <mcasas@chromium.org>
Date: Tue Nov 28 23:52:22 2017

VADisplayState::PostSandboxInitialization from ctor

This CL moves the call to static PostSandboxInitialization()
from its user, VASupportedProfiles ctor, to the Initialize()
method; this way we improve encapsulation and guarantee that
VADisplayState sandbox is correctly initialize in all possible
call stacks.

TEST=simplechrome on Soraka playing back VP9 videos, chrome://gpu
enumeration and chrome://media-internals OK.
Compile-ran video_decode_accelerator_unittest with the vp9 file
and looked ok too.

Bug:  778093 

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I960437bb36e2d2fdf43c33251394b76f84d2ea74
Reviewed-on: https://chromium-review.googlesource.com/784470
Reviewed-by: Pawel Osciak <posciak@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#519908}
[modify] https://crrev.com/609b671ad2bdc4a9b40e92d2d1fc37c985cd3f70/media/gpu/vaapi_wrapper.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Nov 30 2017

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

commit da63104c33b55947a9f8651e499b00c3d575b708
Author: Miguel Casas <mcasas@chromium.org>
Date: Thu Nov 30 17:32:42 2017

vaapi: support decoding VP9 Profile 2 (10bpc)

This CL adds support for playing back 10 bit VP9 Profile 2 videos
using Vaapi (via VaapiVDA and VaapiWrapper). Essentially it adds
using VA_RT_FORMAT_YUV420_10BPP and indicating 10b where needed.

Vaapi supports VP9.2 10bpc on Kaby Lake processors (e.g. Soraka,
Eve). Before that, no changes, VaapiVDA is not used for VP9.2,
and we fall back to VpxVideoDecoder as on ToT.

Note: the decoding itself happens in 10bits, but blitting still
happens onto an 8 bit per channel GpuMemoryBuffer. Further CLs
will wire higher bit depth GpuMemoryBuffers.

TEST= chrome://gpu; video playback e.g. [1] and verify via
chrome://media-internals that GpuVideoDecoder is engaged.
Note that the video is played back smoothlier than with
VpxVideoDecoder. All this on soraka with a simplechrome.
- Also extended video_decode_accelerator_unittest, but has to be
landed in separate CLs, see: crrev.com/c/797853


[1] http://crosvideo.appspot.com/?codec=vp9.2&loop=true

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ic9fe15a1a1f4470704228882cccd8a9174edbfd3
Reviewed-on: https://chromium-review.googlesource.com/797443
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#520587}
[modify] https://crrev.com/da63104c33b55947a9f8651e499b00c3d575b708/media/gpu/vaapi_video_decode_accelerator.cc
[modify] https://crrev.com/da63104c33b55947a9f8651e499b00c3d575b708/media/gpu/vaapi_video_decode_accelerator.h
[modify] https://crrev.com/da63104c33b55947a9f8651e499b00c3d575b708/media/gpu/vaapi_wrapper.cc

Project Member

Comment 26 by bugdroid1@chromium.org, Nov 30 2017

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

commit 6300abc73fb6391b1e04fe0ba0138ef339eac26f
Author: Miguel Casas <mcasas@chromium.org>
Date: Thu Nov 30 20:50:00 2017

vaapi: add VP9 Profile 2 test video file

This CL adds two files to //media/test/data, namely:
- test-25fps.vp9_2: VP9 Profile 2 file in an IVF container
- test-25fps.vp9_2.md5: md5 version of its thumbnails.
to be used with video_decode_accelerator_unittests.

This CL also updates Vp9ParserTest to use the new file instead
of media/test/data/crowd-vp9.2.ivf, which is removed (the
new file is smaller).

It also updates media/test/data/README.md with details on how
the new files were generated.

TEST=compile and run on a soraka:
video_decode_accelerator_unittest --test_video_data=test-25fps.vp9_2:320:240:250:250:35:150:14
(Note the last number is a 14 == VideoCodecProfile for VP9.2)

Bug:  778093 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I53e1a1802cb4c8b634e5f979d7afba143b259b68
Reviewed-on: https://chromium-review.googlesource.com/797853
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#520670}
[modify] https://crrev.com/6300abc73fb6391b1e04fe0ba0138ef339eac26f/media/filters/vp9_parser_unittest.cc
[modify] https://crrev.com/6300abc73fb6391b1e04fe0ba0138ef339eac26f/media/test/data/README
[delete] https://crrev.com/df632423d8a62f351d436b11e1d41d2fa33e5be4/media/test/data/crowd-vp9.2.ivf
[add] https://crrev.com/6300abc73fb6391b1e04fe0ba0138ef339eac26f/media/test/data/test-25fps.vp9_2
[add] https://crrev.com/6300abc73fb6391b1e04fe0ba0138ef339eac26f/media/test/data/test-25fps.vp9_2.md5

Project Member

Comment 27 by bugdroid1@chromium.org, Dec 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/6936849a02248f94c1e7741aed53309ef8c700b8

commit 6936849a02248f94c1e7741aed53309ef8c700b8
Author: Miguel Casas <mcasas@chromium.org>
Date: Fri Dec 01 18:13:49 2017

avtest_label_detect: Add VP9 Profile 2 detection

TEST=Run on a Kaby Lake (e.g. soraka) VP9.2 is supported,
elsewhere is not.
BUG= chromium:778093 
Change-Id: I4ac9a28a433a9a898e22f79216310ce61ff11315
Reviewed-on: https://chromium-review.googlesource.com/798191
Commit-Ready: Miguel Casas <mcasas@chromium.org>
Tested-by: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>

[modify] https://crrev.com/6936849a02248f94c1e7741aed53309ef8c700b8/avtest_label_detect/main.c
[modify] https://crrev.com/6936849a02248f94c1e7741aed53309ef8c700b8/avtest_label_detect/detect_hw_video_acc.c
[modify] https://crrev.com/6936849a02248f94c1e7741aed53309ef8c700b8/avtest_label_detect/label_detect.h

Project Member

Comment 28 by bugdroid1@chromium.org, Dec 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/c9f4daec362c75f4d340e54ff9a5f78bb6bc23ce

commit c9f4daec362c75f4d340e54ff9a5f78bb6bc23ce
Author: Miguel Casas <mcasas@chromium.org>
Date: Fri Dec 01 22:54:41 2017

autotests/video_VideoDecodeAccelerator: Add vp9.2 file

This CL adds a control.vp9_2 file that details how to
run video_decode_accelerator_unittest under autotest for
VP9 Profile 2, 10 bits per component (or per channel).

CQ-DEPEND=CL:797853, CL:798191
TEST=Run on a Kaby Lake (e.g. soraka) VP9.2 is supported,
elsewhere is not.
BUG= chromium:778093 
Change-Id: I5edf36a27c86b2c18e3a572461668a1fe762c685
Reviewed-on: https://chromium-review.googlesource.com/798151
Commit-Ready: Miguel Casas <mcasas@chromium.org>
Tested-by: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>

[add] https://crrev.com/c9f4daec362c75f4d340e54ff9a5f78bb6bc23ce/client/site_tests/video_VideoDecodeAccelerator/control.vp9_2

The CL in comment #26, which adds the video test file, was landed in Chrome 64.3282.0 or later.
Chrome on ChromeOS is currently 64.0.3280.5.
Autotest system just copies all of files media/test/data/ in Chrome to DUT.
Therefore, video_VideoDecodeAccelerator for control.vp9_2 is failed by the lack of video test file.

What is worse, Chrome on ChromeOS has not been updated because of the failure of video_VideoDecodeAccelerator.vp9_2 in Chrome PFQ.
It is a kind of dead locking.
I reverted the autotest CL. crosreview.com/805009
We are going to reland the CL again after Chrome on ChromeOS will be updated enough. 
hiroh@: thanks for the gardening, I was "too fast too furious" !!!
Project Member

Comment 31 by bugdroid1@chromium.org, Dec 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/5d3bba4be4464c6a993b38d006ce295788e8a22b

commit 5d3bba4be4464c6a993b38d006ce295788e8a22b
Author: Hirokazu Honda <hiroh@chromium.org>
Date: Tue Dec 05 04:02:51 2017

Revert "autotests/video_VideoDecodeAccelerator: Add vp9.2 file"

This reverts commit c9f4daec362c75f4d340e54ff9a5f78bb6bc23ce.

Reason for revert: video_VideoDecodeAccelerator.vp9_2 is failed on bvt-perbuild and blocks PFQ.
Original change's description:
> autotests/video_VideoDecodeAccelerator: Add vp9.2 file
>
> This CL adds a control.vp9_2 file that details how to
> run video_decode_accelerator_unittest under autotest for
> VP9 Profile 2, 10 bits per component (or per channel).
>
> CQ-DEPEND=CL:797853, CL:798191
> TEST=Run on a Kaby Lake (e.g. soraka) VP9.2 is supported,
> elsewhere is not.
> BUG= chromium:778093 
> Change-Id: I5edf36a27c86b2c18e3a572461668a1fe762c685
> Reviewed-on: https://chromium-review.googlesource.com/798151
> Commit-Ready: Miguel Casas <mcasas@chromium.org>
> Tested-by: Miguel Casas <mcasas@chromium.org>
> Reviewed-by: Kuang-che Wu <kcwu@chromium.org>

Bug:  chromium:778093 
Change-Id: Ic3990bbba79a994fe4de1f07e87c4cc33b0f12e4
Reviewed-on: https://chromium-review.googlesource.com/805009
Commit-Ready: Pawel Osciak <posciak@chromium.org>
Tested-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>

[delete] https://crrev.com/cf1f9a5810e7c8b76281e2febdb62c6b355388af/client/site_tests/video_VideoDecodeAccelerator/control.vp9_2

I couldn't confirm the autotest is passed locally, since there was no ChromeOS version which has the vp9_2 video source file and control.vp9_2.
But the test should be passed on ChromeOS ToT, whose Chrome version is 	65.0.3286.0 > 64.3282.0.
So let me reland the autotest CL.
https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/812585
Project Member

Comment 33 by bugdroid1@chromium.org, Dec 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/5f86823ce5c995c36b457401d45f58038c2e0aaf

commit 5f86823ce5c995c36b457401d45f58038c2e0aaf
Author: Hirokazu Honda <hiroh@chromium.org>
Date: Thu Dec 07 16:04:53 2017

Revert "Revert "autotests/video_VideoDecodeAccelerator: Add vp9.2 file""

This reverts commit 5d3bba4be4464c6a993b38d006ce295788e8a22b.

Reason for revert: The test should be passed now.

Original change's description:
> Revert "autotests/video_VideoDecodeAccelerator: Add vp9.2 file"
>
> This reverts commit c9f4daec362c75f4d340e54ff9a5f78bb6bc23ce.
>
> Reason for revert: video_VideoDecodeAccelerator.vp9_2 is failed on bvt-perbuild and blocks PFQ.
> Original change's description:
> > autotests/video_VideoDecodeAccelerator: Add vp9.2 file
> >
> > This CL adds a control.vp9_2 file that details how to
> > run video_decode_accelerator_unittest under autotest for
> > VP9 Profile 2, 10 bits per component (or per channel).
> >
> > CQ-DEPEND=CL:797853, CL:798191
> > TEST=Run on a Kaby Lake (e.g. soraka) VP9.2 is supported,
> > elsewhere is not.
> > BUG= chromium:778093 
> > Change-Id: I5edf36a27c86b2c18e3a572461668a1fe762c685
> > Reviewed-on: https://chromium-review.googlesource.com/798151
> > Commit-Ready: Miguel Casas <mcasas@chromium.org>
> > Tested-by: Miguel Casas <mcasas@chromium.org>
> > Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
>
> Bug:  chromium:778093 
> Change-Id: Ic3990bbba79a994fe4de1f07e87c4cc33b0f12e4
> Reviewed-on: https://chromium-review.googlesource.com/805009
> Commit-Ready: Pawel Osciak <posciak@chromium.org>
> Tested-by: Hirokazu Honda <hiroh@chromium.org>
> Reviewed-by: Hirokazu Honda <hiroh@chromium.org>

Bug:  chromium:778093 
Change-Id: I228baa4a0cad8b0b551183e331d7778a1440fb2d
Reviewed-on: https://chromium-review.googlesource.com/812585
Commit-Ready: Hirokazu Honda <hiroh@chromium.org>
Tested-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>

[add] https://crrev.com/5f86823ce5c995c36b457401d45f58038c2e0aaf/client/site_tests/video_VideoDecodeAccelerator/control.vp9_2

Comment 34 by hiroh@chromium.org, Dec 11 2017

I confirmed video_VideoDecodeAccelerator.vp9_2 run and is passed on KBL now.
Blockedon: 795424
Blockedon: -789160 -795424
Status: Fixed (was: Assigned)

Sign in to add a comment