1 /*
2 * Copyright (c) 2022, Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22 //!
23 //! \file decode_hevc_user_setting.cpp
24 //! \brief Defines the interface for hevc decode pipeline
25 //!
26 #include "decode_hevc_pipeline.h"
27
28 namespace decode
29 {
InitUserSetting(MediaUserSettingSharedPtr userSettingPtr)30 MOS_STATUS HevcPipeline::InitUserSetting(MediaUserSettingSharedPtr userSettingPtr)
31 {
32 DECODE_FUNC_CALL();
33 DECODE_CHK_STATUS(DecodePipeline::InitUserSetting(userSettingPtr));
34 DeclareUserSettingKey(
35 userSettingPtr,
36 "HEVC Decode Mode",
37 MediaUserSetting::Group::Sequence,
38 int32_t(0),
39 true);
40 DeclareUserSettingKey(
41 userSettingPtr,
42 "FE Separate Submission In Use",
43 MediaUserSetting::Group::Sequence,
44 int32_t(0),
45 true);
46 DeclareUserSettingKey(
47 userSettingPtr,
48 "RT Decoded Count",
49 MediaUserSetting::Group::Sequence,
50 int32_t(0),
51 true);
52 DeclareUserSettingKey(
53 userSettingPtr,
54 "SP Decoded Count",
55 MediaUserSetting::Group::Sequence,
56 int32_t(0),
57 true);
58 DeclareUserSettingKey(
59 userSettingPtr,
60 "Huc Load Fail",
61 MediaUserSetting::Group::Sequence,
62 int32_t(0),
63 true);
64 DeclareUserSettingKey(
65 userSettingPtr,
66 "HuC Report Critical Error",
67 MediaUserSetting::Group::Sequence,
68 int32_t(0),
69 true);
70 #if (_DEBUG || _RELEASE_INTERNAL)
71 DeclareUserSettingKeyForDebug(
72 userSettingPtr,
73 "Disable HEVC Real Tile Decode",
74 MediaUserSetting::Group::Sequence,
75 int32_t(0),
76 false);
77 DeclareUserSettingKeyForDebug(
78 userSettingPtr,
79 "Enable HEVC Real Tile Multi Phase Decode",
80 MediaUserSetting::Group::Sequence,
81 int32_t(1),
82 false);
83 DeclareUserSettingKeyForDebug(
84 userSettingPtr,
85 "Enable HEVC SF 2 DMA Submits",
86 MediaUserSetting::Group::Sequence,
87 int32_t(0),
88 false);
89 DeclareUserSettingKeyForDebug(
90 userSettingPtr,
91 "DisableHevcDatRowStoreCache",
92 MediaUserSetting::Group::Sequence,
93 int32_t(0),
94 false);
95 DeclareUserSettingKeyForDebug(
96 userSettingPtr,
97 "DisableHevcDfRowStoreCache",
98 MediaUserSetting::Group::Sequence,
99 int32_t(0),
100 false);
101 DeclareUserSettingKeyForDebug(
102 userSettingPtr,
103 "DisableHevcSaoRowStoreCache",
104 MediaUserSetting::Group::Sequence,
105 int32_t(0),
106 false);
107 DeclareUserSettingKeyForDebug(
108 userSettingPtr,
109 "HCP Decode Always Frame Split",
110 MediaUserSetting::Group::Sequence,
111 int32_t(0),
112 false);
113 DeclareUserSettingKeyForDebug(
114 userSettingPtr,
115 "HCP Decode Mode Switch TH1",
116 MediaUserSetting::Group::Sequence,
117 int32_t(0),
118 false);
119 DeclareUserSettingKeyForDebug(
120 userSettingPtr,
121 "HCP Decode Mode Switch TH2",
122 MediaUserSetting::Group::Sequence,
123 int32_t(0),
124 false);
125 DeclareUserSettingKeyForDebug(
126 userSettingPtr,
127 "Scalability Split Width In MinCb",
128 MediaUserSetting::Group::Sequence,
129 int32_t(0),
130 false);
131 DeclareUserSettingKeyForDebug(
132 userSettingPtr,
133 "HCP Decode User Pipe Num",
134 MediaUserSetting::Group::Sequence,
135 int32_t(2),
136 false);
137 DeclareUserSettingKeyForDebug(
138 userSettingPtr,
139 "ApogeiosHevcdEnable",
140 MediaUserSetting::Group::Sequence,
141 int32_t(0),
142 false);
143 #endif
144 return MOS_STATUS_SUCCESS;
145 }
146 } // namespace decode