13d0407baSopenharmony_ci/* 23d0407baSopenharmony_ci * Copyright (c) 2022-2023 Shenzhen Kaihong DID Co., Ltd. 33d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43d0407baSopenharmony_ci * you may not use this file except in compliance with the License. 53d0407baSopenharmony_ci * You may obtain a copy of the License at 63d0407baSopenharmony_ci * 73d0407baSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83d0407baSopenharmony_ci * 93d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123d0407baSopenharmony_ci * See the License for the specific language governing permissions and 133d0407baSopenharmony_ci * limitations under the License. 143d0407baSopenharmony_ci */ 153d0407baSopenharmony_ci 163d0407baSopenharmony_ci#ifndef HDI_MPP_H 173d0407baSopenharmony_ci#define HDI_MPP_H 183d0407baSopenharmony_ci 193d0407baSopenharmony_ci#include "codec_type.h" 203d0407baSopenharmony_ci#include "hdi_mpp_ext_param_keys.h" 213d0407baSopenharmony_ci#include "hdi_mpp_mpi.h" 223d0407baSopenharmony_ci#include "rk_mpi.h" 233d0407baSopenharmony_ci 243d0407baSopenharmony_citypedef struct { 253d0407baSopenharmony_ci int32_t profile; 263d0407baSopenharmony_ci int32_t level; 273d0407baSopenharmony_ci int32_t cabacEn; 283d0407baSopenharmony_ci int32_t cabacIdc; 293d0407baSopenharmony_ci int32_t trans8x8; 303d0407baSopenharmony_ci} RKHdiEncSetupAVC; 313d0407baSopenharmony_ci 323d0407baSopenharmony_citypedef struct { 333d0407baSopenharmony_ci int32_t horStride; 343d0407baSopenharmony_ci int32_t verStride; 353d0407baSopenharmony_ci} RKHdiStrideSetup; 363d0407baSopenharmony_ci 373d0407baSopenharmony_citypedef struct { 383d0407baSopenharmony_ci int32_t fpsInFlex; 393d0407baSopenharmony_ci int32_t fpsInNum; 403d0407baSopenharmony_ci int32_t fpsInDen; 413d0407baSopenharmony_ci int32_t fpsOutFlex; 423d0407baSopenharmony_ci int32_t fpsOutNum; 433d0407baSopenharmony_ci int32_t fpsOutDen; 443d0407baSopenharmony_ci} RKHdiFpsSetup; 453d0407baSopenharmony_ci 463d0407baSopenharmony_citypedef struct { 473d0407baSopenharmony_ci uint32_t dropMode; 483d0407baSopenharmony_ci uint32_t dropThd; 493d0407baSopenharmony_ci uint32_t dropGap; 503d0407baSopenharmony_ci} RKHdiDropSetup; 513d0407baSopenharmony_ci 523d0407baSopenharmony_citypedef struct { 533d0407baSopenharmony_ci int32_t rcMode; 543d0407baSopenharmony_ci int32_t bpsTarget; 553d0407baSopenharmony_ci int32_t bpsMax; 563d0407baSopenharmony_ci int32_t bpsMin; 573d0407baSopenharmony_ci int32_t qpInit; 583d0407baSopenharmony_ci int32_t qpMax; 593d0407baSopenharmony_ci int32_t qpMin; 603d0407baSopenharmony_ci int32_t qpMaxI; 613d0407baSopenharmony_ci int32_t qpMinI; 623d0407baSopenharmony_ci int32_t qpIp; 633d0407baSopenharmony_ci} RKHdiRcSetup; 643d0407baSopenharmony_ci 653d0407baSopenharmony_citypedef struct { 663d0407baSopenharmony_ci int32_t gopMode; 673d0407baSopenharmony_ci uint32_t gopLen; 683d0407baSopenharmony_ci int32_t gop; 693d0407baSopenharmony_ci int32_t viLen; 703d0407baSopenharmony_ci} RKHdiGopSetup; 713d0407baSopenharmony_ci 723d0407baSopenharmony_citypedef struct { 733d0407baSopenharmony_ci int32_t mimeCodecType; 743d0407baSopenharmony_ci RKHdiEncSetupAVC avcSetup; 753d0407baSopenharmony_ci} RKHdiCodecMimeSetup; 763d0407baSopenharmony_ci 773d0407baSopenharmony_citypedef struct { 783d0407baSopenharmony_ci int32_t splitMode; 793d0407baSopenharmony_ci int32_t splitArg; 803d0407baSopenharmony_ci} RKHdiSplitSetup; 813d0407baSopenharmony_ci 823d0407baSopenharmony_citypedef struct { 833d0407baSopenharmony_ci int32_t width; 843d0407baSopenharmony_ci int32_t height; 853d0407baSopenharmony_ci int32_t codecType; 863d0407baSopenharmony_ci uint32_t split; 873d0407baSopenharmony_ci RKHdiStrideSetup stride; 883d0407baSopenharmony_ci PixelFormat fmt; 893d0407baSopenharmony_ci RKHdiFpsSetup fps; 903d0407baSopenharmony_ci RKHdiDropSetup drop; 913d0407baSopenharmony_ci RKHdiRcSetup rc; 923d0407baSopenharmony_ci RKHdiGopSetup gop; 933d0407baSopenharmony_ci RKHdiCodecMimeSetup codecMime; 943d0407baSopenharmony_ci} RKHdiEncodeSetup; 953d0407baSopenharmony_ci 963d0407baSopenharmony_citypedef struct { 973d0407baSopenharmony_ci MppCtx ctx; 983d0407baSopenharmony_ci RKMppApi *mppApi; 993d0407baSopenharmony_ci char *componentName; 1003d0407baSopenharmony_ci MppCtxType ctxType; 1013d0407baSopenharmony_ci MppCodingType codingType; 1023d0407baSopenharmony_ci MppFrameFormat fmt; 1033d0407baSopenharmony_ci RK_S32 horStride; 1043d0407baSopenharmony_ci RK_S32 verStride; 1053d0407baSopenharmony_ci 1063d0407baSopenharmony_ci CodecCallback *pCallbacks; 1073d0407baSopenharmony_ci void *cfg; 1083d0407baSopenharmony_ci RKHdiEncodeSetup setup; 1093d0407baSopenharmony_ci MppApi *mpi; 1103d0407baSopenharmony_ci 1113d0407baSopenharmony_ci MppBufferGroup frmGrp; 1123d0407baSopenharmony_ci MppPacket packet; 1133d0407baSopenharmony_ci size_t packetSize; 1143d0407baSopenharmony_ci MppFrame frame; 1153d0407baSopenharmony_ci RK_S32 frameCount; 1163d0407baSopenharmony_ci RK_S32 frameErr; 1173d0407baSopenharmony_ci RK_S32 frameNum; 1183d0407baSopenharmony_ci size_t maxUsage; 1193d0407baSopenharmony_ci 1203d0407baSopenharmony_ci MppBuffer frmBuf; 1213d0407baSopenharmony_ci size_t headerSize; 1223d0407baSopenharmony_ci size_t frameSize; 1233d0407baSopenharmony_ci MppBuffer pktBuf; 1243d0407baSopenharmony_ci} RKHdiBaseComponent; 1253d0407baSopenharmony_ci 1263d0407baSopenharmony_ci#endif // HDI_MPP_H 1273d0407baSopenharmony_ci 128