diff --git a/codec/hal/BUILD.gn b/codec/hal/BUILD.gn index ff04150fa218a9812265598e3f4a3354741f3fb2..2fcf54bd3ca100a8ab66331d09a0a52bc5c38b29 100644 --- a/codec/hal/BUILD.gn +++ b/codec/hal/BUILD.gn @@ -41,18 +41,7 @@ ohos_shared_library("libcodec_hdi_omx_server") { "v2.0/hdi_impl/src/component_node.cpp", "v2.0/hdi_impl/src/icodec_buffer.cpp", ] - - cflags_cc = [ - "-Wall", - "-Wextra", - "-Werror", - "-Wno-#warnings", - "-Wno-missing-braces", - "-Wno-missing-field-initializers", - ] - if (is_standard_system) { - deps = [ "//third_party/libdrm:libdrm" ] external_deps = [ "graphic_chipsetsdk:buffer_handle", "hdf_core:libhdf_host", @@ -87,8 +76,6 @@ ohos_shared_library("libcodec_hdi_omx_client") { ] if (is_standard_system) { - deps = [ "//third_party/libdrm:libdrm" ] - external_deps = [ "graphic_chipsetsdk:buffer_handle", "hdf_core:libhdf_host", diff --git a/codec/hal/idl_service/BUILD.gn b/codec/hal/idl_service/BUILD.gn index 4b6dc17f2b281270115a852c036a24184634fa7a..d2663e0cf5694601c508a6cb2f20f13fe4f98926 100644 --- a/codec/hal/idl_service/BUILD.gn +++ b/codec/hal/idl_service/BUILD.gn @@ -15,7 +15,7 @@ import("//drivers/hdf_core/adapter/uhdf2/uhdf.gni") ohos_shared_library("libcodec_component_manager_service_1.0") { include_dirs = [ - "//drivers/peripheral/codec/hal/buffersequence/", + "//drivers/hdf_core/adapter/uhdf2/model/display/base/buffer_parcelable", "//drivers/peripheral/codec/interfaces/include/", "//third_party/openmax/api/1.1.2", "include", @@ -33,19 +33,7 @@ ohos_shared_library("libcodec_component_manager_service_1.0") { "src/icodec_buffer.cpp", ] - cflags_cc = [ - "-Wall", - "-Wextra", - "-Werror", - "-Wno-#warnings", - "-Wno-missing-braces", - "-Wno-missing-field-initializers", - ] - - deps = [ - "//drivers/peripheral/codec/hal/buffersequence:libbufferhandle_parcelable", - "//third_party/libdrm:libdrm", - ] + deps = [ "//drivers/hdf_core/adapter/uhdf2/model/display/base/buffer_parcelable:libbufferhandle_parcelable" ] if (is_standard_system) { external_deps = [ "drivers_interface_codec:codec_idl_headers", @@ -71,7 +59,7 @@ ohos_shared_library("libcodec_component_manager_service_1.0") { ohos_shared_library("libcodec_driver") { include_dirs = [ "//drivers/peripheral/codec/interfaces/include/", - "//drivers/peripheral/codec/hal/buffersequence", + "//drivers/hdf_core/adapter/uhdf2/model/display/base/buffer_parcelable", "include", ] diff --git a/codec/hal/idl_service/include/icodec_buffer.h b/codec/hal/idl_service/include/icodec_buffer.h index 077a375ccbcbda058ae3c3423b14522fbe7e7304..4aa54849d7ece62eb6d6f59f144638e7b760cbca 100644 --- a/codec/hal/idl_service/include/icodec_buffer.h +++ b/codec/hal/idl_service/include/icodec_buffer.h @@ -65,7 +65,7 @@ protected: ICodecBuffer() {} virtual bool CheckInvalid(struct OmxCodecBuffer &codecBuffer); - + int32_t SyncWait(int fd, uint32_t timeout); protected: struct OmxCodecBuffer codecBuffer_; }; diff --git a/codec/hal/idl_service/src/codec_component_manager_driver.cpp b/codec/hal/idl_service/src/codec_component_manager_driver.cpp index cf3c9ad41205ed08587bf1afcf671a21140bfb45..86c03a74ad56ae0ebdf678bcd9afbf6076bca2c7 100644 --- a/codec/hal/idl_service/src/codec_component_manager_driver.cpp +++ b/codec/hal/idl_service/src/codec_component_manager_driver.cpp @@ -15,9 +15,9 @@ #include #include -#include #include #include "codec_component_config.h" +#include "codec_log_wrapper.h" #include "v1_0/codec_component_manager_stub.h" using namespace OHOS::HDI::Codec::V1_0; namespace { @@ -38,11 +38,11 @@ static int32_t CodecComponentManagerDriverDispatch(struct HdfDeviceIoClient *cli OHOS::MessageOption option; if (SbufToParcel(data, &dataParcel) != HDF_SUCCESS) { - HDF_LOGE("%{public}s:invalid data sbuf object to dispatch", __func__); + CODEC_LOGE("invalid data sbuf object to dispatch"); return HDF_ERR_INVALID_PARAM; } if (SbufToParcel(reply, &replyParcel) != HDF_SUCCESS) { - HDF_LOGE("%{public}s:invalid reply sbuf object to dispatch", __func__); + CODEC_LOGE("invalid reply sbuf object to dispatch"); return HDF_ERR_INVALID_PARAM; } @@ -51,18 +51,18 @@ static int32_t CodecComponentManagerDriverDispatch(struct HdfDeviceIoClient *cli static int HdfCodecComponentManagerDriverInit(struct HdfDeviceObject *deviceObject) { - HDF_LOGI("HdfCodecComponentManagerDriverInit enter"); + CODEC_LOGI("HdfCodecComponentManagerDriverInit enter"); OHOS::Codec::Omx::CodecComponentConfig::GetInstance()->Init(*deviceObject->property); return HDF_SUCCESS; } static int HdfCodecComponentManagerDriverBind(struct HdfDeviceObject *deviceObject) { - HDF_LOGI("HdfCodecComponentManagerDriverBind enter"); + CODEC_LOGI("HdfCodecComponentManagerDriverBind enter"); auto *hdfCodecComponentManagerHost = new (std::nothrow) HdfCodecComponentManagerHost; if (hdfCodecComponentManagerHost == nullptr) { - HDF_LOGE("%{public}s: failed to create create HdfCodecComponentManagerHost object", __func__); + CODEC_LOGE("failed to create create HdfCodecComponentManagerHost object"); return HDF_FAILURE; } @@ -72,7 +72,7 @@ static int HdfCodecComponentManagerDriverBind(struct HdfDeviceObject *deviceObje auto serviceImpl = ICodecComponentManager::Get(true); if (serviceImpl == nullptr) { - HDF_LOGE("%{public}s: failed to get of implement service", __func__); + CODEC_LOGE("failed to get of implement service"); delete hdfCodecComponentManagerHost; return HDF_FAILURE; } @@ -80,7 +80,7 @@ static int HdfCodecComponentManagerDriverBind(struct HdfDeviceObject *deviceObje hdfCodecComponentManagerHost->stub = OHOS::HDI::ObjectCollector::GetInstance().GetOrNewObject(serviceImpl, ICodecComponentManager::GetDescriptor()); if (hdfCodecComponentManagerHost->stub == nullptr) { - HDF_LOGE("%{public}s: failed to get stub object", __func__); + CODEC_LOGE("failed to get stub object"); delete hdfCodecComponentManagerHost; return HDF_FAILURE; } @@ -91,9 +91,9 @@ static int HdfCodecComponentManagerDriverBind(struct HdfDeviceObject *deviceObje static void HdfCodecComponentManagerDriverRelease(struct HdfDeviceObject *deviceObject) { - HDF_LOGI("HdfCodecComponentManagerDriverRelease enter"); + CODEC_LOGI("HdfCodecComponentManagerDriverRelease enter"); if (deviceObject->service == nullptr) { - HDF_LOGE("HdfCodecComponentManagerDriverRelease not initted"); + CODEC_LOGE("HdfCodecComponentManagerDriverRelease not initted"); return; } diff --git a/codec/hal/idl_service/src/codec_component_manager_service.cpp b/codec/hal/idl_service/src/codec_component_manager_service.cpp index c6963466749588352ca9b2f827dd5c187bbcc4fe..835f99f9c3d9b924eda5961a8e752a1a84ccce8d 100644 --- a/codec/hal/idl_service/src/codec_component_manager_service.cpp +++ b/codec/hal/idl_service/src/codec_component_manager_service.cpp @@ -72,12 +72,12 @@ int32_t CodecComponentManagerService::DestoryComponent(uint32_t componentId) CODEC_LOGD("componentId[%{public}d]", componentId); auto iter = componentMap_.find(componentId); if (iter == componentMap_.end() || iter->second == nullptr) { - CODEC_LOGE(" can not find component service by componentId[%{public}d]", componentId); + CODEC_LOGE("can not find component service by componentId[%{public}d]", componentId); return HDF_ERR_INVALID_PARAM; } - std::unique_lock autoLock(mutex_); componentMap_.erase(iter); + iter->second = nullptr; return HDF_SUCCESS; } diff --git a/codec/hal/idl_service/src/codec_dyna_buffer.cpp b/codec/hal/idl_service/src/codec_dyna_buffer.cpp index bc959b38e40da36ab8335a41aa1874afa040548e..be82bdbe8ebab10ab1da131faedf0424e15666df 100644 --- a/codec/hal/idl_service/src/codec_dyna_buffer.cpp +++ b/codec/hal/idl_service/src/codec_dyna_buffer.cpp @@ -15,9 +15,9 @@ #include "codec_dyna_buffer.h" #include #include -#include -#include #include +#include +#include "codec_log_wrapper.h" #include "v1_0/codec_types.h" using namespace OHOS::HDI::Codec::V1_0; namespace OHOS { @@ -48,7 +48,7 @@ sptr CodecDynaBuffer::Create(struct OmxCodecBuffer &codecBuffer) int32_t CodecDynaBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_BUFFERHEADERTYPE &omxBuffer) { - HDF_LOGE("%{public}s :dyna buffer handle is not supported in FillThisBuffer ", __func__); + CODEC_LOGE("dyna buffer handle is not supported in FillThisBuffer"); (void)codecBuffer; (void)omxBuffer; return HDF_ERR_INVALID_PARAM; @@ -57,14 +57,17 @@ int32_t CodecDynaBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_B int32_t CodecDynaBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_BUFFERHEADERTYPE &omxBuffer) { if (!CheckInvalid(codecBuffer)) { - HDF_LOGE("%{public}s : CheckInvalid return false", __func__); + CODEC_LOGE("CheckInvalid return false"); return HDF_ERR_INVALID_PARAM; } ResetBuffer(codecBuffer, omxBuffer); int fence = codecBuffer.fenceFd; if (fence >= 0) { - sync_wait(fence, TIME_WAIT_MS); + auto ret = SyncWait(fence, TIME_WAIT_MS); + if (ret != EOK) { + CODEC_LOGW("SyncWait ret err"); + } close(codecBuffer.fenceFd); codecBuffer.fenceFd = -1; } @@ -75,7 +78,7 @@ int32_t CodecDynaBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_ int32_t CodecDynaBuffer::FreeBuffer(struct OmxCodecBuffer &codecBuffer) { if (!CheckInvalid(codecBuffer)) { - HDF_LOGE("%{public}s :shMem_ is null or CheckInvalid return false", __func__); + CODEC_LOGE("shMem_ is null or CheckInvalid return false"); return HDF_ERR_INVALID_PARAM; } if (codecBuffer.bufferhandle != nullptr) { @@ -95,7 +98,7 @@ int32_t CodecDynaBuffer::EmptyOmxBufferDone(OMX_BUFFERHEADERTYPE &omxBuffer) int32_t CodecDynaBuffer::FillOmxBufferDone(OMX_BUFFERHEADERTYPE &omxBuffer) { - HDF_LOGE("%{public}s :dyna buffer handle is not supported in FillThisBuffer ", __func__); + CODEC_LOGE("dyna buffer handle is not supported in FillThisBuffer"); (void)omxBuffer; return HDF_ERR_INVALID_PARAM; } @@ -108,7 +111,7 @@ uint8_t *CodecDynaBuffer::GetBuffer() bool CodecDynaBuffer::CheckInvalid(struct OmxCodecBuffer &codecBuffer) { if (!ICodecBuffer::CheckInvalid(codecBuffer) || dynaBuffer_ == nullptr) { - HDF_LOGE("%{public}s :dynaBuffer_ is null or CheckInvalid return false", __func__); + CODEC_LOGE("dynaBuffer_ is null or CheckInvalid return false"); return false; } return true; diff --git a/codec/hal/idl_service/src/codec_handle_buffer.cpp b/codec/hal/idl_service/src/codec_handle_buffer.cpp index b66e1d2df493bb2158b49c7fa16f92e7b9bcde4f..1d68af2e670a350485bd65682054239510370ebf 100644 --- a/codec/hal/idl_service/src/codec_handle_buffer.cpp +++ b/codec/hal/idl_service/src/codec_handle_buffer.cpp @@ -15,9 +15,9 @@ #include "codec_handle_buffer.h" #include -#include -#include #include +#include +#include "codec_log_wrapper.h" #include "v1_0/codec_types.h" using namespace OHOS::HDI::Codec::V1_0; namespace OHOS { @@ -37,7 +37,7 @@ CodecHandleBuffer::~CodecHandleBuffer() sptr CodecHandleBuffer::Create(struct OmxCodecBuffer &codecBuffer) { if (codecBuffer.bufferhandle == nullptr) { - HDF_LOGE("%{public}s error, bufferHandle is null", __func__); + CODEC_LOGE("bufferHandle is null"); return nullptr; } auto bufferHandle = codecBuffer.bufferhandle->Move(); @@ -50,14 +50,17 @@ sptr CodecHandleBuffer::Create(struct OmxCodecBuffer &codecBuffer) int32_t CodecHandleBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_BUFFERHEADERTYPE &omxBuffer) { if (!CheckInvalid(codecBuffer)) { - HDF_LOGE("%{public}s :CheckInvalid return false or mem has no right to write ", __func__); + CODEC_LOGE("CheckInvalid return false or mem has no right to write "); return HDF_ERR_INVALID_PARAM; } ResetBuffer(codecBuffer, omxBuffer); int fenceFd = codecBuffer.fenceFd; if (fenceFd >= 0) { - sync_wait(fenceFd, TIME_WAIT_MS); + auto ret = SyncWait(fenceFd, TIME_WAIT_MS); + if (ret != EOK) { + CODEC_LOGW("SyncWait ret err"); + } close(codecBuffer.fenceFd); codecBuffer.fenceFd = -1; } @@ -66,7 +69,7 @@ int32_t CodecHandleBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX int32_t CodecHandleBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_BUFFERHEADERTYPE &omxBuffer) { - HDF_LOGE("%{public}s : bufferHandle is not support in EmptyThisBuffer", __func__); + CODEC_LOGE("bufferHandle is not support in EmptyThisBuffer"); (void)codecBuffer; (void)omxBuffer; return HDF_ERR_INVALID_PARAM; @@ -75,7 +78,7 @@ int32_t CodecHandleBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OM int32_t CodecHandleBuffer::FreeBuffer(struct OmxCodecBuffer &codecBuffer) { if (!CheckInvalid(codecBuffer)) { - HDF_LOGE("%{public}s :shMem_ is null or CheckInvalid return false", __func__); + CODEC_LOGE("shMem_ is null or CheckInvalid return false"); return HDF_ERR_INVALID_PARAM; } codecBuffer.bufferhandle = nullptr; @@ -89,7 +92,7 @@ int32_t CodecHandleBuffer::FreeBuffer(struct OmxCodecBuffer &codecBuffer) int32_t CodecHandleBuffer::EmptyOmxBufferDone(OMX_BUFFERHEADERTYPE &omxBuffer) { - HDF_LOGE("%{public}s : bufferHandle is not support in EmptyThisBuffer", __func__); + CODEC_LOGE("bufferHandle is not support in EmptyThisBuffer"); (void)omxBuffer; return HDF_ERR_INVALID_PARAM; } @@ -107,7 +110,7 @@ uint8_t *CodecHandleBuffer::GetBuffer() bool CodecHandleBuffer::CheckInvalid(struct OmxCodecBuffer &codecBuffer) { if (!ICodecBuffer::CheckInvalid(codecBuffer) || bufferHandle_ == nullptr) { - HDF_LOGE("%{public}s :bufferHandle_ is null or CheckInvalid return false", __func__); + CODEC_LOGE("bufferHandle_ is null or CheckInvalid return false"); return false; } return true; diff --git a/codec/hal/idl_service/src/codec_omx_core.cpp b/codec/hal/idl_service/src/codec_omx_core.cpp index e92c3338df27637f9c2ee5f8adb8cbc8edae7c83..3c862357e8c7b6c278495b7bc5e3f65f5fac5b4d 100644 --- a/codec/hal/idl_service/src/codec_omx_core.cpp +++ b/codec/hal/idl_service/src/codec_omx_core.cpp @@ -17,9 +17,9 @@ #include #include #include -#include #include #include +#include "codec_log_wrapper.h" namespace OHOS { namespace Codec { namespace Omx { @@ -33,7 +33,7 @@ int32_t CodecOMXCore::Init(const std::string &libName) { libHandle_ = dlopen(libName.c_str(), RTLD_LAZY); if (libHandle_ == NULL) { - HDF_LOGE("%{public}s:failed to dlopen %{public}s.", __func__, libName.c_str()); + CODEC_LOGE("Failed to dlopen %{public}s.", libName.c_str()); return HDF_ERR_INVALID_PARAM; } @@ -61,7 +61,7 @@ int32_t CodecOMXCore::GetHandle(OMX_HANDLETYPE &handle, std::string &compName, O const OMX_CALLBACKTYPE &callbacks) { if (getHandle_ == nullptr) { - HDF_LOGE("%{public}s: getHandle is null.", __func__); + CODEC_LOGE("getHandle_ is nullptr."); return HDF_ERR_INVALID_PARAM; } return (*getHandle_)(&handle, const_cast(compName.c_str()), appData, (OMX_CALLBACKTYPE *)&callbacks); @@ -70,7 +70,7 @@ int32_t CodecOMXCore::GetHandle(OMX_HANDLETYPE &handle, std::string &compName, O int32_t CodecOMXCore::FreeHandle(OMX_HANDLETYPE handle) { if (freeHandle_ == nullptr) { - HDF_LOGE("%{public}s: freeHandle_ is null.", __func__); + CODEC_LOGE("freeHandle_ is nullptr."); return HDF_ERR_INVALID_PARAM; } return (*freeHandle_)(handle); @@ -79,7 +79,7 @@ int32_t CodecOMXCore::FreeHandle(OMX_HANDLETYPE handle) int32_t CodecOMXCore::ComponentNameEnum(std::string &name, uint32_t index) { if (componentNameEnum_ == nullptr) { - HDF_LOGE("%{public}s: componentNameEnum is null.", __func__); + CODEC_LOGE("componentNameEnum_ is nullptr."); return HDF_ERR_INVALID_PARAM; } char tmpComponentName[OMX_MAX_STRINGNAME_SIZE] = {0}; @@ -92,13 +92,13 @@ int32_t CodecOMXCore::ComponentNameEnum(std::string &name, uint32_t index) int32_t CodecOMXCore::GetRolesOfComponent(std::string &name, std::vector &roles) { if (getRoles_ == nullptr) { - HDF_LOGE("%{public}s: getRoles is null.", __func__); + CODEC_LOGE("getRoles_ is null."); return HDF_ERR_INVALID_PARAM; } uint32_t roleCount = 0; uint32_t err = (*getRoles_)(const_cast(name.c_str()), &roleCount, nullptr); if (err != HDF_SUCCESS) { - HDF_LOGE("%{public}s: getRoles_ return err [%{public}x].", __func__, err); + CODEC_LOGE("getRoles_ return err [%{public}x].", err); return err; } if (roleCount <= 0) { @@ -109,14 +109,14 @@ int32_t CodecOMXCore::GetRolesOfComponent(std::string &name, std::vector(name.c_str()), &roleCount, reinterpret_cast(role)); if (err != HDF_SUCCESS) { - HDF_LOGE("%{public}s: getRoles_ return err [%{public}x].", __func__, err); + CODEC_LOGE("getRoles_ return err [%{public}x].", err); return err; } for (uint32_t i = 0; i < roleLen; i++) { diff --git a/codec/hal/idl_service/src/codec_share_buffer.cpp b/codec/hal/idl_service/src/codec_share_buffer.cpp index 980c80d84c21c64422dcd85964512b1971ecd0b7..650c8410f7cd7afad917914ac0ee94a3d3c13c24 100644 --- a/codec/hal/idl_service/src/codec_share_buffer.cpp +++ b/codec/hal/idl_service/src/codec_share_buffer.cpp @@ -15,9 +15,9 @@ #include "codec_share_buffer.h" #include -#include #include #include +#include "codec_log_wrapper.h" using namespace OHOS::HDI::Codec::V1_0; namespace OHOS { namespace Codec { @@ -42,7 +42,7 @@ void CodecShareBuffer::SetAshMem(std::shared_ptr shMem) OHOS::sptr CodecShareBuffer::Create(struct OmxCodecBuffer &codecBuffer) { if (codecBuffer.fd < 0) { - HDF_LOGE("%{public}s error, codecBuffer.fd < 0", __func__); + CODEC_LOGE("codecBuffer.fd is invalid"); return nullptr; } int size = OHOS::AshmemGetSize(codecBuffer.fd); @@ -54,7 +54,7 @@ OHOS::sptr CodecShareBuffer::Create(struct OmxCodecBuffer &codecBu mapd = sharedMem->MapReadOnlyAshmem(); } if (!mapd) { - HDF_LOGE("%{public}s error, MapReadAndWriteAshmem or MapReadOnlyAshmem return false", __func__); + CODEC_LOGE("MapReadAndWriteAshmem or MapReadOnlyAshmem return false"); return nullptr; } codecBuffer.fd = -1; @@ -78,7 +78,7 @@ OHOS::sptr CodecShareBuffer::Allocate(struct OmxCodecBuffer &codec mapd = sharedMemory->MapReadOnlyAshmem(); } if (!mapd) { - HDF_LOGE("%{public}s error, MapReadAndWriteAshmem or MapReadOnlyAshmem return false", __func__); + CODEC_LOGE("MapReadAndWriteAshmem or MapReadOnlyAshmem return false"); return nullptr; } codecBuffer.offset = 0; @@ -92,7 +92,7 @@ OHOS::sptr CodecShareBuffer::Allocate(struct OmxCodecBuffer &codec int32_t CodecShareBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_BUFFERHEADERTYPE &omxBuffer) { if (!CheckInvalid(codecBuffer) || codecBuffer_.type != READ_WRITE_TYPE) { - HDF_LOGE("%{public}s :CheckInvalid return false or mem has no right to write ", __func__); + CODEC_LOGE("CheckInvalid return false or mem has no right to write "); return HDF_ERR_INVALID_PARAM; } ReleaseFd(codecBuffer); @@ -102,7 +102,7 @@ int32_t CodecShareBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_ int32_t CodecShareBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_BUFFERHEADERTYPE &omxBuffer) { if (!CheckInvalid(codecBuffer)) { - HDF_LOGE("%{public}s :shMem_ is null or CheckInvalid return false", __func__); + CODEC_LOGE("shMem_ is null or CheckInvalid return false"); return HDF_ERR_INVALID_PARAM; } @@ -110,14 +110,14 @@ int32_t CodecShareBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX void *sharedPtr = const_cast(shMem_->ReadFromAshmem(codecBuffer.filledLen, codecBuffer.offset)); if (!sharedPtr) { - HDF_LOGE("%{public}s error, omxBuffer.length [%{public}d omxBuffer.offset[%{public}d]", __func__, - codecBuffer.filledLen, codecBuffer.offset); + CODEC_LOGE("omxBuffer.length [%{public}d omxBuffer.offset[%{public}d]", codecBuffer.filledLen, + codecBuffer.offset); return HDF_ERR_INVALID_PARAM; } auto ret = memcpy_s(omxBuffer.pBuffer + codecBuffer.offset, codecBuffer.allocLen - codecBuffer.offset, sharedPtr, codecBuffer.filledLen); if (ret != EOK) { - HDF_LOGE("%{public}s error, memcpy_s ret [%{public}d", __func__, ret); + CODEC_LOGE("memcpy_s ret [%{public}d]", ret); return HDF_ERR_INVALID_PARAM; } return ICodecBuffer::EmptyOmxBuffer(codecBuffer, omxBuffer); @@ -126,7 +126,7 @@ int32_t CodecShareBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX int32_t CodecShareBuffer::FreeBuffer(struct OmxCodecBuffer &codecBuffer) { if (!CheckInvalid(codecBuffer)) { - HDF_LOGE("%{public}s :shMem_ is null or CheckInvalid return false", __func__); + CODEC_LOGE("shMem_ is null or CheckInvalid return false"); return HDF_ERR_INVALID_PARAM; } @@ -151,7 +151,7 @@ int32_t CodecShareBuffer::EmptyOmxBufferDone(OMX_BUFFERHEADERTYPE &omxBuffer) int32_t CodecShareBuffer::FillOmxBufferDone(OMX_BUFFERHEADERTYPE &omxBuffer) { if (shMem_ == nullptr || !shMem_->WriteToAshmem(omxBuffer.pBuffer, omxBuffer.nFilledLen, omxBuffer.nOffset)) { - HDF_LOGE("%{public}s write to ashmem[%{public}p] fail", __func__, shMem_.get()); + CODEC_LOGE("write to ashmem[%{public}p] fail", shMem_.get()); return HDF_ERR_INVALID_PARAM; } @@ -161,7 +161,7 @@ int32_t CodecShareBuffer::FillOmxBufferDone(OMX_BUFFERHEADERTYPE &omxBuffer) bool CodecShareBuffer::CheckInvalid(struct OmxCodecBuffer &codecBuffer) { if (!ICodecBuffer::CheckInvalid(codecBuffer) || shMem_ == nullptr) { - HDF_LOGE("%{public}s :shMem_ is null or CheckInvalid return false", __func__); + CODEC_LOGE("shMem_ is null or CheckInvalid return false"); return false; } return true; diff --git a/codec/hal/idl_service/src/component_mgr.cpp b/codec/hal/idl_service/src/component_mgr.cpp index 5db39ad1f0515e9baaf87f5c14950c491ba20e2a..9cca7b19dd21d5a1cfd2d080483f8866830bd546 100644 --- a/codec/hal/idl_service/src/component_mgr.cpp +++ b/codec/hal/idl_service/src/component_mgr.cpp @@ -14,14 +14,8 @@ */ #include "component_mgr.h" -#include -#include #include -#include -#include -#include -#define HDF_LOG_TAG codec_hdi_server - +#include "codec_log_wrapper.h" namespace OHOS { namespace Codec { namespace Omx { @@ -44,7 +38,7 @@ int32_t ComponentMgr::CreateComponentInstance(const char *componentName, const O auto iter = compoentsCore_.find(componentName); if (iter == compoentsCore_.end() || iter->second == nullptr) { - HDF_LOGE("%{public}s: can not find component[%{public}s] in core", __func__, componentName); + CODEC_LOGE("can not find component[%{public}s] in core", componentName); return err; } auto core = iter->second; diff --git a/codec/hal/idl_service/src/component_node.cpp b/codec/hal/idl_service/src/component_node.cpp index ad9149a87f202743c0d7894d431d5870239969c1..2c52e1e2cb0b92927fd8c6fae591e753f856358d 100644 --- a/codec/hal/idl_service/src/component_node.cpp +++ b/codec/hal/idl_service/src/component_node.cpp @@ -15,8 +15,8 @@ #include "component_node.h" #include -#include #include +#include #include "codec_log_wrapper.h" #include "component_mgr.h" #include "icodec_buffer.h" diff --git a/codec/hal/idl_service/src/icodec_buffer.cpp b/codec/hal/idl_service/src/icodec_buffer.cpp index a906c1de4147ad69a8c1c9b2531942dc8cf4a070..f5c7df02f3af7648c97b6ba17ab7c4eb01f6da23 100644 --- a/codec/hal/idl_service/src/icodec_buffer.cpp +++ b/codec/hal/idl_service/src/icodec_buffer.cpp @@ -14,9 +14,11 @@ */ #include "icodec_buffer.h" #include -#include +#include +#include #include "codec_dyna_buffer.h" #include "codec_handle_buffer.h" +#include "codec_log_wrapper.h" #include "codec_share_buffer.h" #include "v1_0/codec_types.h" using namespace OHOS::HDI::Codec::V1_0; @@ -44,7 +46,7 @@ sptr ICodecBuffer::CreateCodeBuffer(struct OmxCodecBuffer &codecBu buffer = CodecDynaBuffer::Create(codecBuffer); break; default: - HDF_LOGE("%s: bufferType[%{public}d] is unexpected", __func__, codecBuffer.bufferType); + CODEC_LOGE("bufferType[%{public}d] is unexpected", codecBuffer.bufferType); break; } return buffer; @@ -58,7 +60,7 @@ sptr ICodecBuffer::AllocateCodecBuffer(struct OmxCodecBuffer &code buffer = CodecShareBuffer::Allocate(codecBuffer); break; default: - HDF_LOGE("%s: bufferType[%{public}d] is unexpected", __func__, codecBuffer.bufferType); + CODEC_LOGE("bufferType[%{public}d] is unexpected", codecBuffer.bufferType); break; } return buffer; @@ -77,8 +79,8 @@ void ICodecBuffer::SetBufferId(int32_t bufferId) bool ICodecBuffer::CheckInvalid(struct OmxCodecBuffer &codecBuffer) { if (codecBuffer_.type != codecBuffer.type) { - HDF_LOGE("%{public}s :input buffer type [%{public}d], but expect type [%{public}d]", __func__, - codecBuffer.bufferType, codecBuffer_.bufferType); + CODEC_LOGE("input buffer type [%{public}d], but expect type [%{public}d]", codecBuffer.bufferType, + codecBuffer_.bufferType); return false; } return true; @@ -115,6 +117,34 @@ int32_t ICodecBuffer::FillOmxBufferDone(OMX_BUFFERHEADERTYPE &omxBuffer) codecBuffer_.pts = omxBuffer.nTimeStamp; return HDF_SUCCESS; } +int32_t ICodecBuffer::SyncWait(int fd, uint32_t timeout) +{ + int retCode = -EPERM; + if (fd < 0) { + CODEC_LOGE("The fence id is invalid."); + return retCode; + } + + struct pollfd pollfds = {0}; + pollfds.fd = fd; + pollfds.events = POLLIN; + + do { + retCode = poll(&pollfds, 1, timeout); + } while (retCode == -EPERM && (errno == EINTR || errno == EAGAIN)); + + if (retCode == 0) { + retCode = -EPERM; + errno = ETIME; + } else if (retCode > 0) { + if (pollfds.revents & (POLLERR | POLLNVAL)) { + retCode = -EPERM; + errno = EINVAL; + } + retCode = 0; + } + return retCode < 0 ? -errno : EOK; +} } // namespace Omx } // namespace Codec } // namespace OHOS \ No newline at end of file diff --git a/codec/hal/v2.0/hdi_impl/include/icodec_buffer.h b/codec/hal/v2.0/hdi_impl/include/icodec_buffer.h index bdfcc4bb2d2c3664032990efa9a2271d50f9b383..ab27e5f3784293c56be5a04e207172bfd01bdb0e 100644 --- a/codec/hal/v2.0/hdi_impl/include/icodec_buffer.h +++ b/codec/hal/v2.0/hdi_impl/include/icodec_buffer.h @@ -64,7 +64,7 @@ protected: ICodecBuffer() {} virtual bool CheckInvalid(struct OmxCodecBuffer &codecBuffer); - + int32_t SyncWait(int fd, uint32_t timeout); protected: struct OmxCodecBuffer codecBuffer_; }; diff --git a/codec/hal/v2.0/hdi_impl/src/codec_dyna_buffer.cpp b/codec/hal/v2.0/hdi_impl/src/codec_dyna_buffer.cpp index 7be49fd515d2974eb25d310952331ef469422b4f..d12fb578de3a4684160520bda1577226457698c8 100644 --- a/codec/hal/v2.0/hdi_impl/src/codec_dyna_buffer.cpp +++ b/codec/hal/v2.0/hdi_impl/src/codec_dyna_buffer.cpp @@ -16,9 +16,8 @@ #include #include #include -#include #include - +#include namespace OHOS { namespace Codec { namespace Omx { @@ -63,7 +62,10 @@ int32_t CodecDynaBuffer::EmptyOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_ int fence = codecBuffer.fenceFd; if (fence >= 0) { - sync_wait(fence, TIME_WAIT_MS); + auto ret = SyncWait(fence, TIME_WAIT_MS); + if (ret != EOK) { + HDF_LOGW("%{public}s : SyncWait ret err", __func__); + } close(codecBuffer.fenceFd); codecBuffer.fenceFd = -1; } diff --git a/codec/hal/v2.0/hdi_impl/src/codec_handle_buffer.cpp b/codec/hal/v2.0/hdi_impl/src/codec_handle_buffer.cpp index a27a6d2eee146bc60891d659c58728e223bcf390..1e8743a84709e5d2dc505af82b33133d1ac006e0 100644 --- a/codec/hal/v2.0/hdi_impl/src/codec_handle_buffer.cpp +++ b/codec/hal/v2.0/hdi_impl/src/codec_handle_buffer.cpp @@ -16,9 +16,8 @@ #include "codec_handle_buffer.h" #include #include -#include #include - +#include namespace OHOS { namespace Codec { namespace Omx { @@ -58,7 +57,10 @@ int32_t CodecHandleBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX int fenceFd = codecBuffer.fenceFd; if (fenceFd >= 0) { - sync_wait(fenceFd, TIME_WAIT_MS); + auto ret = SyncWait(fenceFd, TIME_WAIT_MS); + if (ret != EOK) { + HDF_LOGW("%{public}s : SyncWait ret err", __func__); + } close(codecBuffer.fenceFd); codecBuffer.fenceFd = -1; } diff --git a/codec/hal/v2.0/hdi_impl/src/codec_omx_core.cpp b/codec/hal/v2.0/hdi_impl/src/codec_omx_core.cpp index b8deb3969d97bc2edc0b939160194f8a7fc98799..b61b0782aa9732bca77cad90c67d74e05e1b3552 100644 --- a/codec/hal/v2.0/hdi_impl/src/codec_omx_core.cpp +++ b/codec/hal/v2.0/hdi_impl/src/codec_omx_core.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include namespace OHOS { namespace Codec { diff --git a/codec/hal/v2.0/hdi_impl/src/component_mgr.cpp b/codec/hal/v2.0/hdi_impl/src/component_mgr.cpp index 5db39ad1f0515e9baaf87f5c14950c491ba20e2a..bda963d70c360c2376d1e60051add6353699b167 100644 --- a/codec/hal/v2.0/hdi_impl/src/component_mgr.cpp +++ b/codec/hal/v2.0/hdi_impl/src/component_mgr.cpp @@ -14,12 +14,8 @@ */ #include "component_mgr.h" -#include -#include #include #include -#include -#include #define HDF_LOG_TAG codec_hdi_server namespace OHOS { diff --git a/codec/hal/v2.0/hdi_impl/src/component_node.cpp b/codec/hal/v2.0/hdi_impl/src/component_node.cpp index 9f42c181da6676d701531ca90f90a4fa8fe6e2e8..ee9efbb7db13af0aeb3decae7bdc13bff2ec1e41 100644 --- a/codec/hal/v2.0/hdi_impl/src/component_node.cpp +++ b/codec/hal/v2.0/hdi_impl/src/component_node.cpp @@ -15,12 +15,8 @@ #include "component_node.h" #include -#include #include -#include -#include #include -#include #include #include "icodec_buffer.h" diff --git a/codec/hal/v2.0/hdi_impl/src/icodec_buffer.cpp b/codec/hal/v2.0/hdi_impl/src/icodec_buffer.cpp index 1959a02a2e1e0c5b23ccb3aec2190c867972d925..fd45f291bec70c31194f514bb7d1e95c61cefa21 100644 --- a/codec/hal/v2.0/hdi_impl/src/icodec_buffer.cpp +++ b/codec/hal/v2.0/hdi_impl/src/icodec_buffer.cpp @@ -15,6 +15,8 @@ #include "icodec_buffer.h" #include #include +#include +#include #include "codec_dyna_buffer.h" #include "codec_handle_buffer.h" #include "codec_share_buffer.h" @@ -83,6 +85,35 @@ bool ICodecBuffer::CheckInvalid(struct OmxCodecBuffer &codecBuffer) return true; } +int32_t ICodecBuffer::SyncWait(int fd, uint32_t timeout) +{ + int retCode = -EPERM; + if (fd < 0) { + HDF_LOGE("%{public}s The fence id is invalid.", __func__); + return retCode; + } + + struct pollfd pollfds = {0}; + pollfds.fd = fd; + pollfds.events = POLLIN; + + do { + retCode = poll(&pollfds, 1, timeout); + } while (retCode == -EPERM && (errno == EINTR || errno == EAGAIN)); + + if (retCode == 0) { + retCode = -EPERM; + errno = ETIME; + } else if (retCode > 0) { + if (pollfds.revents & (POLLERR | POLLNVAL)) { + retCode = -EPERM; + errno = EINVAL; + } + retCode = 0; + } + return retCode < 0 ? -errno : EOK; +} + int32_t ICodecBuffer::FillOmxBuffer(struct OmxCodecBuffer &codecBuffer, OMX_BUFFERHEADERTYPE &omxBuffer) { omxBuffer.nOffset = codecBuffer.offset;