From f8f67c8b780d908b6a62f0ed874c7fde2abc114b Mon Sep 17 00:00:00 2001 From: Shilpa Jindal Date: Fri, 10 Jun 2016 12:33:30 +0530 Subject: [PATCH] [ITC][mediacodec][ACR-567][Added testcase for new API] Change-Id: I904ffb9562db7ae4947aac7e849f8f4aec44b527 Signed-off-by: Shilpa Jindal --- src/itc/mediacodec/ITs-mediacodec-common.h | 9 +++ src/itc/mediacodec/ITs-mediacodec.c | 68 ++++++++++++++++++++++ src/itc/mediacodec/tct-mediacodec-native_mobile.h | 3 + .../mediacodec/tct-mediacodec-native_wearable.h | 4 +- 4 files changed, 83 insertions(+), 1 deletion(-) diff --git a/src/itc/mediacodec/ITs-mediacodec-common.h b/src/itc/mediacodec/ITs-mediacodec-common.h index d97f79e..e2dffe9 100755 --- a/src/itc/mediacodec/ITs-mediacodec-common.h +++ b/src/itc/mediacodec/ITs-mediacodec-common.h @@ -61,6 +61,15 @@ static GMainLoop *g_pMainLoop; }\ } +#define CHECK_HANDLE_CLEANUP(Handle, API, FreeResource) {\ + if ( Handle == NULL )\ + {\ + FPRINTF("[Line : %d][%s] %s failed, error returned = Handle returned is NULL\\n", __LINE__, API_NAMESPACE, API);\ + FreeResource;\ + return 1;\ + }\ +} + char* MediaCodecGetError(int nRet); unsigned int GetDataFromFile(void *DataPointer); gboolean MediaCodecTimeoutFunction(gpointer data); diff --git a/src/itc/mediacodec/ITs-mediacodec.c b/src/itc/mediacodec/ITs-mediacodec.c index 58f2876..9dbbe07 100755 --- a/src/itc/mediacodec/ITs-mediacodec.c +++ b/src/itc/mediacodec/ITs-mediacodec.c @@ -1241,5 +1241,73 @@ int ITc_mediacodec_set_unset_buffer_status_cb_p(void) return 0; } +//& purpose: Gets the media packet pool allocated for recycling media packets. +//& type: auto +/** +* @testcase ITc_mediacodec_get_packet_pool_p +* @since_tizen 3.0 +* @author SRID(shilpa.j) +* @reviewer SRID(gaurav.m2) +* @type auto +* @description Gets the media packet pool allocated for recycling media packets. +* @scenario Gets the media packet pool allocated for recycling media packets +* @apicovered mediacodec_set_codec, mediacodec_set_aenc_info, mediacodec_prepare, mediacodec_unprepare, mediacodec_get_packet_pool +* @passcase If mediacodec_get_packet_pool is successful +* @failcase If mediacodec_get_packet_pool fails +* @precondition NA +* @postcondition NA +*/ +int ITc_mediacodec_get_packet_pool_p(void) +{ + START_TEST; + + mediacodec_codec_type_e codec = MEDIACODEC_AAC; + mediacodec_support_type_e flags; + bool bEncoder = true; // checking encoder type + int nType = 0; + media_packet_pool_h hpacket_pool; + int nsamplerate =48000; + int nchannel =2; + int nbit =16; + int nbitrate = 128000; + + int nRet = mediacodec_get_supported_type(g_mediacodec, codec, bEncoder, &nType); + PRINT_RESULT(MEDIACODEC_ERROR_NONE, nRet, "mediacodec_get_supported_type", MediaCodecGetError(nRet)); + + if ( nType != MEDIACODEC_SUPPORT_TYPE_SW ) + { + FPRINTF("[Line : %d][%s] Audio encoder MEDIACODEC_AAC is not supported. Skipping test\\n", __LINE__, API_NAMESPACE); + return 0; + } + + //Setting flag after validation + flags = MEDIACODEC_ENCODER | MEDIACODEC_SUPPORT_TYPE_SW; + + nRet = mediacodec_set_codec(g_mediacodec, codec, flags); + PRINT_RESULT(MEDIACODEC_ERROR_NONE, nRet, "mediacodec_set_codec", MediaCodecGetError(nRet)); + + nRet = mediacodec_set_aenc_info(g_mediacodec, nsamplerate, nchannel, nbit, nbitrate); + PRINT_RESULT(MEDIACODEC_ERROR_NONE, nRet, "mediacodec_set_aenc_info", MediaCodecGetError(nRet)); + + nRet = mediacodec_prepare(g_mediacodec); + PRINT_RESULT(MEDIACODEC_ERROR_NONE, nRet, "mediacodec_prepare", MediaCodecGetError(nRet)); + + + //Target API + nRet = mediacodec_get_packet_pool(g_mediacodec, &hpacket_pool); + PRINT_RESULT_CLEANUP(MEDIACODEC_ERROR_NONE, nRet, "mediacodec_get_packet_pool", MediaCodecGetError(nRet), mediacodec_unprepare(g_mediacodec)); + CHECK_HANDLE_CLEANUP(hpacket_pool, "mediacodec_get_packet_pool", mediacodec_unprepare(g_mediacodec)); + + nRet = media_packet_pool_deallocate(hpacket_pool); + PRINT_RESULT_NORETURN(MEDIACODEC_ERROR_NONE, nRet, "media_packet_pool_deallocate", MediaCodecGetError(nRet)); + + nRet = media_packet_pool_destroy(hpacket_pool); + PRINT_RESULT_NORETURN(MEDIACODEC_ERROR_NONE, nRet, "media_packet_pool_destroy", MediaCodecGetError(nRet)); + + nRet = mediacodec_unprepare(g_mediacodec); + PRINT_RESULT_NORETURN(MEDIACODEC_ERROR_NONE, nRet, "mediacodec_unprepare", MediaCodecGetError(nRet)); + + return 0; +} /** @} */ //end of itc-mediacodec /** @} */ //end of itc-mediacodec-testcases diff --git a/src/itc/mediacodec/tct-mediacodec-native_mobile.h b/src/itc/mediacodec/tct-mediacodec-native_mobile.h index 1d7502c..cf9d436 100755 --- a/src/itc/mediacodec/tct-mediacodec-native_mobile.h +++ b/src/itc/mediacodec/tct-mediacodec-native_mobile.h @@ -39,10 +39,12 @@ extern int ITc_mediacodec_flush_buffers_p(void); extern int ITc_mediacodec_foreach_supported_codec_p(void); extern int ITc_mediacodec_get_supported_type_p(void); extern int ITc_mediacodec_set_unset_buffer_status_cb_p(void); +extern int ITc_mediacodec_get_packet_pool_p(void); testcase tc_array[] = { {"ITc_mediacodec_create_destroy_p", ITc_mediacodec_create_destroy_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_prepare_unprepare_p", ITc_mediacodec_prepare_unprepare_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, + {"ITc_mediacodec_get_packet_pool_p", ITc_mediacodec_get_packet_pool_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_venc_info_p", ITc_mediacodec_set_venc_info_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_adec_info_p", ITc_mediacodec_set_adec_info_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_aenc_info_p", ITc_mediacodec_set_aenc_info_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, @@ -58,6 +60,7 @@ testcase tc_array[] = { {"ITc_mediacodec_foreach_supported_codec_p", ITc_mediacodec_foreach_supported_codec_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_get_supported_type_p", ITc_mediacodec_get_supported_type_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_unset_buffer_status_cb_p", ITc_mediacodec_set_unset_buffer_status_cb_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, + {NULL, NULL} }; diff --git a/src/itc/mediacodec/tct-mediacodec-native_wearable.h b/src/itc/mediacodec/tct-mediacodec-native_wearable.h index 1d7502c..b32ee7a 100755 --- a/src/itc/mediacodec/tct-mediacodec-native_wearable.h +++ b/src/itc/mediacodec/tct-mediacodec-native_wearable.h @@ -39,10 +39,12 @@ extern int ITc_mediacodec_flush_buffers_p(void); extern int ITc_mediacodec_foreach_supported_codec_p(void); extern int ITc_mediacodec_get_supported_type_p(void); extern int ITc_mediacodec_set_unset_buffer_status_cb_p(void); +extern int ITc_mediacodec_get_packet_pool_p(void); testcase tc_array[] = { {"ITc_mediacodec_create_destroy_p", ITc_mediacodec_create_destroy_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_prepare_unprepare_p", ITc_mediacodec_prepare_unprepare_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, + {"ITc_mediacodec_get_packet_pool_p", ITc_mediacodec_get_packet_pool_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_venc_info_p", ITc_mediacodec_set_venc_info_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_adec_info_p", ITc_mediacodec_set_adec_info_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_aenc_info_p", ITc_mediacodec_set_aenc_info_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, @@ -58,7 +60,7 @@ testcase tc_array[] = { {"ITc_mediacodec_foreach_supported_codec_p", ITc_mediacodec_foreach_supported_codec_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_get_supported_type_p", ITc_mediacodec_get_supported_type_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, {"ITc_mediacodec_set_unset_buffer_status_cb_p", ITc_mediacodec_set_unset_buffer_status_cb_p, ITs_media_codec_startup, ITs_media_codec_cleanup}, - {NULL, NULL} + {NULL, NULL} }; #endif // __TCT_MEDIACODEC_NATIVE_H__ -- 2.7.4