From: Seungbae Shin Date: Tue, 18 Mar 2025 11:08:54 +0000 (+0900) Subject: Add missing get_state ipc implementation X-Git-Tag: accepted/tizen/unified/20250327.154211~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F94%2F321294%2F2;p=platform%2Fhal%2Fapi%2Fcodec.git Add missing get_state ipc implementation [Version] 1.1.1 [Issue Type] Update Change-Id: Ic617dbc72a0f84a87a8438b1f2c934a9eabb34d0 --- diff --git a/packaging/hal-api-codec.spec b/packaging/hal-api-codec.spec index 67e820a..12bc093 100644 --- a/packaging/hal-api-codec.spec +++ b/packaging/hal-api-codec.spec @@ -6,7 +6,7 @@ ### main package ######### Name: %{name} Summary: %{name} interface -Version: 1.1.0 +Version: 1.1.1 Release: 0 Group: Development/Libraries License: Apache-2.0 diff --git a/src/service_plugin/hal-backend-service-codec.c b/src/service_plugin/hal-backend-service-codec.c index fef0208..5a65e88 100644 --- a/src/service_plugin/hal-backend-service-codec.c +++ b/src/service_plugin/hal-backend-service-codec.c @@ -450,6 +450,27 @@ static int _hal_codec_service_backend_release_output_buffer(rpc_port_stub_codec_ } +static int _hal_codec_service_backend_get_state(rpc_port_stub_codec_context_h context, int *state, void *user_data) +{ + int ret = HAL_CODEC_ERROR_NONE; + hal_codec_service_s *service_handle = __hal_codec_service_get_handle(context); + hal_codec_state_e state_; + + HAL_CODEC_RETURN_VAL_IF_FAILED(service_handle, HAL_CODEC_ERROR_INTERNAL); + + ret = hal_codec_passthrough_get_state(service_handle->codec_handle, &state_); + + if (ret != HAL_CODEC_ERROR_NONE) { + HAL_CODEC_SERVICE_LOGE("get_state failed[0x%x]", ret); + return ret; + } + + *state = (int)state_; + + return HAL_CODEC_ERROR_NONE; +} + + static int hal_codec_service_init(void *data) { int rpc_ret = 0; @@ -465,7 +486,8 @@ static int hal_codec_service_init(void *data) .stop = _hal_codec_service_backend_stop, .flush = _hal_codec_service_backend_flush, .decode = _hal_codec_service_backend_decode, - .release_output_buffer = _hal_codec_service_backend_release_output_buffer + .release_output_buffer = _hal_codec_service_backend_release_output_buffer, + .get_state = _hal_codec_service_backend_get_state }; rpc_ret = rpc_port_stub_codec_register(&callbacks, NULL); diff --git a/tests/codec_hal_test.cpp b/tests/codec_hal_test.cpp index 76c6b3c..7b98dfc 100644 --- a/tests/codec_hal_test.cpp +++ b/tests/codec_hal_test.cpp @@ -202,6 +202,17 @@ class CodecHalTest : public testing::Test return G_SOURCE_CONTINUE; } + bool CheckCurrentState(hal_codec_state_e state) + { + hal_codec_state_e state_; + if (hal_codec_get_state(gHalHandle, &state_) != HAL_CODEC_ERROR_NONE) { + cout << "get_state failed " << ret << endl; + return false; + } + + return (state_ == state); + } + GMappedFile *mappedFile_ {}; gsize mappedFileLength_ {}; gchar *mappedFileContents_ {}; @@ -342,12 +353,15 @@ TEST_F(CodecHalTest, DecodeP) ASSERT_NE(gHalHandle, nullptr); ASSERT_EQ(ret, HAL_CODEC_ERROR_NONE); + ASSERT_TRUE(CheckCurrentState(HAL_CODEC_STATE_INITIALIZED)); ret = hal_codec_configure(gHalHandle, 1920, 1080, HAL_CODEC_FORMAT_H264, HAL_CODEC_FORMAT_NV12, false); ASSERT_EQ(ret, HAL_CODEC_ERROR_NONE); + ASSERT_TRUE(CheckCurrentState(HAL_CODEC_STATE_CONFIGURED)); ret = hal_codec_start(gHalHandle, CodecHalTest::MessageCb, &decodedCount_); ASSERT_EQ(ret, HAL_CODEC_ERROR_NONE); + ASSERT_TRUE(CheckCurrentState(HAL_CODEC_STATE_STARTED)); ret = GetContents(CONTENTS_H264_PATH); ASSERT_EQ(ret, 0); @@ -378,9 +392,11 @@ TEST_F(CodecHalTest, DecodeP) ret = hal_codec_stop(gHalHandle); ASSERT_EQ(ret, HAL_CODEC_ERROR_NONE); + ASSERT_TRUE(CheckCurrentState(HAL_CODEC_STATE_CONFIGURED)); ret = hal_codec_release(gHalHandle); ASSERT_EQ(ret, HAL_CODEC_ERROR_NONE); + ASSERT_TRUE(CheckCurrentState(HAL_CODEC_STATE_INITIALIZED)); }