From: Priya Kohli Date: Fri, 21 Aug 2020 08:56:16 +0000 (+0530) Subject: [ITC][recorder][ACR-1589][Added new APIs to decide video frame encoding] X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2d4f3f79e87d2abefdaceaea97d4fe1e65327f46;p=test%2Ftct%2Fnative%2Fapi.git [ITC][recorder][ACR-1589][Added new APIs to decide video frame encoding] Change-Id: Id7d863b8f7b55952cf75f2fa464541c5286a12e2 Signed-off-by: Priya Kohli --- diff --git a/src/itc/recorder/ITs-recorder.c b/src/itc/recorder/ITs-recorder.c index 959309089..3398eb00a 100755 --- a/src/itc/recorder/ITs-recorder.c +++ b/src/itc/recorder/ITs-recorder.c @@ -34,6 +34,7 @@ bool g_bRecorderStateChangedCallback; bool g_bRecorderSupportedVideoEncoderCallback; bool g_bRecorderSupportedVideoResolutionCallback; bool g_bStateChange; +bool g_bVideoEncodeDecisionCallback; /** * @function ITs_recorder_startup @@ -324,6 +325,23 @@ static bool RecorderSupportedVideoResolutionCallback(int width, int height, void return false; } +/** +* @function VideoEncodeDecisionCallback +* @description Called when each video frame is delivered before encoding +* @parameter recorder_video_data_s *frame, void *user_data +* @return NA +*/ +static bool VideoEncodeDecisionCallback(recorder_video_data_s *frame, void *user_data) +{ +#if DEBUG + FPRINTF("[Line : %d][%s] VideoEncodeDecisionCallback callback is called\\n", __LINE__, API_NAMESPACE); +#endif + + g_bVideoEncodeDecisionCallback = true; + + return true; +} + /** @addtogroup itc-recorder-testcases * @brief Integration testcases for module recorder * @ingroup itc-recorder @@ -2252,5 +2270,93 @@ int ITc_recorder_set_unset_muxed_stream_cb_p(void) return 0; } +//& purpose: Registers and unregisters a callback function to be called when each video frame is delivered before encoding. +//& type: auto +/** +* @testcase ITc_recorder_set_unset_video_encode_decision_cb_p +* @since_tizen 6.0 +* @author SRID(priya.kohli) +* @reviewer SRID(shobhit.v) +* @type auto +* @scenario This test is for checking parameters valid or not. \n +* 1. Check microphone supported or not. \n +* 2. Set video encode decision callback. +* 3. Unset video encode decision callback. +* @description To check set and unset video encode decision callback with valid pointer and parameters. +* @apicovered recorder_set_video_encode_decision_cb, recorder_unset_video_encode_decision_cb +* @passcase If recorder_set_video_encode_decision_cb and recorder_unset_video_encode_decision_cb passes +* @failcase If recorder_set_video_encode_decision_cb, recorder_unset_video_encode_decision_cb fails +* @precondition The recorder state should be RECORDER_STATE_READY or RECORDER_STATE_CREATED +* @postcondition NA +*/ +int ITc_recorder_set_unset_video_encode_decision_cb_p(void) +{ + START_TEST; + recorder_state_e state; + + if ( CreateVideoRecorder() == false ) + { + return 1; + } + if ( g_bMismatch ) + { + FPRINTF("[Line : %d][%s] system_info_get_platform_bool and recorder_create_videorecorder returned different feature for Recorder so leaving test\\n", __LINE__, API_NAMESPACE); + return 1; + } + if ( g_bCamFeatureNotSupported || g_bVideoRecFeatureNotSupported ) + { + FPRINTF("[Line : %d][%s][Not supported] system_info_get_platform_bool and recorder_create_videorecorder returned Unsupported feature capability for Recorder\\n", __LINE__, API_NAMESPACE); + return 0; + } + + if ( g_bAudioRecFeatureNotSupported ) + { + FPRINTF("[Line : %d][%s][Not supported] system_info_get_platform_bool and recorder_create_audiorecorder returned Unsupported feature capability for Recorder\\n", __LINE__, API_NAMESPACE); + return 0; + } + + if ( ReadyRecorderHandler() != true ) + { + FPRINTF( "[Line : %d][%s] Initialize condition failed\\n", __LINE__, API_NAMESPACE); + DestroyRecorderHandler(); + return 1; + } + + g_bVideoEncodeDecisionCallback = false; + + int nRet = recorder_set_video_encode_decision_cb(g_pstRecorder, VideoEncodeDecisionCallback, NULL); + PRINT_RESULT_CLEANUP(RECORDER_ERROR_NONE, nRet, "recorder_set_video_encode_decision_cb", RecorderGetError(nRet), recorder_cancel(g_pstRecorder); recorder_unprepare(g_pstRecorder); DestroyRecorderHandler()); + + nRet = recorder_start(g_pstRecorder); + PRINT_RESULT_CLEANUP(RECORDER_ERROR_NONE, nRet, "recorder_start", RecorderGetError(nRet), recorder_cancel(g_pstRecorder); recorder_unprepare(g_pstRecorder); DestroyRecorderHandler()); + + RecorderWaitForAsync(); + + if ( !g_bVideoEncodeDecisionCallback ) + { + FPRINTF("[Line : %d][%s] recorder_set_video_encode_decision_cb failed, error returned = callback not invoked\\n", __LINE__, API_NAMESPACE); + recorder_cancel(g_pstRecorder); + recorder_unprepare(g_pstRecorder); + DestroyRecorderHandler(); + return 1; + } + + nRet = recorder_cancel(g_pstRecorder); + PRINT_RESULT_CLEANUP(RECORDER_ERROR_NONE, nRet, "recorder_cancel", RecorderGetError(nRet), recorder_unprepare(g_pstRecorder); DestroyRecorderHandler()); + + nRet = recorder_unprepare(g_pstRecorder); + PRINT_RESULT_CLEANUP(RECORDER_ERROR_NONE, nRet, "recorder_unprepare", RecorderGetError(nRet), DestroyRecorderHandler()); + + nRet = recorder_unset_video_encode_decision_cb(g_pstRecorder); + PRINT_RESULT_CLEANUP(RECORDER_ERROR_NONE, nRet, "recorder_unset_video_encode_decision_cb", RecorderGetError(nRet), DestroyRecorderHandler()); + + if ( DestroyRecorderHandler() == false ) + { + FPRINTF("[Line : %d][%s]DestroyRecorderHandler returns false\\n", __LINE__, API_NAMESPACE); + } + + return 0; +} + /** @} */ /** @} */ diff --git a/src/itc/recorder/tct-recorder-native_mobile.h b/src/itc/recorder/tct-recorder-native_mobile.h index 8806d59da..514198b03 100755 --- a/src/itc/recorder/tct-recorder-native_mobile.h +++ b/src/itc/recorder/tct-recorder-native_mobile.h @@ -51,6 +51,7 @@ extern int ITc_recorder_set_sound_stream_info_p(void); extern int ITc_recorder_get_device_state_p(void); extern int ITc_recorder_add_remove_device_state_changed_cb_p(void); extern int ITc_recorder_set_unset_muxed_stream_cb_p(void); +extern int ITc_recorder_set_unset_video_encode_decision_cb_p(void); extern int ITc_recorder_attr_set_get_audio_channel_p(void); extern int ITc_recorder_attr_set_get_audio_device_p(void); extern int ITc_recorder_attr_set_get_audio_encoder_bitrate_p(void); @@ -90,6 +91,7 @@ testcase tc_array[] = { {"ITc_recorder_get_device_state_p",ITc_recorder_get_device_state_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_add_remove_device_state_changed_cb_p",ITc_recorder_add_remove_device_state_changed_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_set_unset_muxed_stream_cb_p",ITc_recorder_set_unset_muxed_stream_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, + {"ITc_recorder_set_unset_video_encode_decision_cb_p",ITc_recorder_set_unset_video_encode_decision_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_attr_set_get_audio_channel_p",ITc_recorder_attr_set_get_audio_channel_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, {"ITc_recorder_attr_set_get_audio_device_p",ITc_recorder_attr_set_get_audio_device_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, {"ITc_recorder_attr_set_get_audio_encoder_bitrate_p",ITc_recorder_attr_set_get_audio_encoder_bitrate_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, diff --git a/src/itc/recorder/tct-recorder-native_tizeniot.h b/src/itc/recorder/tct-recorder-native_tizeniot.h index 8806d59da..514198b03 100755 --- a/src/itc/recorder/tct-recorder-native_tizeniot.h +++ b/src/itc/recorder/tct-recorder-native_tizeniot.h @@ -51,6 +51,7 @@ extern int ITc_recorder_set_sound_stream_info_p(void); extern int ITc_recorder_get_device_state_p(void); extern int ITc_recorder_add_remove_device_state_changed_cb_p(void); extern int ITc_recorder_set_unset_muxed_stream_cb_p(void); +extern int ITc_recorder_set_unset_video_encode_decision_cb_p(void); extern int ITc_recorder_attr_set_get_audio_channel_p(void); extern int ITc_recorder_attr_set_get_audio_device_p(void); extern int ITc_recorder_attr_set_get_audio_encoder_bitrate_p(void); @@ -90,6 +91,7 @@ testcase tc_array[] = { {"ITc_recorder_get_device_state_p",ITc_recorder_get_device_state_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_add_remove_device_state_changed_cb_p",ITc_recorder_add_remove_device_state_changed_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_set_unset_muxed_stream_cb_p",ITc_recorder_set_unset_muxed_stream_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, + {"ITc_recorder_set_unset_video_encode_decision_cb_p",ITc_recorder_set_unset_video_encode_decision_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_attr_set_get_audio_channel_p",ITc_recorder_attr_set_get_audio_channel_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, {"ITc_recorder_attr_set_get_audio_device_p",ITc_recorder_attr_set_get_audio_device_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, {"ITc_recorder_attr_set_get_audio_encoder_bitrate_p",ITc_recorder_attr_set_get_audio_encoder_bitrate_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, diff --git a/src/itc/recorder/tct-recorder-native_wearable.h b/src/itc/recorder/tct-recorder-native_wearable.h index 8806d59da..514198b03 100755 --- a/src/itc/recorder/tct-recorder-native_wearable.h +++ b/src/itc/recorder/tct-recorder-native_wearable.h @@ -51,6 +51,7 @@ extern int ITc_recorder_set_sound_stream_info_p(void); extern int ITc_recorder_get_device_state_p(void); extern int ITc_recorder_add_remove_device_state_changed_cb_p(void); extern int ITc_recorder_set_unset_muxed_stream_cb_p(void); +extern int ITc_recorder_set_unset_video_encode_decision_cb_p(void); extern int ITc_recorder_attr_set_get_audio_channel_p(void); extern int ITc_recorder_attr_set_get_audio_device_p(void); extern int ITc_recorder_attr_set_get_audio_encoder_bitrate_p(void); @@ -90,6 +91,7 @@ testcase tc_array[] = { {"ITc_recorder_get_device_state_p",ITc_recorder_get_device_state_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_add_remove_device_state_changed_cb_p",ITc_recorder_add_remove_device_state_changed_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_set_unset_muxed_stream_cb_p",ITc_recorder_set_unset_muxed_stream_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, + {"ITc_recorder_set_unset_video_encode_decision_cb_p",ITc_recorder_set_unset_video_encode_decision_cb_p,ITs_recorder_startup,ITs_recorder_cleanup}, {"ITc_recorder_attr_set_get_audio_channel_p",ITc_recorder_attr_set_get_audio_channel_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, {"ITc_recorder_attr_set_get_audio_device_p",ITc_recorder_attr_set_get_audio_device_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup}, {"ITc_recorder_attr_set_get_audio_encoder_bitrate_p",ITc_recorder_attr_set_get_audio_encoder_bitrate_p,ITs_recorder_attr_startup,ITs_recorder_attr_cleanup},