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