From d98a738da7c70c89050ae537d56b27fc607f4380 Mon Sep 17 00:00:00 2001 From: guoyao Date: Sun, 14 Jan 2024 21:07:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3getoutputdescription=20eos?= =?UTF-8?q?=E5=90=8E=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: guoyao --- .../native/avcodec/avcodec_audio_codec_impl.cpp | 11 ++++++----- .../media_engine/modules/media_codec/media_codec.cpp | 4 ++-- services/services/codec/server/codec_server.cpp | 3 ++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp b/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp index dba303ce3..452aaedb4 100644 --- a/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp +++ b/frameworks/native/avcodec/avcodec_audio_codec_impl.cpp @@ -207,8 +207,8 @@ int32_t AVCodecAudioCodecImpl::QueueInputBuffer(uint32_t index) inputBufferObjMap_.erase(index); } CHECK_AND_RETURN_RET_LOG(buffer != nullptr, AVCS_ERR_INVALID_STATE, "buffer not found"); - mediaCodecProducer_->PushBuffer(buffer, true); - return AVCS_ERR_OK; + Media::Status ret = mediaCodecProducer_->PushBuffer(buffer, true); + return StatusToAVCodecServiceErrCode(ret); } int32_t AVCodecAudioCodecImpl::GetOutputFormat(Format &format) @@ -216,9 +216,10 @@ int32_t AVCodecAudioCodecImpl::GetOutputFormat(Format &format) AVCODEC_SYNC_TRACE; CHECK_AND_RETURN_RET_LOG(codecService_ != nullptr, AVCS_ERR_INVALID_STATE, "service died"); std::shared_ptr parameter = std::make_shared(); - codecService_->GetOutputFormat(parameter); + int32_t ret = codecService_->GetOutputFormat(parameter); + CHECK_AND_RETURN_RET_LOG(ret == 0, ret, "GetOutputFormat fail, ret:%{public}d", ret); format.SetMeta(parameter); - return AVCS_ERR_OK; + return ret; } int32_t AVCodecAudioCodecImpl::ReleaseOutputBuffer(uint32_t index) @@ -241,7 +242,7 @@ int32_t AVCodecAudioCodecImpl::ReleaseOutputBuffer(uint32_t index) } Media::Status ret = implConsumer_->ReleaseBuffer(buffer); - return static_cast(ret); + return StatusToAVCodecServiceErrCode(ret); } int32_t AVCodecAudioCodecImpl::SetParameter(const Format &format) diff --git a/services/media_engine/modules/media_codec/media_codec.cpp b/services/media_engine/modules/media_codec/media_codec.cpp index 7e2bf2d0a..8b6f6ee8b 100644 --- a/services/media_engine/modules/media_codec/media_codec.cpp +++ b/services/media_engine/modules/media_codec/media_codec.cpp @@ -290,8 +290,8 @@ int32_t MediaCodec::SetParameter(const std::shared_ptr ¶meter) int32_t MediaCodec::GetOutputFormat(std::shared_ptr ¶meter) { AutoLock lock(stateMutex_); - FALSE_RETURN_V(state_ == CodecState::PREPARED || state_ == CodecState::CONFIGURED || state_ == CodecState::RUNNING, - (int32_t)Status::ERROR_INVALID_STATE); + FALSE_RETURN_V_MSG_E(state_ != CodecState::UNINITIALIZED, (int32_t)Status::ERROR_INVALID_STATE, + "status incorrect,get output format failed."); FALSE_RETURN_V(codecPlugin_ != nullptr, (int32_t)Status::ERROR_INVALID_STATE); FALSE_RETURN_V(parameter != nullptr, (int32_t)Status::ERROR_INVALID_PARAMETER); auto ret = codecPlugin_->GetParameter(parameter); diff --git a/services/services/codec/server/codec_server.cpp b/services/services/codec/server/codec_server.cpp index 5245fc4cd..1642d1394 100644 --- a/services/services/codec/server/codec_server.cpp +++ b/services/services/codec/server/codec_server.cpp @@ -775,8 +775,9 @@ int32_t CodecServer::SetParameter(const std::shared_ptr ¶meter) int32_t CodecServer::GetOutputFormat(std::shared_ptr ¶meter) { std::lock_guard lock(mutex_); + CHECK_AND_RETURN_RET_LOG(status_ != UNINITIALIZED, AVCS_ERR_INVALID_STATE, "In invalid state, %{public}s", + GetStatusDescription(status_).data()); CHECK_AND_RETURN_RET_LOG(codecBase_ != nullptr, AVCS_ERR_NO_MEMORY, "codecBase is nullptr"); - CHECK_AND_RETURN_RET_LOG(parameter != nullptr, AVCS_ERR_NO_MEMORY, "parameter is nullptr"); return codecBase_->GetOutputFormat(parameter); }