OLD | NEW |
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 "ui/gfx/color_space_win.h" | 5 #include "ui/gfx/color_space_win.h" |
6 | 6 |
7 namespace gfx { | 7 namespace gfx { |
8 | 8 |
9 DXVA2_ExtendedFormat ColorSpaceWin::GetExtendedFormat( | 9 DXVA2_ExtendedFormat ColorSpaceWin::GetExtendedFormat( |
10 const ColorSpace& color_space) { | 10 const ColorSpace& color_space) { |
11 DXVA2_ExtendedFormat format; | 11 DXVA2_ExtendedFormat format; |
12 memset(&format, 0, sizeof(format)); | 12 memset(&format, 0, sizeof(format)); |
13 format.SampleFormat = DXVA2_SampleProgressiveFrame; | 13 format.SampleFormat = DXVA2_SampleProgressiveFrame; |
14 format.VideoLighting = DXVA2_VideoLighting_dim; | 14 format.VideoLighting = DXVA2_VideoLighting_dim; |
15 format.NominalRange = DXVA2_NominalRange_16_235; | 15 format.NominalRange = DXVA2_NominalRange_16_235; |
16 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_BT709; | 16 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_BT709; |
17 format.VideoPrimaries = DXVA2_VideoPrimaries_BT709; | 17 format.VideoPrimaries = DXVA2_VideoPrimaries_BT709; |
18 format.VideoTransferFunction = DXVA2_VideoTransFunc_709; | 18 format.VideoTransferFunction = DXVA2_VideoTransFunc_709; |
19 | 19 |
20 switch (color_space.range_) { | 20 switch (color_space.range_) { |
21 case gfx::ColorSpace::RangeID::LIMITED: | 21 case gfx::ColorSpace::RangeID::LIMITED: |
22 format.NominalRange = DXVA2_NominalRange_16_235; | 22 format.NominalRange = DXVA2_NominalRange_16_235; |
23 break; | 23 break; |
24 case gfx::ColorSpace::RangeID::FULL: | 24 case gfx::ColorSpace::RangeID::FULL: |
25 format.NominalRange = DXVA2_NominalRange_0_255; | 25 format.NominalRange = DXVA2_NominalRange_0_255; |
26 break; | 26 break; |
27 | |
28 case gfx::ColorSpace::RangeID::UNSPECIFIED: | |
29 case gfx::ColorSpace::RangeID::DERIVED: | 27 case gfx::ColorSpace::RangeID::DERIVED: |
30 // Not handled | 28 // Not handled |
31 break; | 29 break; |
32 } | 30 } |
33 | 31 |
34 switch (color_space.matrix_) { | 32 switch (color_space.matrix_) { |
35 case gfx::ColorSpace::MatrixID::BT709: | 33 case gfx::ColorSpace::MatrixID::BT709: |
36 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_BT709; | 34 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_BT709; |
37 break; | 35 break; |
38 case gfx::ColorSpace::MatrixID::BT470BG: | 36 case gfx::ColorSpace::MatrixID::BT470BG: |
39 case gfx::ColorSpace::MatrixID::SMPTE170M: | 37 case gfx::ColorSpace::MatrixID::SMPTE170M: |
40 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_BT601; | 38 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_BT601; |
41 break; | 39 break; |
42 case gfx::ColorSpace::MatrixID::SMPTE240M: | 40 case gfx::ColorSpace::MatrixID::SMPTE240M: |
43 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_SMPTE240M; | 41 format.VideoTransferMatrix = DXVA2_VideoTransferMatrix_SMPTE240M; |
44 break; | 42 break; |
45 | 43 |
46 case gfx::ColorSpace::MatrixID::RGB: | 44 case gfx::ColorSpace::MatrixID::RGB: |
47 case gfx::ColorSpace::MatrixID::UNSPECIFIED: | |
48 case gfx::ColorSpace::MatrixID::RESERVED: | |
49 case gfx::ColorSpace::MatrixID::FCC: | 45 case gfx::ColorSpace::MatrixID::FCC: |
50 case gfx::ColorSpace::MatrixID::YCOCG: | 46 case gfx::ColorSpace::MatrixID::YCOCG: |
51 case gfx::ColorSpace::MatrixID::BT2020_NCL: | 47 case gfx::ColorSpace::MatrixID::BT2020_NCL: |
52 case gfx::ColorSpace::MatrixID::BT2020_CL: | 48 case gfx::ColorSpace::MatrixID::BT2020_CL: |
53 case gfx::ColorSpace::MatrixID::YDZDX: | 49 case gfx::ColorSpace::MatrixID::YDZDX: |
54 case gfx::ColorSpace::MatrixID::UNKNOWN: | |
55 // Not handled | 50 // Not handled |
56 break; | 51 break; |
57 } | 52 } |
58 | 53 |
59 switch (color_space.primaries_) { | 54 switch (color_space.primaries_) { |
60 case gfx::ColorSpace::PrimaryID::BT709: | 55 case gfx::ColorSpace::PrimaryID::BT709: |
61 format.VideoPrimaries = DXVA2_VideoPrimaries_BT709; | 56 format.VideoPrimaries = DXVA2_VideoPrimaries_BT709; |
62 break; | 57 break; |
63 case gfx::ColorSpace::PrimaryID::BT470M: | 58 case gfx::ColorSpace::PrimaryID::BT470M: |
64 format.VideoPrimaries = DXVA2_VideoPrimaries_BT470_2_SysM; | 59 format.VideoPrimaries = DXVA2_VideoPrimaries_BT470_2_SysM; |
65 break; | 60 break; |
66 case gfx::ColorSpace::PrimaryID::BT470BG: | 61 case gfx::ColorSpace::PrimaryID::BT470BG: |
67 format.VideoPrimaries = DXVA2_VideoPrimaries_BT470_2_SysBG; | 62 format.VideoPrimaries = DXVA2_VideoPrimaries_BT470_2_SysBG; |
68 break; | 63 break; |
69 case gfx::ColorSpace::PrimaryID::SMPTE170M: | 64 case gfx::ColorSpace::PrimaryID::SMPTE170M: |
70 format.VideoPrimaries = DXVA2_VideoPrimaries_SMPTE170M; | 65 format.VideoPrimaries = DXVA2_VideoPrimaries_SMPTE170M; |
71 break; | 66 break; |
72 case gfx::ColorSpace::PrimaryID::SMPTE240M: | 67 case gfx::ColorSpace::PrimaryID::SMPTE240M: |
73 format.VideoPrimaries = DXVA2_VideoPrimaries_SMPTE240M; | 68 format.VideoPrimaries = DXVA2_VideoPrimaries_SMPTE240M; |
74 break; | 69 break; |
75 | 70 |
76 case gfx::ColorSpace::PrimaryID::RESERVED0: | |
77 case gfx::ColorSpace::PrimaryID::UNSPECIFIED: | |
78 case gfx::ColorSpace::PrimaryID::RESERVED: | |
79 case gfx::ColorSpace::PrimaryID::FILM: | 71 case gfx::ColorSpace::PrimaryID::FILM: |
80 case gfx::ColorSpace::PrimaryID::BT2020: | 72 case gfx::ColorSpace::PrimaryID::BT2020: |
81 case gfx::ColorSpace::PrimaryID::SMPTEST428_1: | 73 case gfx::ColorSpace::PrimaryID::SMPTEST428_1: |
82 case gfx::ColorSpace::PrimaryID::SMPTEST431_2: | 74 case gfx::ColorSpace::PrimaryID::SMPTEST431_2: |
83 case gfx::ColorSpace::PrimaryID::SMPTEST432_1: | 75 case gfx::ColorSpace::PrimaryID::SMPTEST432_1: |
84 case gfx::ColorSpace::PrimaryID::UNKNOWN: | 76 case gfx::ColorSpace::PrimaryID::INVALID: |
85 case gfx::ColorSpace::PrimaryID::XYZ_D50: | 77 case gfx::ColorSpace::PrimaryID::XYZ_D50: |
86 case gfx::ColorSpace::PrimaryID::ADOBE_RGB: | 78 case gfx::ColorSpace::PrimaryID::ADOBE_RGB: |
87 case gfx::ColorSpace::PrimaryID::CUSTOM: | 79 case gfx::ColorSpace::PrimaryID::CUSTOM: |
88 // Not handled | 80 // Not handled |
89 break; | 81 break; |
90 } | 82 } |
91 | 83 |
92 switch (color_space.transfer_) { | 84 switch (color_space.transfer_) { |
93 case gfx::ColorSpace::TransferID::BT709: | 85 case gfx::ColorSpace::TransferID::BT709: |
94 case gfx::ColorSpace::TransferID::SMPTE170M: | 86 case gfx::ColorSpace::TransferID::SMPTE170M: |
95 format.VideoTransferFunction = DXVA2_VideoTransFunc_709; | 87 format.VideoTransferFunction = DXVA2_VideoTransFunc_709; |
96 break; | 88 break; |
97 case gfx::ColorSpace::TransferID::SMPTE240M: | 89 case gfx::ColorSpace::TransferID::SMPTE240M: |
98 format.VideoTransferFunction = DXVA2_VideoTransFunc_240M; | 90 format.VideoTransferFunction = DXVA2_VideoTransFunc_240M; |
99 break; | 91 break; |
100 case gfx::ColorSpace::TransferID::GAMMA22: | 92 case gfx::ColorSpace::TransferID::GAMMA22: |
101 format.VideoTransferFunction = DXVA2_VideoTransFunc_22; | 93 format.VideoTransferFunction = DXVA2_VideoTransFunc_22; |
102 break; | 94 break; |
103 case gfx::ColorSpace::TransferID::GAMMA28: | 95 case gfx::ColorSpace::TransferID::GAMMA28: |
104 format.VideoTransferFunction = DXVA2_VideoTransFunc_28; | 96 format.VideoTransferFunction = DXVA2_VideoTransFunc_28; |
105 break; | 97 break; |
106 case gfx::ColorSpace::TransferID::LINEAR: | 98 case gfx::ColorSpace::TransferID::LINEAR: |
107 case gfx::ColorSpace::TransferID::LINEAR_HDR: | 99 case gfx::ColorSpace::TransferID::LINEAR_HDR: |
108 format.VideoTransferFunction = DXVA2_VideoTransFunc_10; | 100 format.VideoTransferFunction = DXVA2_VideoTransFunc_10; |
109 break; | 101 break; |
110 case gfx::ColorSpace::TransferID::IEC61966_2_1: | 102 case gfx::ColorSpace::TransferID::IEC61966_2_1: |
111 format.VideoTransferFunction = DXVA2_VideoTransFunc_sRGB; | 103 format.VideoTransferFunction = DXVA2_VideoTransFunc_sRGB; |
112 break; | 104 break; |
113 | 105 |
114 case gfx::ColorSpace::TransferID::RESERVED0: | |
115 case gfx::ColorSpace::TransferID::UNSPECIFIED: | |
116 case gfx::ColorSpace::TransferID::RESERVED: | |
117 case gfx::ColorSpace::TransferID::LOG: | 106 case gfx::ColorSpace::TransferID::LOG: |
118 case gfx::ColorSpace::TransferID::LOG_SQRT: | 107 case gfx::ColorSpace::TransferID::LOG_SQRT: |
119 case gfx::ColorSpace::TransferID::IEC61966_2_4: | 108 case gfx::ColorSpace::TransferID::IEC61966_2_4: |
120 case gfx::ColorSpace::TransferID::BT1361_ECG: | 109 case gfx::ColorSpace::TransferID::BT1361_ECG: |
121 case gfx::ColorSpace::TransferID::BT2020_10: | 110 case gfx::ColorSpace::TransferID::BT2020_10: |
122 case gfx::ColorSpace::TransferID::BT2020_12: | 111 case gfx::ColorSpace::TransferID::BT2020_12: |
123 case gfx::ColorSpace::TransferID::SMPTEST2084: | 112 case gfx::ColorSpace::TransferID::SMPTEST2084: |
124 case gfx::ColorSpace::TransferID::SMPTEST428_1: | 113 case gfx::ColorSpace::TransferID::SMPTEST428_1: |
125 case gfx::ColorSpace::TransferID::ARIB_STD_B67: | 114 case gfx::ColorSpace::TransferID::ARIB_STD_B67: |
126 case gfx::ColorSpace::TransferID::UNKNOWN: | 115 case gfx::ColorSpace::TransferID::INVALID: |
127 case gfx::ColorSpace::TransferID::GAMMA24: | 116 case gfx::ColorSpace::TransferID::GAMMA24: |
128 case gfx::ColorSpace::TransferID::SMPTEST2084_NON_HDR: | 117 case gfx::ColorSpace::TransferID::SMPTEST2084_NON_HDR: |
129 case gfx::ColorSpace::TransferID::CUSTOM: | 118 case gfx::ColorSpace::TransferID::CUSTOM: |
130 // Not handled | 119 // Not handled |
131 break; | 120 break; |
132 } | 121 } |
133 | 122 |
134 return format; | 123 return format; |
135 } | 124 } |
136 | 125 |
137 } // namespace gfx | 126 } // namespace gfx |
OLD | NEW |