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