/* * * Copyright 2017 Samsung Electronics S.LSI Co. LTD * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * @file VendorVideoAPI.h * @author TaeHwan Kim (t_h_kim@samsung.com) * ByungGwan Kang (bk0917.kang@samsung.com) * @version 1.0 * @history * 2017.06.02 : Create */ #ifndef VENDOR_VIDEO_API_H_ #define VENDOR_VIDEO_API_H_ #include #ifdef __cplusplus extern "C" { #endif #define MAX_HDR10PLUS_SIZE 1024 typedef enum _ExynosVideoInfoType { VIDEO_INFO_TYPE_INVALID = 0, VIDEO_INFO_TYPE_HDR_STATIC = 0x1 << 0, VIDEO_INFO_TYPE_COLOR_ASPECTS = 0x1 << 1, VIDEO_INFO_TYPE_INTERLACED = 0x1 << 2, VIDEO_INFO_TYPE_YSUM_DATA = 0x1 << 3, VIDEO_INFO_TYPE_HDR_DYNAMIC = 0x1 << 4, VIDEO_INFO_TYPE_CHECK_PIXEL_FORMAT = 0x1 << 5, VIDEO_INFO_TYPE_CROP_INFO = 0x1 << 8, } ExynosVideoInfoType; typedef struct _ExynosVideoYSUMData { unsigned int high; unsigned int low; } ExynosVideoYSUMData; typedef struct _ExynosColorAspects { int mRange; int mPrimaries; int mTransfer; int mMatrixCoeffs; } ExynosColorAspects; typedef struct _ExynosPrimaries { unsigned int x; unsigned int y; } ExynosPrimaries; typedef struct _ExynosType1 { ExynosPrimaries mR; ExynosPrimaries mG; ExynosPrimaries mB; ExynosPrimaries mW; unsigned int mMaxDisplayLuminance; unsigned int mMinDisplayLuminance; unsigned int mMaxContentLightLevel; unsigned int mMaxFrameAverageLightLevel; } ExynosType1; typedef struct _ExynosHdrStaticInfo { int mID; union { ExynosType1 sType1; }; } ExynosHdrStaticInfo; typedef struct _ExynosHdrDynamicInfo { unsigned int valid; struct { unsigned char country_code; unsigned short provider_code; unsigned short provider_oriented_code; unsigned char application_identifier; unsigned short application_version; unsigned int display_maximum_luminance; unsigned int maxscl[3]; unsigned char num_maxrgb_percentiles; unsigned char maxrgb_percentages[15]; unsigned int maxrgb_percentiles[15]; struct { unsigned short tone_mapping_flag; unsigned short knee_point_x; unsigned short knee_point_y; unsigned short num_bezier_curve_anchors; unsigned short bezier_curve_anchors[15]; } tone_mapping; } data; unsigned int reserved[42]; } ExynosHdrDynamicInfo; typedef struct _ExynosVideoCrop { int left; int top; int width; int height; } ExynosVideoCrop; typedef struct _ExynosVideoDecData { int nInterlacedType; } ExynosVideoDecData; typedef struct _ExynosVideoEncData { ExynosVideoYSUMData sYsumData; } ExynosVideoEncData; typedef struct _ExynosVideoMeta { ExynosVideoInfoType eType; ExynosHdrStaticInfo sHdrStaticInfo; ExynosColorAspects sColorAspects; union { ExynosVideoDecData dec; ExynosVideoEncData enc; } data; ExynosHdrDynamicInfo sHdrDynamicInfo; int nPixelFormat; ExynosVideoCrop crop; } ExynosVideoMeta; int Exynos_parsing_user_data_registered_itu_t_t35(ExynosHdrDynamicInfo *dest, void *src); int Exynos_dynamic_meta_to_itu_t_t35(ExynosHdrDynamicInfo *src, char *dst); #ifdef __cplusplus } #endif #endif /* VENDOR_VIDEO_API_H_ */