• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef FRAMEWORK_ALGORITHM_COLORSPACE_CONVERTER_COLORSPACE_CONVERTER_CAPABILITY_H
17 #define FRAMEWORK_ALGORITHM_COLORSPACE_CONVERTER_COLORSPACE_CONVERTER_CAPABILITY_H
18 
19 #include <functional>
20 #include <vector>
21 #include "frame_info.h"
22 #include "extension_base.h"
23 
24 namespace OHOS {
25 namespace Media {
26 namespace VideoProcessingEngine {
27 struct ColorSpaceConverterCapability {
28     ColorSpaceDescription inputColorSpaceDesc;
29     ColorSpaceDescription outputColorSpaceDesc;
30     /*
31     The key is a supported input pixel format, and the value is a supported output pixel formats' vector.
32     In json format:
33     {
34         supportedInputPixelFormat: [supportedOutputPixelFormat, supportedOutputPixelFormat, ...],
35         ......
36     }
37 
38     eg.
39     Supported input pixel formats are nv21, nv12 and rgba.
40     When the input pixel format is nv21, the supported output pixel format can be nv21, nv12.
41     When the input pixel format is nv12, the supported output pixel format can be nv21, nv12 and rgba.
42     When the input pixel format is rgba, the supported output pixel format can be rgba.
43     So the keys are nv21, nv12 and rgba, the corresponding value is a vector contains the supported output
44     pixel formats.
45     In json format:
46     {
47         nv21: [nv21, nv12],
48         nv12: [nv21, nv12, rgba],
49         rgba: [rgba],
50         ......
51     }
52     */
53     std::map<GraphicPixelFormat, std::vector<GraphicPixelFormat>> pixelFormatMap;
54     Extension::Rank rank;
55     int32_t version;
56 };
57 
58 using ColorSpaceConverterCapabilitiesBuilder = std::function<std::vector<ColorSpaceConverterCapability>()>;
59 } // namespace VideoProcessingEngine
60 } // namespace Media
61 } // namespace OHOS
62 
63 #endif // FRAMEWORK_ALGORITHM_COLORSPACE_CONVERTER_COLORSPACE_CONVERTER_CAPABILITY_H
64