}
+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;
.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);
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_ {};
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);
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));
}