Lines Matching defs:component

34 static void InitComponentSetup(RKHdiBaseComponent *component)
36 component->setup.fmt = PIXEL_FMT_BUTT;
37 component->fmt = MPP_FMT_BUTT;
38 SetDefaultFps(&component->setup);
39 SetDefaultDropMode(&component->setup);
40 component->setup.rc.rcMode = MPP_ENC_RC_MODE_VBR;
41 SetDefaultGopMode(&component->setup);
46 RKHdiBaseComponent* component = (RKHdiBaseComponent *)malloc(sizeof(RKHdiBaseComponent));
47 if (component == NULL) {
51 int32_t ret = memset_s(component, sizeof(RKHdiBaseComponent), 0, sizeof(RKHdiBaseComponent));
55 InitComponentSetup(component);
57 ret = GetMppApi(&component->mppApi);
58 if ((ret != HDF_SUCCESS) || (component->mppApi == NULL)) {
60 component->mppApi = NULL;
61 free(component);
65 component->ctxType = ctxType;
66 component->codingType = codingType;
67 component->frameNum = 0;
68 ret = InitMppConfig(component);
71 ReleaseMppApi(component->mppApi);
72 component->mppApi = NULL;
73 free(component);
77 return component;
80 static void DestroyMppComponent(RKHdiBaseComponent *component)
82 if (component == NULL) {
83 HDF_LOGE("%{public}s: component is NULL", __func__);
85 DeinitMppConfig(component);
86 ReleaseMppApi(component->mppApi);
87 component->mppApi = NULL;
88 free(component);
89 component = NULL;
104 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
105 if (component == NULL) {
106 HDF_LOGE("%{public}s: component is NULL", __func__);
114 component->pCallbacks = cb;
200 RKHdiBaseComponent* component = CreateMppComponent(ctxType, codingType);
201 if (component == NULL) {
205 ret = component->mppApi->HdiMppCreate(&ctx, &(component->mpi));
211 component->ctx = ctx;
212 component->componentName = name;
213 if (!AddToMppComponentManager(*handle, component)) {
217 if (component->ctxType == MPP_CTX_ENC) {
219 ret = component->mpi->control(ctx, MPP_SET_OUTPUT_TIMEOUT, &timeout);
226 ret = component->mppApi->HdiMppInit(ctx, ctxType, codingType);
240 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
241 if (component == NULL) {
242 HDF_LOGE("%{public}s: component is NULL", __func__);
246 RKMppApi *mppApi = component->mppApi;
247 if (component->packet != NULL) {
248 mppApi->HdiMppPacketDeinit(&component->packet);
249 component->packet = NULL;
252 if (component->frame != NULL) {
253 mppApi->HdiMppFrameDeinit(&component->frame);
254 component->frame = NULL;
257 if (component->frmBuf != NULL) {
258 mppApi->HdiMppBufferPutWithCaller(component->frmBuf, __func__);
259 component->frmBuf = NULL;
262 if (component->pktBuf != NULL) {
263 mppApi->HdiMppBufferPutWithCaller(component->pktBuf, __func__);
264 component->pktBuf = NULL;
267 if (component->frmGrp != NULL) {
268 mppApi->HdiMppBufferGroupPut(component->frmGrp);
269 component->frmGrp = NULL;
272 if (component->ctxType == MPP_CTX_DEC) {
274 component->frameCount, component->frameErr);
276 component->maxUsage / (float)BITWISE_LEFT_SHIFT_WITH_ONE);
277 } else if (component->ctxType == MPP_CTX_ENC) {
278 HDF_LOGI("%{public}s: enc frame count : %{public}d", __func__, component->frameCount);
285 DestroyMppComponent(component);
294 int32_t SetExtMppParam(RKHdiBaseComponent* component, Param *param)
301 ret = SetParamSplitParse(component, param);
308 ret = SetParamCodecFrameNum(component, param);
314 ret = SetParamDrop(component, param);
323 int32_t SetMppParam(RKHdiBaseComponent* component, Param *param)
330 ret = SetParamWidth(component, param);
333 ret = SetParamHeight(component, param);
336 ret = SetParamPixelFmt(component, param);
339 ret = SetParamStride(component, param);
342 ret = SetParamFps(component, param);
345 ret = SetParamRateControl(component, param);
348 ret = SetParamGop(component, param);
351 ret = SetParamMimeCodecType(component, param);
354 ret = SetParamCodecType(component, param);
357 ret = SetExtMppParam(component, param);
366 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
368 if (component == NULL) {
369 HDF_LOGE("%{public}s: component is NULL", __func__);
372 if (ctx != component->ctx) {
378 ret = SetMppParam(component, params + i);
388 int32_t GetExtMppParam(RKHdiBaseComponent* component, Param *param)
395 ret = GetParamSplitParse(component, param);
402 ret = GetParamCodecFrameNum(component, param);
408 ret = GetParamDrop(component, param);
417 int32_t GetMppParam(RKHdiBaseComponent* component, Param *param)
424 ret = GetParamInputBufferCount(component, param);
427 ret = GetParamOutputBufferCount(component, param);
430 ret = GetParamBufferSize(component, param);
433 ret = GetParamWidth(component, param);
436 ret = GetParamHeight(component, param);
439 ret = GetParamPixleFmt(component, param);
442 ret = GetParamStride(component, param);
445 ret = GetParamFps(component, param);
448 ret = GetParamRateControl(component, param);
451 ret = GetParamGop(component, param);
454 ret = GetParamMimeCodecType(component, param);
457 ret = GetParamCodecType(component, param);
460 ret = GetExtMppParam(component, param);
469 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
471 if (component == NULL) {
472 HDF_LOGE("%{public}s: component is NULL", __func__);
475 if (ctx != component->ctx) {
481 ret = GetMppParam(component, params + i);
493 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
495 if (component == NULL) {
496 HDF_LOGE("%{public}s: component is NULL", __func__);
500 if (component->ctxType == MPP_CTX_ENC) {
501 ret = SetEncCfg(component);
502 } else if (component->ctxType == MPP_CTX_DEC) {
503 ret = SetDecCfg(component);
510 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
512 if (component == NULL) {
513 HDF_LOGE("%{public}s: component is NULL", __func__);
523 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
524 if (component == NULL) {
525 HDF_LOGE("%{public}s: component is NULL", __func__);
532 ret = component->mpi->reset(ctx);
543 if (component->pCallbacks != NULL) {
544 UINTPTR userData = (UINTPTR)component->ctx;
548 component->pCallbacks->OnEvent(userData, event, length, eventData);
554 int32_t DecodeInitPacket(RKHdiBaseComponent* component, MppPacket *pPacket, CodecBuffer *inputData, RK_U32 pkt_eos)
557 RKMppApi *mppApi = component->mppApi;
578 MPP_RET DecodeGetFrame(RKHdiBaseComponent* component, MppCtx ctx, MppFrame *frame)
580 MppApi *mpi = component->mpi;
599 int32_t HandleDecodeFrameInfoChange(RKHdiBaseComponent* component, MppFrame frame, MppCtx ctx)
602 RKMppApi *mppApi = component->mppApi;
603 MppApi *mpi = component->mpi;
610 component->setup.width = width;
611 component->setup.height = height;
612 CheckSetupStride(component);
619 if (component->frmGrp == NULL) {
620 ret = mppApi->HdiMppBufferGroupGet(&component->frmGrp,
626 ret = mpi->control(ctx, MPP_DEC_SET_EXT_BUF_GROUP, component->frmGrp);
632 ret = mppApi->HdiMppBufferGroupClear(component->frmGrp);
639 ret = mppApi->HdiMppBufferGroupLimitConfig(component->frmGrp, buf_size, BUFFER_GROUP_LIMIT_NUM);
652 static IM_STATUS PutDecodeFrameToOutput(RKHdiBaseComponent* component, MppFrame frame, CodecBuffer *outInfo)
654 RKMppApi *mppApi = component->mppApi;
690 dst.wstride = component->setup.stride.horStride;
691 dst.hstride = component->setup.stride.verStride;
692 dst.format = ConvertHdiFormat2RgaFormat(component->setup.fmt);
701 void HandleDecodeFrameOutput(RKHdiBaseComponent* component, MppFrame frame, int32_t frm_eos, CodecBuffer *outInfo)
703 RKMppApi *mppApi = component->mppApi;
706 component->frameCount++;
709 component->frameErr++;
718 IM_STATUS ret = PutDecodeFrameToOutput(component, frame, outInfo);
726 __func__, component->frameCount, component->frameErr);
728 UINTPTR userData = (UINTPTR)component->ctx;
730 component->pCallbacks->OutputBufferAvailable(userData, outInfo, &acquireFd);
733 int32_t HandleDecodedFrame(RKHdiBaseComponent* component, MppFrame frame, MppCtx ctx,
736 RKMppApi *mppApi = component->mppApi;
739 if (HandleDecodeFrameInfoChange(component, frame, ctx) != HDF_SUCCESS) {
745 HandleDecodeFrameOutput(component, frame, frm_eos, outInfo);
751 if (component->frmGrp) {
752 size_t usage = mppApi->HdiMppBufferGroupUsage(component->frmGrp);
753 if (usage > component->maxUsage)
754 component->maxUsage = usage;
759 RK_U32 CodecDecodeGetFrameLoop(RKHdiBaseComponent* component, MppCtx ctx, RK_U32 pkt_done,
763 RKMppApi *mppApi = component->mppApi;
769 ret = DecodeGetFrame(component, ctx, &frame);
777 if (HandleDecodedFrame(component, frame, ctx, frm_eos, outInfo) != HDF_SUCCESS) {
789 if ((component->frameNum > 0 && (component->frameCount >= component->frameNum)) ||
790 ((component->frameNum == 0) && frm_eos != 0)) {
811 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
812 if (component == NULL) {
813 HDF_LOGE("%{public}s: component is NULL", __func__);
816 MppApi *mpi = component->mpi;
817 MppPacket packet = component->packet;
819 if (DecodeInitPacket(component, &packet, inputData, pkt_eos) != HDF_SUCCESS) {
832 frm_eos = CodecDecodeGetFrameLoop(component, ctx, pkt_done, pkt_eos, outInfo);
833 if ((component->frameNum > 0 && (component->frameCount >= component->frameNum)) ||
834 ((component->frameNum == 0) && frm_eos != 0)) {
843 UINTPTR userData = (UINTPTR)component->ctx;
845 component->pCallbacks->InputBufferAvailable(userData, inputData, &acquireFd);
853 static IM_STATUS GetEncodeFrameFromInput(RKHdiBaseComponent* component, MppFrame frame,
856 RKMppApi *mppApi = component->mppApi;
881 dst.format = ConvertMppFormat2RgaFormat(component->fmt);
891 src.wstride = component->setup.stride.horStride;
892 src.hstride = component->setup.stride.verStride;
893 src.format = ConvertHdiFormat2RgaFormat(component->setup.fmt);
902 int32_t EncodeInitFrame(RKHdiBaseComponent* component, MppFrame *pFrame, RK_U32 frm_eos, CodecBuffer *inputData)
905 RKMppApi *mppApi = component->mppApi;
915 mppApi->HdiMppFrameSetWidth(*pFrame, component->setup.width);
916 mppApi->HdiMppFrameSetHeight(*pFrame, component->setup.height);
917 mppApi->HdiMppFrameSetHorStride(*pFrame, component->horStride);
918 mppApi->HdiMppFrameSetVerStride(*pFrame, component->verStride);
919 mppApi->HdiMppFrameSetFormat(*pFrame, component->fmt);
922 IM_STATUS status = GetEncodeFrameFromInput(component, *pFrame, component->frmBuf, inputData);
924 mppApi->HdiMppFrameSetBuffer(*pFrame, component->frmBuf);
934 int32_t HandleEncodedPacket(RKHdiBaseComponent* component, MppPacket packet, RK_U32 pkt_eos, CodecBuffer *outInfo)
936 RKMppApi *mppApi = component->mppApi;
942 UINTPTR userData = (UINTPTR)component->ctx;
960 __func__, component->frameCount);
962 component->pCallbacks->OutputBufferAvailable(userData, outInfo, &acquireFd);
967 RK_U32 CodecEncodeGetPacketLoop(RKHdiBaseComponent* component, MppCtx ctx, CodecBuffer *outInfo)
970 MppApi *mpi = component->mpi;
971 RKMppApi *mppApi = component->mppApi;
972 MppPacket packet = component->packet;
985 HandleEncodedPacket(component, packet, pkt_eos, outInfo);
993 component->frameCount += eoi;
1022 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
1023 if (component == NULL) {
1024 HDF_LOGE("%{public}s: component is NULL", __func__);
1027 MppApi *mpi = component->mpi;
1028 RKMppApi *mppApi = component->mppApi;
1030 if (EncodeInitFrame(component, &frame, frm_eos, inputData) != HDF_SUCCESS) {
1041 pkt_eos = CodecEncodeGetPacketLoop(component, ctx, outInfo);
1043 userData = (UINTPTR)component->ctx;
1044 component->pCallbacks->InputBufferAvailable(userData, inputData, &acquireFd);
1045 if (component->frameNum > 0 && component->frameCount >= component->frameNum) {
1065 RKHdiBaseComponent* component = FindInMppComponentManager(handle);
1066 if (component == NULL) {
1067 HDF_LOGE("%{public}s: component is NULL", __func__);
1070 RKMppApi *mppApi = component->mppApi;
1072 mppApi->HdiMppPacketInitWithBuffer(&packet, component->pktBuf);
1076 ret = component->mpi->control(ctx, MPP_ENC_GET_HDR_SYNC, packet);
1085 UINTPTR userData = (UINTPTR)component->ctx;
1096 component->pCallbacks->OutputBufferAvailable(userData, &outInfo, &acquireFd);