1 /* 2 * Copyright (C) 2021 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 FRAMEWORKS_INNERKITSIMPL_PIXELCONVERTER_INCLUDE_PIXEL_CONVERT_ADAPTER_H 17 #define FRAMEWORKS_INNERKITSIMPL_PIXELCONVERTER_INCLUDE_PIXEL_CONVERT_ADAPTER_H 18 19 #include "image_type.h" 20 #include <map> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 #include "libswscale/swscale.h" 26 #include "libavutil/opt.h" 27 #include "libavutil/imgutils.h" 28 #include "libavcodec/avcodec.h" 29 #ifdef __cplusplus 30 } 31 #endif 32 namespace OHOS { 33 namespace Media { 34 35 struct YuvImageInfo; 36 37 class PixelConvertAdapter { 38 public: 39 static bool WritePixelsConvert(const void *srcPixels, uint32_t srcRowBytes, const ImageInfo &srcInfo, 40 void *dstPixels, const Position &dstPos, uint32_t dstRowBytes, 41 const ImageInfo &dstInfo); 42 static bool ReadPixelsConvert(const void *srcPixels, const Position &srcPos, uint32_t srcRowBytes, 43 const ImageInfo &srcInfo, void *dstPixels, uint32_t dstRowBytes, 44 const ImageInfo &dstInfo); 45 static bool EraseBitmap(const void *srcPixels, uint32_t srcRowBytes, const ImageInfo &srcInfo, uint32_t color); 46 static bool YUV420ToRGB888(const uint8_t *in, YuvImageInfo &srcInfo, uint8_t *out, YuvImageInfo &dstInfo); 47 static const std::map<PixelFormat, AVPixelFormat> FFMPEG_PIXEL_FORMAT_MAP; 48 }; 49 } // namespace Media 50 } // namespace OHOS 51 52 #endif // FRAMEWORKS_INNERKITSIMPL_PIXELCONVERTER_INCLUDE_PIXEL_CONVERT_ADAPTER_H 53