xref: /aosp_15_r20/external/intel-media-driver/media_softlet/linux/common/vp/ddi/ddi_vp_tools.h (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
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     ddi_vp_tools.h
24 //! \brief    ddi vp tool functions implementation
25 //!
26 
27 #ifndef __DDI_VP_TOOLS_H__
28 #define __DDI_VP_TOOLS_H__
29 
30 #include <va/va.h>
31 #include <va/va_vpp.h>
32 #include "ddi_vp_functions.h"
33 
34 #define LIBVA_VP_CONFIG_NOT_REPORTED  0xffffffff
35 
36 class DdiVpTools
37 {
38 public:
39 #if (_DEBUG || _RELEASE_INTERNAL)
40     //!
41     //! \brief  Allocate and initialize DDI dump parameters
42     //!
43     //! \param  [in] vpCtx
44     //!          VP context
45     //!
46     //! \return VAStatus
47     //! VA_STATUS_SUCCESS if DDI Params is initialized
48     static VAStatus InitDumpConfig(PDDI_VP_CONTEXT vpCtx);
49 
50     //!
51     //! \brief  Destory DDI dump parameters
52     //!
53     //! \param  [in] vpCtx
54     //!          VP context
55     //!
56     //! \return
57     //!
58     static void DestoryDumpConfig(PDDI_VP_CONTEXT  vpCtx);
59 
60     //!
61     //! \brief   compare current dump parameters with the previous
62     //!
63     //! \param   [in] curParams
64     //!          current dump parameters
65     //! \param   [in] preParams
66     //!          previous dump parameters
67     //! \return  bool
68     //!          return true, if current parameters and previous are same
69     //!          return false, if current parameters and previous are different
70     //!
71     static bool VpCmpDDIDumpParam(
72         PDDI_VP_DUMP_PARAM curParams,
73         PDDI_VP_DUMP_PARAM preParams);
74 
75     //!
76     //! \brief   read a config "env" for vpddi.conf or from environment setting
77     //!
78     //! \param   env
79     //!          [in] Pipeline parameters from application (VAProcPipelineParameterBuffer)
80     //! \param   envValue
81     //!          [out]
82     //! \return  int
83     //!          return 0, if the "env" is set, and the value is copied into envValue
84     //!          return 1, if the env is not set
85     //!
86     static int  VpParseLogConfig(
87         const char *env,
88         char       *envValue);
89 
90     //!
91     //! \brief   dump deinterlacing parameter
92     //!
93     //! \param   fpLog
94     //!          [in] file pointer pointed to dumpped file
95     //! \param   deint
96     //!          [in] pointed to deinterlacing parameter
97     //!
98     static void VpDumpDeinterlacingParameterBuffer(
99         FILE                                      *fpLog,
100         VAProcFilterParameterBufferDeinterlacing  *deint);
101 
102     //!
103     //! \brief   dump color balance parameter
104     //!
105     //! \param   fpLog
106     //!          [in] file pointer pointed to dumpped file
107     //! \param   colorbalance
108     //!          [in] pointed to colorbalance parameter
109     //! \param   elementNum
110     //!          [in] number of elements
111     //!
112     static void VpDumpColorBalanceParameterBuffer(
113         FILE                                     *fpLog,
114         VAProcFilterParameterBufferColorBalance  *colorbalance,
115         uint32_t                                 elementNum);
116 
117     //!
118     //! \brief   dump TCC parameter
119     //!
120     //! \param   fpLog
121     //!          [in] file pointer pointed to dumpped file
122     //! \param   filterParam
123     //!          [in] pointed to TCC parameter
124     //! \param   elementNum
125     //!          [in] number of elements
126     //!
127     static void VpDumpTotalColorCorrectionParameterBuffer(
128         FILE                                             *fpLog,
129         VAProcFilterParameterBufferTotalColorCorrection  *filterParam,
130         uint32_t                                         elementNum);
131 
132     //!
133     //! \brief   dump filter parameter
134     //!
135     //! \param   fpLog
136     //!          [in] file pointer pointed to dumpped file
137     //! \param   buffer
138     //!          [in] pointed to filter parameter
139     //!
140     static void VpDumpFilterParameterBuffer(
141         FILE                            *fpLog,
142         VAProcFilterParameterBuffer     *buffer);
143 
144     //! \brief   dump filters parameter of surface parameters
145     //!
146     //! \param   [in] fpLog
147     //!          file pointer pointed to dumpped file
148     //! \param   [in] pipelineParameterBuffer
149     //!          VAProcPipelineParameterBuffer
150     //! \param   [in] srcFormat
151     //!          MOS_FORMAT
152     //!
153     static void VpDumpProcFiltersParameterBufferSurface(
154         FILE                          *fpLog,
155         VAProcPipelineParameterBuffer *pipelineParameterBuffer,
156         MOS_FORMAT                    srcFormat);
157 
158     //! \brief   dump filters parameter
159     //!
160     //! \param   [in] fpLog
161     //!          file pointer pointed to dumpped file
162     //! \param   [in] vaDrvCtx
163     //!          driver context
164     //! \param   [in] filters
165     //!          pointed to filters
166     //! \param   [in] filtersNum
167     //!          number of filters
168     //!
169     static void VpDumpProcFiltersParameterBuffer(
170         FILE                *fpLog,
171         VADriverContextP    vaDrvCtx,
172         VABufferID          *filters,
173         unsigned int        filtersNum);
174 
175     //! \brief   dump filters parameter of Forward References
176     //!
177     //! \param   [in] fpLog
178     //!          file pointer pointed to dumpped file
179     //! \param   [in] forwardReferences
180     //!          pointed to forward References
181     //! \param   [in] forwardReferencesNum
182     //!          number of forward References
183     //!
184     static void VpDumpProcFiltersParameterBufferFWDReference(
185         FILE        *fpLog,
186         VASurfaceID *forwardReferences,
187         uint32_t    forwardReferencesNum);
188 
189     //! \brief   dump filters parameter of Backward References
190     //!
191     //! \param   [in] fpLog
192     //!          file pointer pointed to dumpped file
193     //! \param   [in] backwardReferences
194     //!          pointed to backward References
195     //! \param   [in] filtersNum
196     //!          number of backward References
197     //!
198     static void VpDumpProcFiltersParameterBufferBKWReference(
199         FILE        *fpLog,
200         VASurfaceID *backwardReferences,
201         uint32_t    backwardReferencesNum);
202 
203     //!
204     //! \brief   dump procpipeline parameters
205     //!
206     //! \param   [in] vaDrvCtx
207     //!          driver context
208     //! \param   [in] vpCtx
209     //!          vp context
210     //! \return  VAStatus
211     //!          return VA_STATUS_SUCCESS, if params is dumped to file.
212     //!
213     static VAStatus VpDumpProcPipelineParams(
214         VADriverContextP        vaDrvCtx,
215         PDDI_VP_CONTEXT         vpCtx);
216 
217 #endif //#if (_DEBUG || _RELEASE_INTERNAL)
218 
219 MEDIA_CLASS_DEFINE_END(DdiVpTools)
220 };
221 
222 #endif //__DDI_VP_TOOLS_H__