Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: content/common/gpu/media/dxva_video_decode_accelerator.cc

Issue 795633005: Add VDA supported profile to GPUInfo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add GetSupportedProfile to all platforms Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/gpu/media/dxva_video_decode_accelerator.h" 5 #include "content/common/gpu/media/dxva_video_decode_accelerator.h"
6 6
7 #if !defined(OS_WIN) 7 #if !defined(OS_WIN)
8 #error This file should only be built on Windows. 8 #error This file should only be built on Windows.
9 #endif // !defined(OS_WIN) 9 #endif // !defined(OS_WIN)
10 10
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 } 904 }
905 905
906 bool DXVAVideoDecodeAccelerator::CanDecodeOnIOThread() { 906 bool DXVAVideoDecodeAccelerator::CanDecodeOnIOThread() {
907 return false; 907 return false;
908 } 908 }
909 909
910 GLenum DXVAVideoDecodeAccelerator::GetSurfaceInternalFormat() const { 910 GLenum DXVAVideoDecodeAccelerator::GetSurfaceInternalFormat() const {
911 return GL_BGRA_EXT; 911 return GL_BGRA_EXT;
912 } 912 }
913 913
914 // static
915 std::vector<media::VideoDecodeAccelerator::SupportedProfile>
916 DXVAVideoDecodeAccelerator::GetSupportedProfiles() {
wuchengli 2015/03/23 08:28:08 Add a TODO to say we need to make sure the profile
henryhsu 2015/03/23 10:06:35 Done.
917 // Supported media profiles should be synced with Initialize function.
wuchengli 2015/03/23 08:28:08 line 537 should also use |media_profiles| array to
henryhsu 2015/03/23 10:06:35 Done.
918 std::vector<media::VideoCodecProfile> media_profiles({
wuchengli 2015/03/23 08:28:08 Just use an array.
henryhsu 2015/03/23 10:06:35 Done.
919 media::H264PROFILE_BASELINE,
920 media::H264PROFILE_MAIN,
921 media::H264PROFILE_HIGH,
922 media::VP8PROFILE_ANY,
923 media::VP9PROFILE_ANY});
924 std::vector<media::VideoDecodeAccelerator::SupportedProfile> profiles;
925 for (const auto& media_profile : media_profiles) {
926 media::VideoDecodeAccelerator::SupportedProfile profile;
927 profile.profile = media_profile;
928 // Windows Media Foundation H.264 decoding does not support decoding videos
929 // with any dimension smaller than 48 pixels:
930 // http://msdn.microsoft.com/en-us/library/windows/desktop/dd797815
931 profile.min_resolution.SetSize(48, 48);
932 // Use 1088 to account for 16x16 macroblocks.
933 profile.max_resolution.SetSize(1920, 1088);
934 profiles.push_back(profile);
935 }
936 return profiles;
937 }
938
914 bool DXVAVideoDecodeAccelerator::InitDecoder(media::VideoCodecProfile profile) { 939 bool DXVAVideoDecodeAccelerator::InitDecoder(media::VideoCodecProfile profile) {
915 HMODULE decoder_dll = NULL; 940 HMODULE decoder_dll = NULL;
916 941
917 // Profile must fall within the valid range for one of the supported codecs. 942 // Profile must fall within the valid range for one of the supported codecs.
918 if (profile >= media::H264PROFILE_MIN && profile <= media::H264PROFILE_MAX) { 943 if (profile >= media::H264PROFILE_MIN && profile <= media::H264PROFILE_MAX) {
919 // We mimic the steps CoCreateInstance uses to instantiate the object. This 944 // We mimic the steps CoCreateInstance uses to instantiate the object. This
920 // was previously done because it failed inside the sandbox, and now is done 945 // was previously done because it failed inside the sandbox, and now is done
921 // as a more minimal approach to avoid other side-effects CCI might have (as 946 // as a more minimal approach to avoid other side-effects CCI might have (as
922 // we are still in a reduced sandbox). 947 // we are still in a reduced sandbox).
923 decoder_dll = ::LoadLibrary(L"msmpeg2vdec.dll"); 948 decoder_dll = ::LoadLibrary(L"msmpeg2vdec.dll");
(...skipping 1215 matching lines...) Expand 10 before | Expand all | Expand 10 after
2139 D3DSURFACE_DESC surface_desc; 2164 D3DSURFACE_DESC surface_desc;
2140 hr = surface->GetDesc(&surface_desc); 2165 hr = surface->GetDesc(&surface_desc);
2141 RETURN_ON_HR_FAILURE(hr, "Failed to get surface description", false); 2166 RETURN_ON_HR_FAILURE(hr, "Failed to get surface description", false);
2142 *width = surface_desc.Width; 2167 *width = surface_desc.Width;
2143 *height = surface_desc.Height; 2168 *height = surface_desc.Height;
2144 } 2169 }
2145 return true; 2170 return true;
2146 } 2171 }
2147 2172
2148 } // namespace content 2173 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698