Add missing get_state ipc implementation 94/321294/2
authorSeungbae Shin <seungbae.shin@samsung.com>
Tue, 18 Mar 2025 11:08:54 +0000 (20:08 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Thu, 20 Mar 2025 05:29:50 +0000 (05:29 +0000)
[Version] 1.1.1
[Issue Type] Update

Change-Id: Ic617dbc72a0f84a87a8438b1f2c934a9eabb34d0

packaging/hal-api-codec.spec
src/service_plugin/hal-backend-service-codec.c
tests/codec_hal_test.cpp

index 67e820a291b8cdb948f3b8596f4745dedd8fe021..12bc0934d21e7a2109f373e7698d1809bf675d91 100644 (file)
@@ -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
index fef0208ce349d55901d2daca57681c489dafaa52..5a65e88d304413659a6fcaf20c883da1e1dd7165 100644 (file)
@@ -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);
index 76c6b3cf02fa29c20f537133a07c8fb706c8a333..7b98dfc0b8ee4f06c7485e22ae2674b3e238854c 100644 (file)
@@ -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));
 }