未验证 提交 e9bcfb6d 编写于 作者: O openharmony_ci 提交者: Gitee

!6118 提升编解码ndk接口覆盖率用例补齐

Merge pull request !6118 from ling990/monthly_20221018
...@@ -14,12 +14,14 @@ ...@@ -14,12 +14,14 @@
import("//test/xts/tools/build/suite.gni") import("//test/xts/tools/build/suite.gni")
module_output_path = "acts/ActsAvcodecNdkTest" module_output_path = "acts/ActsAvcodecNdkTest"
MEDIA_ROOT_DIR = "//foundation/multimedia/player_framework/"
ohos_moduletest_suite("ActsAvcodecNdkTest") { ohos_moduletest_suite("ActsAvcodecNdkTest") {
module_out_path = module_output_path module_out_path = module_output_path
sources = [ sources = [
"audioDecEncNdk/src/ADecEncNdkSample.cpp", "audioDecEncNdk/src/ADecEncNdkSample.cpp",
"audioDecEncNdk/src/ActsAudioDecEncNdkTest.cpp", "audioDecEncNdk/src/ActsAudioDecEncNdkTest.cpp",
"codecFormatNdk/ActsCodecFormatNdkTest.cpp",
"videoDecEncNdk/src/ActsVideoDecEncNdkTest.cpp", "videoDecEncNdk/src/ActsVideoDecEncNdkTest.cpp",
"videoDecEncNdk/src/VDecEncNdkSample.cpp", "videoDecEncNdk/src/VDecEncNdkSample.cpp",
] ]
...@@ -28,13 +30,17 @@ ohos_moduletest_suite("ActsAvcodecNdkTest") { ...@@ -28,13 +30,17 @@ ohos_moduletest_suite("ActsAvcodecNdkTest") {
"audioDecEncNdk/include", "audioDecEncNdk/include",
"videoDecEncNdk/include", "videoDecEncNdk/include",
"//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiocommon/include", "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiocommon/include",
"//foundation/multimedia/player_framework/interfaces/inner_api/native", "//foundation/graphic/graphic_2d/frameworks/surface/include",
"//foundation/multimedia/player_framework/interfaces/kits/c", "//foundation/graphic/graphic_2d/interfaces/inner_api/surface",
"//foundation/multimedia/player_framework/frameworks/native/capi/common", "//foundation/graphic/graphic_2d/interfaces/inner_api/common",
"//commonlibrary/c_utils/base/include", "//foundation//window/window_manager/interfaces/innerkits/wm",
"//graphic/graphic_2d/interfaces/kits/surface", "//graphic/graphic_2d/interfaces/kits/surface",
"//graphic/graphic_2d/interfaces/inner_api/surface", "//graphic/graphic_2d/interfaces/inner_api/surface",
"//foundation/graphic/graphic_2d/frameworks/surface/include", "$MEDIA_ROOT_DIR/interfaces/inner_api/native",
"$MEDIA_ROOT_DIR/interfaces/kits/c",
"$MEDIA_ROOT_DIR/frameworks/native/capi/common",
"$MEDIA_ROOT_DIR/interfaces/kits/c",
"$MEDIA_ROOT_DIR/interfaces/inner_api/native",
] ]
cflags = [ cflags = [
...@@ -56,14 +62,17 @@ ohos_moduletest_suite("ActsAvcodecNdkTest") { ...@@ -56,14 +62,17 @@ ohos_moduletest_suite("ActsAvcodecNdkTest") {
] ]
deps = [ deps = [
"$MEDIA_ROOT_DIR/interfaces/inner_api/native:media_client",
"$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_adec",
"$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_aenc",
"$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_codecbase",
"$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_core",
"$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_vdec",
"$MEDIA_ROOT_DIR/interfaces/kits/c:native_media_venc",
"//foundation/graphic/graphic_2d:libsurface", "//foundation/graphic/graphic_2d:libsurface",
"//foundation/graphic/graphic_2d/frameworks/surface:surface", "//foundation/graphic/graphic_2d/frameworks/surface:surface",
"//foundation/multimedia/player_framework/interfaces/kits/c:native_media_adec", "//foundation/graphic/graphic_2d/rosen/modules/render_service_client:librender_service_client",
"//foundation/multimedia/player_framework/interfaces/kits/c:native_media_aenc", "//foundation/window/window_manager/wm:libwm",
"//foundation/multimedia/player_framework/interfaces/kits/c:native_media_codecbase",
"//foundation/multimedia/player_framework/interfaces/kits/c:native_media_core",
"//foundation/multimedia/player_framework/interfaces/kits/c:native_media_vdec",
"//foundation/multimedia/player_framework/interfaces/kits/c:native_media_venc",
] ]
external_deps = [ external_deps = [
"c_utils:utils", "c_utils:utils",
......
...@@ -64,8 +64,10 @@ public: ...@@ -64,8 +64,10 @@ public:
ADecEncNdkSample() = default; ADecEncNdkSample() = default;
~ADecEncNdkSample(); ~ADecEncNdkSample();
struct OH_AVCodec* CreateAudioDecoder(std::string mimetype); struct OH_AVCodec* CreateAudioDecoderByMime(std::string mimetype);
struct OH_AVCodec* CreateAudioDecoderByName(std::string name);
int32_t ConfigureDec(struct OH_AVFormat *format); int32_t ConfigureDec(struct OH_AVFormat *format);
int32_t SetParameterDec(struct OH_AVFormat *format);
int32_t PrepareDec(); int32_t PrepareDec();
int32_t StartDec(); int32_t StartDec();
int32_t StopDec(); int32_t StopDec();
...@@ -73,8 +75,10 @@ public: ...@@ -73,8 +75,10 @@ public:
int32_t ResetDec(); int32_t ResetDec();
int32_t ReleaseDec(); int32_t ReleaseDec();
struct OH_AVCodec* CreateAudioEncoder(std::string mimetype); struct OH_AVCodec* CreateAudioEncoderByMime(std::string mimetype);
struct OH_AVCodec* CreateAudioEncoderByName(std::string name);
int32_t ConfigureEnc(struct OH_AVFormat *format); int32_t ConfigureEnc(struct OH_AVFormat *format);
int32_t SetParameterEnc(struct OH_AVFormat *format);
int32_t PrepareEnc(); int32_t PrepareEnc();
int32_t StartEnc(); int32_t StartEnc();
int32_t StopEnc(); int32_t StopEnc();
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
#include "ADecEncNdkSample.h" #include "ADecEncNdkSample.h"
#include "native_avmemory.h" #include "native_avmemory.h"
#include "native_averrors.h" #include "native_averrors.h"
#include "native_avcodec_base.h"
using namespace OHOS; using namespace OHOS;
using namespace OHOS::Media; using namespace OHOS::Media;
using namespace std; using namespace std;
...@@ -124,9 +126,13 @@ ADecEncNdkSample::~ADecEncNdkSample() ...@@ -124,9 +126,13 @@ ADecEncNdkSample::~ADecEncNdkSample()
acodecSignal_ = nullptr; acodecSignal_ = nullptr;
} }
struct OH_AVCodec* ADecEncNdkSample::CreateAudioDecoder(std::string mimetype) struct OH_AVCodec* ADecEncNdkSample::CreateAudioDecoderByMime(std::string mimetype)
{ {
adec_ = OH_AudioDecoder_CreateByMime(mimetype.c_str()); if (mimetype == "audio/mp4a-latm") {
adec_ = OH_AudioDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
} else {
adec_ = OH_AudioDecoder_CreateByMime(mimetype.c_str());
}
NDK_CHECK_AND_RETURN_RET_LOG(adec_ != nullptr, nullptr, "Fatal: OH_AudioDecoder_CreateByMime"); NDK_CHECK_AND_RETURN_RET_LOG(adec_ != nullptr, nullptr, "Fatal: OH_AudioDecoder_CreateByMime");
acodecSignal_ = new ADecEncSignal(); acodecSignal_ = new ADecEncSignal();
...@@ -141,11 +147,33 @@ struct OH_AVCodec* ADecEncNdkSample::CreateAudioDecoder(std::string mimetype) ...@@ -141,11 +147,33 @@ struct OH_AVCodec* ADecEncNdkSample::CreateAudioDecoder(std::string mimetype)
return adec_; return adec_;
} }
struct OH_AVCodec* ADecEncNdkSample::CreateAudioDecoderByName(std::string name)
{
adec_ = OH_AudioDecoder_CreateByName(name.c_str());
NDK_CHECK_AND_RETURN_RET_LOG(adec_ != nullptr, nullptr, "Fatal: OH_AudioDecoder_CreateByName");
acodecSignal_ = new ADecEncSignal();
NDK_CHECK_AND_RETURN_RET_LOG(acodecSignal_ != nullptr, nullptr, "Fatal: No Memory");
cbDec_.onError = AdecAsyncError;
cbDec_.onStreamChanged = AdecAsyncStreamChanged;
cbDec_.onNeedInputData = AdecAsyncNeedInputData;
cbDec_.onNeedOutputData = AdecAsyncNewOutputData;
int32_t ret = OH_AudioDecoder_SetCallback(adec_, cbDec_, static_cast<void *>(acodecSignal_));
NDK_CHECK_AND_RETURN_RET_LOG(ret == AV_ERR_OK, NULL, "Fatal: OH_AudioDecoder_SetCallback");
return adec_;
}
int32_t ADecEncNdkSample::ConfigureDec(struct OH_AVFormat *format) int32_t ADecEncNdkSample::ConfigureDec(struct OH_AVFormat *format)
{ {
return OH_AudioDecoder_Configure(adec_, format); return OH_AudioDecoder_Configure(adec_, format);
} }
int32_t ADecEncNdkSample::SetParameterDec(struct OH_AVFormat *format)
{
return OH_AudioDecoder_SetParameter(adec_, format);
}
int32_t ADecEncNdkSample::PrepareDec() int32_t ADecEncNdkSample::PrepareDec()
{ {
return OH_AudioDecoder_Prepare(adec_); return OH_AudioDecoder_Prepare(adec_);
...@@ -385,9 +413,13 @@ void ADecEncNdkSample::InputFuncDec() ...@@ -385,9 +413,13 @@ void ADecEncNdkSample::InputFuncDec()
} }
} }
struct OH_AVCodec* ADecEncNdkSample::CreateAudioEncoder(std::string mimetype) struct OH_AVCodec* ADecEncNdkSample::CreateAudioEncoderByMime(std::string mimetype)
{ {
aenc_ = OH_AudioEncoder_CreateByMime(mimetype.c_str()); if (mimetype == "audio/mp4a-latm") {
aenc_ = OH_AudioEncoder_CreateByMime(OH_AVCODEC_MIMETYPE_AUDIO_AAC);
} else {
aenc_ = OH_AudioEncoder_CreateByMime(mimetype.c_str());
}
NDK_CHECK_AND_RETURN_RET_LOG(aenc_ != nullptr, nullptr, "Fatal: OH_AudioEncoder_CreateByMime"); NDK_CHECK_AND_RETURN_RET_LOG(aenc_ != nullptr, nullptr, "Fatal: OH_AudioEncoder_CreateByMime");
cbEnc_.onError = AencAsyncError; cbEnc_.onError = AencAsyncError;
cbEnc_.onStreamChanged = AencAsyncStreamChanged; cbEnc_.onStreamChanged = AencAsyncStreamChanged;
...@@ -398,11 +430,28 @@ struct OH_AVCodec* ADecEncNdkSample::CreateAudioEncoder(std::string mimetype) ...@@ -398,11 +430,28 @@ struct OH_AVCodec* ADecEncNdkSample::CreateAudioEncoder(std::string mimetype)
return aenc_; return aenc_;
} }
struct OH_AVCodec* ADecEncNdkSample::CreateAudioEncoderByName(std::string name)
{
aenc_ = OH_AudioEncoder_CreateByName(name.c_str());
NDK_CHECK_AND_RETURN_RET_LOG(aenc_ != nullptr, nullptr, "Fatal: OH_AudioEncoder_CreateByName");
cbEnc_.onError = AencAsyncError;
cbEnc_.onStreamChanged = AencAsyncStreamChanged;
cbEnc_.onNeedInputData = AencAsyncNeedInputData;
cbEnc_.onNeedOutputData = AencAsyncNewOutputData;
int32_t ret = OH_AudioEncoder_SetCallback(aenc_, cbEnc_, static_cast<void *>(acodecSignal_));
NDK_CHECK_AND_RETURN_RET_LOG(ret == AV_ERR_OK, NULL, "Fatal: OH_AudioEncoder_SetCallback");
return aenc_;
}
int32_t ADecEncNdkSample::ConfigureEnc(struct OH_AVFormat *format) int32_t ADecEncNdkSample::ConfigureEnc(struct OH_AVFormat *format)
{ {
return OH_AudioEncoder_Configure(aenc_, format); return OH_AudioEncoder_Configure(aenc_, format);
} }
int32_t ADecEncNdkSample::SetParameterEnc(struct OH_AVFormat *format)
{
return OH_AudioEncoder_SetParameter(aenc_, format);
}
int32_t ADecEncNdkSample::PrepareEnc() int32_t ADecEncNdkSample::PrepareEnc()
{ {
......
...@@ -48,8 +48,11 @@ uint32_t ES_AAC_48000_32_1[] = { ...@@ -48,8 +48,11 @@ uint32_t ES_AAC_48000_32_1[] = {
381, 375, 373, 349, 391, 357, 384, 395, 384, 380, 386, 372, 386, 383, 378, 385, 385, 381, 375, 373, 349, 391, 357, 384, 395, 384, 380, 386, 372, 386, 383, 378, 385, 385,
384, 342, 390, 379, 387, 386, 393, 397, 362, 393, 394, 391, 383, 385, 377, 379, 381, 384, 342, 390, 379, 387, 386, 393, 397, 362, 393, 394, 391, 383, 385, 377, 379, 381,
369, 375, 379, 346, 382, 356, 361, 366, 394, 393, 385, 362, 406, 399, 384, 377, 385}; 369, 375, 379, 346, 382, 356, 361, 366, 394, 393, 385, 362, 406, 399, 384, 377, 385};
constexpr uint32_t ES_AAC_48000_32_1_Length = sizeof(ES_AAC_48000_32_1) / sizeof(uint32_t); constexpr uint32_t ES_AAC_48000_32_1_Length = sizeof(ES_AAC_48000_32_1) / sizeof(uint32_t);
const string MIME_TYPE_AAC = "audio/mp4a-latm"; const string MIME_TYPE_AAC = "audio/mp4a-latm";
const string DECODER_AAC = "avdec_aac";
const string ENCODER_AAC = "avenc_aac";
constexpr uint32_t DEFAULT_SAMPLE_RATE = 44100; constexpr uint32_t DEFAULT_SAMPLE_RATE = 44100;
constexpr uint32_t DEFAULT_CHANNELS = 2; constexpr uint32_t DEFAULT_CHANNELS = 2;
const char* READPATH = "/data/media/AAC_48000_32_1.aac"; const char* READPATH = "/data/media/AAC_48000_32_1.aac";
...@@ -107,8 +110,9 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_010 ...@@ -107,8 +110,9 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_010
OH_AVFormat *AudioFormat = OH_AVFormat_Create(); OH_AVFormat *AudioFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, AudioFormat); ASSERT_NE(nullptr, AudioFormat);
ASSERT_EQ(true, SetFormat(AudioFormat, AudioParam)); ASSERT_EQ(true, SetFormat(AudioFormat, AudioParam));
OH_AVFormat_SetStringValue(AudioFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_AUDIO_AAC);
struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoder(MIME_TYPE_AAC); struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoderByName(DECODER_AAC);
ASSERT_NE(nullptr, audDec); ASSERT_NE(nullptr, audDec);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat));
OH_AVFormat *OutDescDec = OH_AudioDecoder_GetOutputDescription(audDec); OH_AVFormat *OutDescDec = OH_AudioDecoder_GetOutputDescription(audDec);
...@@ -116,7 +120,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_010 ...@@ -116,7 +120,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_010
ASSERT_EQ(true, CheckDecDesc(AudioParam, OutDescDec)); ASSERT_EQ(true, CheckDecDesc(AudioParam, OutDescDec));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec());
struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoder(MIME_TYPE_AAC); struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoderByName(ENCODER_AAC);
ASSERT_NE(nullptr, audEnc); ASSERT_NE(nullptr, audEnc);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat));
OH_AVFormat *OutDescEnc = OH_AudioEncoder_GetOutputDescription(audEnc); OH_AVFormat *OutDescEnc = OH_AudioEncoder_GetOutputDescription(audEnc);
...@@ -127,7 +131,9 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_010 ...@@ -127,7 +131,9 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_010
aDecEncSample->SetReadPath(READPATH, ES_AAC_48000_32_1, ES_AAC_48000_32_1_Length); aDecEncSample->SetReadPath(READPATH, ES_AAC_48000_32_1, ES_AAC_48000_32_1_Length);
aDecEncSample->SetSavePath("/data/media/AAC_48000_32_1_out1.aac"); aDecEncSample->SetSavePath("/data/media/AAC_48000_32_1_out1.aac");
ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartEnc());
ASSERT_EQ(AV_ERR_OK, aDecEncSample->SetParameterEnc(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartDec());
ASSERT_EQ(AV_ERR_OK, aDecEncSample->SetParameterDec(AudioFormat));
while (!aDecEncSample->GetEncEosState()) {}; while (!aDecEncSample->GetEncEosState()) {};
ASSERT_EQ(AV_ERR_OK, aDecEncSample->StopDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->StopDec());
...@@ -150,17 +156,19 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_020 ...@@ -150,17 +156,19 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_020
{ {
ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample(); ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample();
struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoder(MIME_TYPE_AAC); struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audDec); ASSERT_NE(nullptr, audDec);
OH_AVFormat *AudioFormat = OH_AVFormat_Create(); OH_AVFormat *AudioFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, AudioFormat); ASSERT_NE(nullptr, AudioFormat);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNELS); OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNELS);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLE_RATE); OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLE_RATE);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, AudioStandard::SAMPLE_S16LE); OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, AudioStandard::SAMPLE_S16LE);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_TRACK_TYPE, MEDIA_TYPE_AUD);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec());
struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoder(MIME_TYPE_AAC); struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audEnc); ASSERT_NE(nullptr, audEnc);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc());
...@@ -190,17 +198,19 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_030 ...@@ -190,17 +198,19 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_030
{ {
ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample(); ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample();
struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoder(MIME_TYPE_AAC); struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audDec); ASSERT_NE(nullptr, audDec);
OH_AVFormat *AudioFormat = OH_AVFormat_Create(); OH_AVFormat *AudioFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, AudioFormat); ASSERT_NE(nullptr, AudioFormat);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNELS); OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, DEFAULT_CHANNELS);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLE_RATE); OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUD_SAMPLE_RATE, DEFAULT_SAMPLE_RATE);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, AudioStandard::SAMPLE_S16LE); OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, AudioStandard::SAMPLE_S16LE);
OH_AVFormat_SetIntValue(AudioFormat, OH_MD_KEY_PROFILE, AAC_PROFILE_LC);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec());
struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoder(MIME_TYPE_AAC); struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audEnc); ASSERT_NE(nullptr, audEnc);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc());
...@@ -228,7 +238,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_040 ...@@ -228,7 +238,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_040
{ {
ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample(); ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample();
struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoder(MIME_TYPE_AAC); struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audDec); ASSERT_NE(nullptr, audDec);
OH_AVFormat *AudioFormat = OH_AVFormat_Create(); OH_AVFormat *AudioFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, AudioFormat); ASSERT_NE(nullptr, AudioFormat);
...@@ -238,7 +248,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_040 ...@@ -238,7 +248,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_040
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec());
struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoder(MIME_TYPE_AAC); struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audEnc); ASSERT_NE(nullptr, audEnc);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc());
...@@ -278,7 +288,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_050 ...@@ -278,7 +288,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_050
{ {
ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample(); ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample();
struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoder(MIME_TYPE_AAC); struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audDec); ASSERT_NE(nullptr, audDec);
OH_AVFormat *AudioFormat = OH_AVFormat_Create(); OH_AVFormat *AudioFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, AudioFormat); ASSERT_NE(nullptr, AudioFormat);
...@@ -288,7 +298,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_050 ...@@ -288,7 +298,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_050
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec());
struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoder(MIME_TYPE_AAC); struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audEnc); ASSERT_NE(nullptr, audEnc);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc());
...@@ -310,8 +320,6 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_050 ...@@ -310,8 +320,6 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_050
ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartEnc());
ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->StartDec());
aDecEncSample->SetEosState(true); aDecEncSample->SetEosState(true);
sleep(2);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->CalcuError());
while (!aDecEncSample->GetEncEosState()) {}; while (!aDecEncSample->GetEncEosState()) {};
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ReleaseDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ReleaseDec());
...@@ -333,7 +341,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_060 ...@@ -333,7 +341,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_060
{ {
ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample(); ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample();
struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoder(MIME_TYPE_AAC); struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audDec); ASSERT_NE(nullptr, audDec);
OH_AVFormat *AudioFormat = OH_AVFormat_Create(); OH_AVFormat *AudioFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, AudioFormat); ASSERT_NE(nullptr, AudioFormat);
...@@ -343,7 +351,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_060 ...@@ -343,7 +351,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_060
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec());
struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoder(MIME_TYPE_AAC); struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audEnc); ASSERT_NE(nullptr, audEnc);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc());
...@@ -385,7 +393,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_070 ...@@ -385,7 +393,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_070
{ {
ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample(); ADecEncNdkSample *aDecEncSample = new ADecEncNdkSample();
struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoder(MIME_TYPE_AAC); struct OH_AVCodec* audDec = aDecEncSample->CreateAudioDecoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audDec); ASSERT_NE(nullptr, audDec);
OH_AVFormat *AudioFormat = OH_AVFormat_Create(); OH_AVFormat *AudioFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, AudioFormat); ASSERT_NE(nullptr, AudioFormat);
...@@ -395,7 +403,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_070 ...@@ -395,7 +403,7 @@ HWTEST_F(ActsAudioDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_AUDIO_DEC_ENC_FUNCTION_070
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureDec(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareDec());
struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoder(MIME_TYPE_AAC); struct OH_AVCodec* audEnc = aDecEncSample->CreateAudioEncoderByMime(MIME_TYPE_AAC);
ASSERT_NE(nullptr, audEnc); ASSERT_NE(nullptr, audEnc);
ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat)); ASSERT_EQ(AV_ERR_OK, aDecEncSample->ConfigureEnc(AudioFormat));
ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc()); ASSERT_EQ(AV_ERR_OK, aDecEncSample->PrepareEnc());
......
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <string>
#include "securec.h"
#include "gtest/gtest.h"
#include "audio_info.h"
#include "native_avcodec_base.h"
#include "native_avformat.h"
using namespace std;
using namespace testing::ext;
namespace {
class ActsCodecFormatNdkTest : public testing::Test {
public:
static void SetUpTestCase();
static void TearDownTestCase();
void SetUp() override;
void TearDown() override;
};
void ActsCodecFormatNdkTest::SetUpTestCase() {}
void ActsCodecFormatNdkTest::TearDownTestCase() {}
void ActsCodecFormatNdkTest::SetUp() {}
void ActsCodecFormatNdkTest::TearDown() {}
bool CheckDecDesc(map<string, int> InDesc, OH_AVFormat* OutDesc)
{
int32_t out ;
for (const auto& t: InDesc) {
bool res = OH_AVFormat_GetIntValue(OutDesc, t.first.c_str(), &out);
cout << "key: " << t.first << "; out: " << out <<endl;
if (!res) {
cout << "OH_AVFormat_GetIntValue Fail. key:" << t.first << endl;
return false;
}
if (out != t.second) {
cout << "OH_AVFormat_GetIntValue error. key: " << t.first
<< "; expect: "<< t.second
<< ", actual: "<< out << endl;
return false;
}
out = 0;
}
return true;
}
bool SetFormat(struct OH_AVFormat *format, map<string, int> mediaDescription)
{
const char *key;
for (const auto& t: mediaDescription) {
key = t.first.c_str();
if (not OH_AVFormat_SetIntValue(format, key, t.second)) {
cout << "OH_AV_FormatPutIntValue Fail. format key: " << t.first
<< ", value: "<< t.second << endl;
return false;
}
}
return true;
}
}
/**
* @tc.number : SUB_MULTIMEDIA_MEDIA_CODEC_FORMAT_0100
* @tc.name : test codec format set key
* @tc.desc : Basic function test
*/
HWTEST_F(ActsCodecFormatNdkTest, SUB_MULTIMEDIA_MEDIA_CODEC_FORMAT_0100, TestSize.Level1)
{
OH_AVFormat *codecFormatIn = OH_AVFormat_Create();
ASSERT_NE(nullptr, codecFormatIn);
OH_AVFormat *codecFormatOut = OH_AVFormat_Create();
ASSERT_NE(nullptr, codecFormatOut);
map<string, int> CodecParam = {
{OH_ED_KEY_TIME_STAMP, 200}, // set timestamp 200ms
{OH_ED_KEY_EOS, 1}, // set end of stream
{OH_MD_KEY_TRACK_TYPE, 1}, // set track type video
{OH_MD_KEY_DURATION, 200}, // set key duration 200ms
{OH_MD_KEY_BITRATE, 48000}, // set key bitrate 48000
{OH_MD_KEY_MAX_INPUT_SIZE, 2000}, // set key max input size 2000
{OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE, 0}, // set videoencoder bitrate mode CBR
{OH_MD_KEY_PROFILE, 1}, // set encode profile AVC_PROFILE_BASELINE
{OH_MD_KEY_I_FRAME_INTERVAL, 1}, // set key i frame 1ms
{OH_MD_KEY_ROTATION, 90}, // set key rotation 0 degree
};
ASSERT_EQ(true, SetFormat(codecFormatIn, CodecParam));
OH_AVFormat_Copy(codecFormatOut, codecFormatIn);
ASSERT_EQ(true, CheckDecDesc(CodecParam, codecFormatOut));
ASSERT_NE(nullptr, OH_AVFormat_DumpInfo(codecFormatOut));
cout << OH_AVFormat_DumpInfo(codecFormatIn) << endl;
OH_AVFormat_Destroy(codecFormatIn);
codecFormatIn = nullptr;
OH_AVFormat_Destroy(codecFormatOut);
codecFormatIn = nullptr;
}
/**
* @tc.number : SUB_MULTIMEDIA_MEDIA_CODEC_FORMAT_0200
* @tc.name : test codec format set and get value
* @tc.desc : Basic function test
*/
HWTEST_F(ActsCodecFormatNdkTest, SUB_MULTIMEDIA_MEDIA_CODEC_FORMAT_0200, TestSize.Level1)
{
const char *intKey = "int value key";
const char *longKey = "long value key";
const char *floatKey = "float value key";
const char *doubleKey = "double value key";
const char *stringKey = "string value key";
const char *stringValue = "string_value";
int32_t intValue = 1;
int64_t longValue = 1;
float floatValue = 1.0;
double doubleValue = 1.0;
OH_AVFormat *codecFormatIn = OH_AVFormat_Create();
ASSERT_NE(nullptr, codecFormatIn);
OH_AVFormat *codecFormatOut = OH_AVFormat_Create();
ASSERT_NE(nullptr, codecFormatOut);
OH_AVFormat_SetIntValue(codecFormatIn, intKey, intValue);
OH_AVFormat_SetLongValue(codecFormatIn, longKey, longValue);
OH_AVFormat_SetFloatValue(codecFormatIn, floatKey, floatValue);
OH_AVFormat_SetDoubleValue(codecFormatIn, doubleKey, doubleValue);
OH_AVFormat_SetStringValue(codecFormatIn, stringKey, stringValue);
OH_AVFormat_Copy(codecFormatOut, codecFormatIn);
int32_t intValueOut;
OH_AVFormat_GetIntValue(codecFormatOut, intKey, &intValueOut);
ASSERT_EQ(intValueOut, intValue);
int64_t longValueOut;
OH_AVFormat_GetLongValue(codecFormatOut, longKey, &longValueOut);
ASSERT_EQ(longValueOut, longValue);
float floatValueOut;
OH_AVFormat_GetFloatValue(codecFormatOut, floatKey, &floatValueOut);
ASSERT_EQ(floatValueOut, floatValue);
double doubleValueOut;
OH_AVFormat_GetDoubleValue(codecFormatOut, doubleKey, &doubleValueOut);
ASSERT_EQ(doubleValueOut, doubleValue);
const char *stringValueOut;
OH_AVFormat_GetStringValue(codecFormatOut, stringKey, &stringValueOut);
ASSERT_EQ(*stringValueOut, *stringValue);
OH_AVFormat_Destroy(codecFormatIn);
codecFormatIn = nullptr;
OH_AVFormat_Destroy(codecFormatOut);
codecFormatOut = nullptr;
}
/**
* @tc.number : SUB_MULTIMEDIA_MEDIA_CODEC_FORMAT_0300
* @tc.name : test codec format set and get buffer
* @tc.desc : Basic function test
*/
HWTEST_F(ActsCodecFormatNdkTest, SUB_MULTIMEDIA_MEDIA_CODEC_FORMAT_0300, TestSize.Level1)
{
const char *bufferKey = "buffer value key";
OH_AVFormat *codecFormatIn = OH_AVFormat_Create();
ASSERT_NE(nullptr, codecFormatIn);
OH_AVFormat *codecFormatOut = OH_AVFormat_Create();
ASSERT_NE(nullptr, codecFormatOut);
int32_t buffernum = 10;
size_t sizeIn = buffernum * sizeof(uint8_t);
uint8_t *buffer = reinterpret_cast<uint8_t *>(malloc(sizeIn));
(void)memset_s(buffer, sizeIn, 1, sizeIn);
OH_AVFormat_SetBuffer(codecFormatIn, bufferKey, buffer, sizeIn);
OH_AVFormat_Copy(codecFormatOut, codecFormatIn);
uint8_t *addrout;
size_t sizeOut;
OH_AVFormat_GetBuffer(codecFormatOut, bufferKey, &addrout, &sizeOut);
ASSERT_EQ(sizeIn, sizeOut);
for (int32_t i = 0; i < buffernum; i++) {
ASSERT_EQ(buffer[i], addrout[i]);
}
OH_AVFormat_Destroy(codecFormatIn);
codecFormatIn = nullptr;
OH_AVFormat_Destroy(codecFormatOut);
codecFormatOut = nullptr;
}
\ No newline at end of file
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "ndktest_log.h" #include "ndktest_log.h"
#include "native_avmagic.h" #include "native_avmagic.h"
#include "surface.h" #include "surface.h"
#include "native_avcodec_base.h"
#include "native_avcodec_videodecoder.h" #include "native_avcodec_videodecoder.h"
#include "native_avcodec_videoencoder.h" #include "native_avcodec_videoencoder.h"
...@@ -69,6 +70,7 @@ public: ...@@ -69,6 +70,7 @@ public:
struct OH_AVCodec* CreateVideoDecoderByMime(std::string mimetype); struct OH_AVCodec* CreateVideoDecoderByMime(std::string mimetype);
struct OH_AVCodec* CreateVideoDecoderByName(std::string name); struct OH_AVCodec* CreateVideoDecoderByName(std::string name);
int32_t ConfigureDec(struct OH_AVFormat *format); int32_t ConfigureDec(struct OH_AVFormat *format);
int32_t SetParameterDec(struct OH_AVFormat *format);
int32_t SetOutputSurface(); int32_t SetOutputSurface();
int32_t PrepareDec(); int32_t PrepareDec();
int32_t StartDec(); int32_t StartDec();
...@@ -80,6 +82,7 @@ public: ...@@ -80,6 +82,7 @@ public:
struct OH_AVCodec* CreateVideoEncoderByMime(std::string mimetype); struct OH_AVCodec* CreateVideoEncoderByMime(std::string mimetype);
struct OH_AVCodec* CreateVideoEncoderByName(std::string name); struct OH_AVCodec* CreateVideoEncoderByName(std::string name);
int32_t ConfigureEnc(struct OH_AVFormat *format); int32_t ConfigureEnc(struct OH_AVFormat *format);
int32_t SetParameterEnc(struct OH_AVFormat *format);
int32_t GetSurface(); int32_t GetSurface();
int32_t PrepareEnc(); int32_t PrepareEnc();
int32_t StartEnc(); int32_t StartEnc();
...@@ -108,6 +111,7 @@ public: ...@@ -108,6 +111,7 @@ public:
bool isDecOutputEOS = false; bool isDecOutputEOS = false;
bool isEncOutputEOS = false; bool isEncOutputEOS = false;
bool setEos = true; bool setEos = true;
bool needRender = true;
private: private:
OHNativeWindow *nativeWindow_; OHNativeWindow *nativeWindow_;
......
...@@ -89,6 +89,7 @@ struct OH_AVFormat* createFormat() ...@@ -89,6 +89,7 @@ struct OH_AVFormat* createFormat()
OH_AVFormat_SetIntValue(DefaultFormat, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT); OH_AVFormat_SetIntValue(DefaultFormat, OH_MD_KEY_HEIGHT, DEFAULT_HEIGHT);
OH_AVFormat_SetIntValue(DefaultFormat, OH_MD_KEY_PIXEL_FORMAT, DEFAULT_PIXELFORMAT); OH_AVFormat_SetIntValue(DefaultFormat, OH_MD_KEY_PIXEL_FORMAT, DEFAULT_PIXELFORMAT);
OH_AVFormat_SetIntValue(DefaultFormat, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAMERATE); OH_AVFormat_SetIntValue(DefaultFormat, OH_MD_KEY_FRAME_RATE, DEFAULT_FRAMERATE);
OH_AVFormat_SetStringValue(DefaultFormat, OH_MD_KEY_CODEC_MIME, OH_AVCODEC_MIMETYPE_VIDEO_AVC);
return DefaultFormat; return DefaultFormat;
} }
} }
...@@ -101,13 +102,13 @@ struct OH_AVFormat* createFormat() ...@@ -101,13 +102,13 @@ struct OH_AVFormat* createFormat()
HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_0100, TestSize.Level1) HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_0100, TestSize.Level1)
{ {
VDecEncNdkSample *vDecEncSample = new VDecEncNdkSample(); VDecEncNdkSample *vDecEncSample = new VDecEncNdkSample();
struct OH_AVCodec* videoDec = vDecEncSample->CreateVideoDecoderByMime(MIME_TYPE_AVC); struct OH_AVCodec* videoDec = vDecEncSample->CreateVideoDecoderByMime(MIME_TYPE_AVC);
ASSERT_NE(nullptr, videoDec); ASSERT_NE(nullptr, videoDec);
struct OH_AVCodec* videoEnc = vDecEncSample->CreateVideoEncoderByMime(MIME_TYPE_MPEG4); struct OH_AVCodec* videoEnc = vDecEncSample->CreateVideoEncoderByMime(MIME_TYPE_MPEG4);
ASSERT_NE(nullptr, videoEnc); ASSERT_NE(nullptr, videoEnc);
vDecEncSample->SetReadPath(READPATH); vDecEncSample->SetReadPath(READPATH);
vDecEncSample->SetSavePath("/data/media/video_001.es"); vDecEncSample->SetSavePath("/data/media/video_001.h264");
OH_AVFormat *VideoFormat = OH_AVFormat_Create(); OH_AVFormat *VideoFormat = OH_AVFormat_Create();
ASSERT_NE(nullptr, VideoFormat); ASSERT_NE(nullptr, VideoFormat);
...@@ -118,6 +119,8 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_010 ...@@ -118,6 +119,8 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_010
{OH_MD_KEY_FRAME_RATE, DEFAULT_FRAMERATE}, {OH_MD_KEY_FRAME_RATE, DEFAULT_FRAMERATE},
}; };
ASSERT_EQ(true, SetFormat(VideoFormat, VideoParam)); ASSERT_EQ(true, SetFormat(VideoFormat, VideoParam));
OH_AVFormat_SetIntValue(VideoFormat, OH_MD_KEY_TRACK_TYPE, MEDIA_TYPE_VID);
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat));
OH_AVFormat *OutDescDec = OH_VideoDecoder_GetOutputDescription(videoDec); OH_AVFormat *OutDescDec = OH_VideoDecoder_GetOutputDescription(videoDec);
ASSERT_NE(nullptr, OutDescDec); ASSERT_NE(nullptr, OutDescDec);
...@@ -161,17 +164,20 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_020 ...@@ -161,17 +164,20 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_020
struct OH_AVCodec* videoEnc = vDecEncSample->CreateVideoEncoderByMime(MIME_TYPE_AVC); struct OH_AVCodec* videoEnc = vDecEncSample->CreateVideoEncoderByMime(MIME_TYPE_AVC);
ASSERT_NE(nullptr, videoEnc); ASSERT_NE(nullptr, videoEnc);
vDecEncSample->SetReadPath(READPATH); vDecEncSample->SetReadPath(READPATH);
vDecEncSample->SetSavePath("/data/media/video_002.es"); vDecEncSample->SetSavePath("/data/media/video_002.h264");
OH_AVFormat *VideoFormat = createFormat(); OH_AVFormat *VideoFormat = createFormat();
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat));
OH_AVFormat_SetIntValue(VideoFormat, OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE, CBR);
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->SetOutputSurface()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->SetOutputSurface());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->PrepareEnc()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->PrepareEnc());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->PrepareDec()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->PrepareDec());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->SetParameterDec(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->SetParameterEnc(VideoFormat));
while (!vDecEncSample->GetEncEosState()) {}; while (!vDecEncSample->GetEncEosState()) {};
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ResetDec()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ResetDec());
...@@ -185,7 +191,6 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_020 ...@@ -185,7 +191,6 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_020
ASSERT_EQ(AV_ERR_OK, vDecEncSample->CalcuError()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->CalcuError());
} }
/** /**
* @tc.number : SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_0300 * @tc.number : SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_0300
* @tc.name : release at end of stream * @tc.name : release at end of stream
...@@ -200,9 +205,11 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_030 ...@@ -200,9 +205,11 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_030
struct OH_AVCodec* videoEnc = vDecEncSample->CreateVideoEncoderByMime(MIME_TYPE_AVC); struct OH_AVCodec* videoEnc = vDecEncSample->CreateVideoEncoderByMime(MIME_TYPE_AVC);
ASSERT_NE(nullptr, videoEnc); ASSERT_NE(nullptr, videoEnc);
vDecEncSample->SetReadPath(READPATH); vDecEncSample->SetReadPath(READPATH);
vDecEncSample->SetSavePath("/data/media/video_003.es"); vDecEncSample->SetSavePath("/data/media/video_003.h264");
OH_AVFormat *VideoFormat = createFormat(); OH_AVFormat *VideoFormat = createFormat();
OH_AVFormat_SetIntValue(VideoFormat, OH_MD_KEY_PROFILE, AVC_PROFILE_BASELINE);
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface());
...@@ -237,9 +244,11 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_040 ...@@ -237,9 +244,11 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_040
ASSERT_NE(nullptr, videoEnc); ASSERT_NE(nullptr, videoEnc);
vDecEncSample->SetReadPath(READPATH); vDecEncSample->SetReadPath(READPATH);
vDecEncSample->SetEosState(false); vDecEncSample->SetEosState(false);
vDecEncSample->SetSavePath("/data/media/video_004.es"); vDecEncSample->SetSavePath("/data/media/video_004.h264");
OH_AVFormat *VideoFormat = createFormat(); OH_AVFormat *VideoFormat = createFormat();
OH_AVFormat_SetIntValue(VideoFormat, OH_MD_KEY_PROFILE, AVC_PROFILE_HIGH);
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface());
...@@ -256,7 +265,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_040 ...@@ -256,7 +265,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_040
vDecEncSample->ResetDecParam(); vDecEncSample->ResetDecParam();
vDecEncSample->ResetEncParam(); vDecEncSample->ResetEncParam();
vDecEncSample->SetEosState(true); vDecEncSample->SetEosState(true);
vDecEncSample->SetSavePath("/data/media/video_004_2.es"); vDecEncSample->SetSavePath("/data/media/video_004_2.h264");
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec());
...@@ -287,9 +296,11 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_050 ...@@ -287,9 +296,11 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_050
ASSERT_NE(nullptr, videoEnc); ASSERT_NE(nullptr, videoEnc);
vDecEncSample->SetReadPath(READPATH); vDecEncSample->SetReadPath(READPATH);
vDecEncSample->SetEosState(false); vDecEncSample->SetEosState(false);
vDecEncSample->SetSavePath("/data/media/video_005.es"); vDecEncSample->SetSavePath("/data/media/video_005.h264");
OH_AVFormat *VideoFormat = createFormat(); OH_AVFormat *VideoFormat = createFormat();
OH_AVFormat_SetIntValue(VideoFormat, OH_MD_KEY_PROFILE, AVC_PROFILE_MAIN);
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureEnc(VideoFormat));
ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->GetSurface());
...@@ -306,7 +317,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_050 ...@@ -306,7 +317,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_050
vDecEncSample->ReRead(); vDecEncSample->ReRead();
vDecEncSample->ResetDecParam(); vDecEncSample->ResetDecParam();
vDecEncSample->ResetEncParam(); vDecEncSample->ResetEncParam();
vDecEncSample->SetSavePath("/data/media/video_005_2.es"); vDecEncSample->SetSavePath("/data/media/video_005_2.h264");
vDecEncSample->SetEosState(true); vDecEncSample->SetEosState(true);
ASSERT_EQ(AV_ERR_OK, vDecEncSample->CalcuError()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->CalcuError());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc());
...@@ -338,7 +349,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_060 ...@@ -338,7 +349,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_060
ASSERT_NE(nullptr, videoEnc); ASSERT_NE(nullptr, videoEnc);
vDecEncSample->SetReadPath(READPATH); vDecEncSample->SetReadPath(READPATH);
vDecEncSample->SetEosState(false); vDecEncSample->SetEosState(false);
vDecEncSample->SetSavePath("/data/media/video_006.es"); vDecEncSample->SetSavePath("/data/media/video_006.h264");
OH_AVFormat *VideoFormat = createFormat(); OH_AVFormat *VideoFormat = createFormat();
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat));
...@@ -357,7 +368,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_060 ...@@ -357,7 +368,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_060
vDecEncSample->ResetDecParam(); vDecEncSample->ResetDecParam();
vDecEncSample->ResetEncParam(); vDecEncSample->ResetEncParam();
vDecEncSample->SetEosState(true); vDecEncSample->SetEosState(true);
vDecEncSample->SetSavePath("/data/media/video_006_2.es"); vDecEncSample->SetSavePath("/data/media/video_006_2.h264");
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec());
...@@ -389,7 +400,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_070 ...@@ -389,7 +400,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_070
ASSERT_NE(nullptr, videoEnc); ASSERT_NE(nullptr, videoEnc);
vDecEncSample->SetReadPath(READPATH); vDecEncSample->SetReadPath(READPATH);
vDecEncSample->SetEosState(false); vDecEncSample->SetEosState(false);
vDecEncSample->SetSavePath("/data/media/video_007.es"); vDecEncSample->SetSavePath("/data/media/video_007.h264");
OH_AVFormat *VideoFormat = createFormat(); OH_AVFormat *VideoFormat = createFormat();
ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat)); ASSERT_EQ(AV_ERR_OK, vDecEncSample->ConfigureDec(VideoFormat));
...@@ -408,7 +419,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_070 ...@@ -408,7 +419,7 @@ HWTEST_F(ActsVideoDecEncNdkTest, SUB_MULTIMEDIA_MEDIA_VIDEO_DEC_ENC_FUNCTION_070
vDecEncSample->ReRead(); vDecEncSample->ReRead();
vDecEncSample->ResetDecParam(); vDecEncSample->ResetDecParam();
vDecEncSample->ResetEncParam(); vDecEncSample->ResetEncParam();
vDecEncSample->SetSavePath("/data/media/video_007_2.es"); vDecEncSample->SetSavePath("/data/media/video_007_2.h264");
vDecEncSample->SetEosState(true); vDecEncSample->SetEosState(true);
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartEnc());
ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec()); ASSERT_EQ(AV_ERR_OK, vDecEncSample->StartDec());
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "gtest/gtest.h" #include "gtest/gtest.h"
#include "audio_info.h" #include "audio_info.h"
#include "av_common.h" #include "av_common.h"
#include "native_avcodec_base.h"
#include "avcodec_video_encoder.h" #include "avcodec_video_encoder.h"
#include "avcodec_video_decoder.h" #include "avcodec_video_decoder.h"
#include "native_avmemory.h" #include "native_avmemory.h"
...@@ -196,7 +197,12 @@ void VDecEncNdkSample::ResetEncParam() ...@@ -196,7 +197,12 @@ void VDecEncNdkSample::ResetEncParam()
struct OH_AVCodec* VDecEncNdkSample::CreateVideoDecoderByMime(std::string mimetype) struct OH_AVCodec* VDecEncNdkSample::CreateVideoDecoderByMime(std::string mimetype)
{ {
vdec_ = OH_VideoDecoder_CreateByMime(mimetype.c_str()); if (mimetype == "video/avc") {
cout << "mimetype == 'video/avc'" << endl;
vdec_ = OH_VideoDecoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_AVC);
} else {
vdec_ = OH_VideoDecoder_CreateByMime(mimetype.c_str());
}
NDK_CHECK_AND_RETURN_RET_LOG(vdec_ != nullptr, nullptr, "Fatal: OH_VideoDecoder_CreateByMime"); NDK_CHECK_AND_RETURN_RET_LOG(vdec_ != nullptr, nullptr, "Fatal: OH_VideoDecoder_CreateByMime");
if (vcodecSignal_ == nullptr) { if (vcodecSignal_ == nullptr) {
vcodecSignal_ = new VDecEncSignal(); vcodecSignal_ = new VDecEncSignal();
...@@ -233,6 +239,11 @@ int32_t VDecEncNdkSample::ConfigureDec(struct OH_AVFormat *format) ...@@ -233,6 +239,11 @@ int32_t VDecEncNdkSample::ConfigureDec(struct OH_AVFormat *format)
return OH_VideoDecoder_Configure(vdec_, format); return OH_VideoDecoder_Configure(vdec_, format);
} }
int32_t VDecEncNdkSample::SetParameterDec(struct OH_AVFormat *format)
{
return OH_VideoDecoder_SetParameter(vdec_, format);
}
int32_t VDecEncNdkSample::PrepareDec() int32_t VDecEncNdkSample::PrepareDec()
{ {
return OH_VideoDecoder_Prepare(vdec_); return OH_VideoDecoder_Prepare(vdec_);
...@@ -485,7 +496,12 @@ void VDecEncNdkSample::OutputFuncDec() ...@@ -485,7 +496,12 @@ void VDecEncNdkSample::OutputFuncDec()
uint32_t index = vcodecSignal_->outQueueDec_.front(); uint32_t index = vcodecSignal_->outQueueDec_.front();
uint32_t outflag = vcodecSignal_->flagQueueDec_.front(); uint32_t outflag = vcodecSignal_->flagQueueDec_.front();
if (outflag == 0) { if (outflag == 0) {
uint32_t ret = OH_VideoDecoder_RenderOutputData(vdec_, index); uint32_t ret;
if (needRender) {
ret = OH_VideoDecoder_RenderOutputData(vdec_, index);
} else {
ret = OH_VideoDecoder_FreeOutputData(vdec_, index);
}
if (ret == 0) { if (ret == 0) {
decOutCnt_ += 1; decOutCnt_ += 1;
cout << "DEC OUT.: render output success, decOutCnt_ is " << decOutCnt_ << endl; cout << "DEC OUT.: render output success, decOutCnt_ is " << decOutCnt_ << endl;
...@@ -505,7 +521,11 @@ void VDecEncNdkSample::OutputFuncDec() ...@@ -505,7 +521,11 @@ void VDecEncNdkSample::OutputFuncDec()
struct OH_AVCodec* VDecEncNdkSample::CreateVideoEncoderByMime(std::string mimetype) struct OH_AVCodec* VDecEncNdkSample::CreateVideoEncoderByMime(std::string mimetype)
{ {
venc_ = OH_VideoEncoder_CreateByMime(mimetype.c_str()); if (mimetype == "video/avc") {
venc_ = OH_VideoEncoder_CreateByMime(OH_AVCODEC_MIMETYPE_VIDEO_AVC);
} else {
venc_ = OH_VideoEncoder_CreateByMime(mimetype.c_str());
}
NDK_CHECK_AND_RETURN_RET_LOG(venc_ != nullptr, nullptr, "Fatal: OH_VideoEncoder_CreateByMime"); NDK_CHECK_AND_RETURN_RET_LOG(venc_ != nullptr, nullptr, "Fatal: OH_VideoEncoder_CreateByMime");
if (vcodecSignal_ == nullptr) { if (vcodecSignal_ == nullptr) {
...@@ -542,6 +562,11 @@ int32_t VDecEncNdkSample::ConfigureEnc(struct OH_AVFormat *format) ...@@ -542,6 +562,11 @@ int32_t VDecEncNdkSample::ConfigureEnc(struct OH_AVFormat *format)
return OH_VideoEncoder_Configure(venc_, format); return OH_VideoEncoder_Configure(venc_, format);
} }
int32_t VDecEncNdkSample::SetParameterEnc(struct OH_AVFormat *format)
{
return OH_VideoEncoder_SetParameter(venc_, format);
}
struct VEncObject : public OH_AVCodec { struct VEncObject : public OH_AVCodec {
explicit VEncObject(const std::shared_ptr<AVCodecVideoEncoder> &encoder) explicit VEncObject(const std::shared_ptr<AVCodecVideoEncoder> &encoder)
: OH_AVCodec(AVMagic::MEDIA_MAGIC_VIDEO_ENCODER), videoEncoder_(encoder) {} : OH_AVCodec(AVMagic::MEDIA_MAGIC_VIDEO_ENCODER), videoEncoder_(encoder) {}
......
# Copyright (C) 2021 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//test/xts/tools/build/suite.gni")
ohos_js_hap_suite("audio_codec_format_js_hap") {
hap_profile = "./src/main/config.json"
js2abc = true
deps = [
":audio_codec_format_js_assets",
":audio_codec_format_resources",
]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "ActsAudioCodecFormatJsTest"
subsystem_name = "multimedia"
part_name = "multimedia_player_framework"
}
ohos_js_assets("audio_codec_format_js_assets") {
source_dir = "./src/main/js/default"
}
ohos_resources("audio_codec_format_resources") {
sources = [ "./src/main/resources" ]
hap_profile = "./src/main/config.json"
}
{
"description": "Configuration for audio codec format Tests",
"driver": {
"type": "JSUnitTest",
"test-timeout": "2000000",
"package": "ohos.acts.multimedia.audio.codecformat",
"shell-timeout": "600000"
},
"kits": [
{
"test-file-name": [
"ActsAudioCodecFormatJsTest.hap"
],
"type": "AppInstallKit",
"cleanup-apps": true
},
{
"type": "ShellKit",
"run-command": [
"rm -rf /storage/media/100/local/files/*",
"mkdir -p /data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"chmod 777 -R /data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/"
],
"teardown-command":[
]
},
{
"type": "PushKit",
"pre-push": [
],
"push": [
"./resource/audio/codecFormat/HEv2_AAC_2_96000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_2_96000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_1_96000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_2_8000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_1_8000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_2_11025.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_1_11025.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_2_12000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_1_12000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_2_16000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_1_16000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_2_22050.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/LC_AAC_1_22050.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_1_24000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_2_24000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_1_32000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_2_32000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_1_44100.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_2_44100.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_1_48000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_2_48000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_1_64000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_2_64000.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_1_88200.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/HE_AAC_2_88200.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_96000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_8000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_8000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_11025.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_11025.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_12000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_12000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_16000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_22050.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_16000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_22050.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_24000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_24000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_32000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_32000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_44100.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_44100.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_48000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_48000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_64000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_64000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_88200.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_1_88200.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/FLAC_2_96000.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_96000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_96000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_8000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_12000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_16000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_22050.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_24000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_32000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_44100.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_48000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_64000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_1_88200.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_8000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_12000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_16000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_22050.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_24000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_32000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_44100.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_48000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_64000.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"./resource/audio/codecFormat/S16LE_2_88200.pcm ->/data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/"
]
},
{
"type": "ShellKit",
"run-command": [
"chmod 777 -R /data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/",
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.audio.codecformat/haps/entry/files/*",
"chmod 777 -R /storage/media/100/local/files/",
"chmod 777 /storage/media/100/local/files/*"
],
"teardown-command":[
]
}
]
}
\ No newline at end of file
{
"app": {
"apiVersion": {
"compatible": 6,
"releaseType": "Beta1",
"target": 7
},
"vendor": "acts",
"bundleName": "ohos.acts.multimedia.audio.codecformat",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"deviceConfig": {
"default": {
"debug": true
}
},
"module": {
"abilities": [
{
"iconId": 16777218,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"descriptionId": 16777217,
"visible": true,
"labelId": 16777216,
"icon": "$media:icon",
"name": "ohos.acts.multimedia.audio.codecformat.MainAbility",
"description": "$string:mainability_description",
"label": "$string:entry_MainAbility",
"type": "page",
"homeAbility": true,
"launchType": "standard"
}
],
"deviceType": [
"default",
"default",
"tablet",
"tv",
"wearable"
],
"reqPermissions": [
{
"name" : "ohos.permission.GRANT_SENSITIVE_PERMISSIONS",
"reason" : "use ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
},
{
"name" : "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS",
"reason" : "use ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
},
{
"name" : "ohos.permission.MEDIA_LOCATION",
"reason" : "use ohos.permission.MEDIA_LOCATION"
},
{
"name" : "ohos.permission.READ_MEDIA",
"reason" : "use ohos.permission.READ_MEDIA"
},
{
"name" : "ohos.permission.WRITE_MEDIA",
"reason" : "use ohos.permission.WRITE_MEDIA"
}
],
"mainAbility": "ohos.acts.multimedia.audio.codecformat.MainAbility",
"distro": {
"moduleType": "entry",
"installationFree": false,
"deliveryWithInstall": true,
"moduleName": "entry"
},
"package": "ohos.acts.multimedia.audio.codecformat",
"name": ".MyApplication",
"js": [
{
"pages": [
"pages/index/index"
],
"name": "default",
"window": {
"designWidth": 720,
"autoDesignWidth": true
}
}
]
}
}
\ No newline at end of file
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export default {
onCreate() {
console.info('AceApplication onCreate');
},
onDestroy() {
console.info('AceApplication onDestroy');
}
};
{
"strings": {
"hello": "Hello",
"world": "World"
}
}
\ No newline at end of file
{
"strings": {
"hello": "您好",
"world": "世界"
}
}
\ No newline at end of file
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.title {
font-size: 40px;
color: #000000;
opacity: 0.9;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
.title {
font-size: 100px;
}
}
@media screen and (device-type: wearable) {
.title {
font-size: 28px;
color: #FFFFFF;
}
}
@media screen and (device-type: tv) {
.container {
background-image: url("/common/images/Wallpaper.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.title {
font-size: 100px;
color: #FFFFFF;
}
}
@media screen and (device-type: phone) and (orientation: landscape) {
.title {
font-size: 60px;
}
}
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Core, ExpectExtend} from 'deccjsunit/index'
export default {
data: {
title: ""
},
onInit() {
this.title = this.$t('strings.world');
},
onShow() {
console.info('onShow finish')
const core = Core.getInstance()
const expectExtend = new ExpectExtend({
'id': 'extend'
})
core.addService('expect', expectExtend)
core.init()
const configService = core.getDefaultService('config')
this.timeout = 600000
configService.setConfig(this)
require('../../../test/List.test')
core.execute()
},
onReady() {
},
}
\ No newline at end of file
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import fileio from '@ohos.fileio'
import featureAbility from '@ohos.ability.featureAbility'
import * as mediaTestBase from '../../../../../MediaTestBase.js';
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('AudioEncoderFormatCompatibilityPromise', function () {
let audioEncodeProcessor;
let eosframenum = 0;
let resetAtEOS = false;
let workdoneAtEOS = false;
let needgetMediaDes = false;
let needrelease = false;
let frameCnt = 1;
let timestamp = 0;
let rate = 0;
let sawInputEOS = false;
let sawOutputEOS = false;
let inputQueue = [];
let outputQueue = [];
let ES = [0, 2048];
let ES_LENGTH = 1000;
let readPath;
let fdRead;
let fdWrite;
let readStreamSync;
let fileAssetWrite;
let channelCount;
let channelCountList = [];
let sampleRateList = [];
let formatSampleRate = [];
const events = require('events');
const eventEmitter = new events.EventEmitter();
const context = featureAbility.getContext();
let outputCnt = 0;
let inputCnt = 0;
let frameThreshold = 10;
beforeAll(async function() {
console.info('beforeAll case 1');
})
beforeEach(function() {
console.info('beforeEach case');
outputCnt = 0;
inputCnt = 0;
})
afterEach(async function() {
console.info('afterEach case');
if (audioEncodeProcessor != null) {
console.info('case audioEncodeProcessor is not null');
await audioEncodeProcessor.release().then(() => {
console.info('audioEncodeProcessor release success');
audioEncodeProcessor = null;
}, failCallback).catch(failCatch);
}
})
afterAll(function() {
console.info('afterAll case');
})
let failCallback = function(err) {
console.info('case callback err : ' + err);
expect(err).assertUndefined();
}
let failCatch = function(err) {
console.info('case catch err : ' + err);
expect(err).assertUndefined();
}
async function resetParam() {
eosframenum = 0;
resetAtEOS = false;
workdoneAtEOS = false;
needgetMediaDes = false;
needrelease = false
frameCnt = 1;
timestamp = 0;
rate = 0;
sawInputEOS = false;
sawOutputEOS = false;
readStreamSync = undefined;
inputQueue = [];
outputQueue = [];
ES = [0, 4096]
ES_LENGTH = 1000;
outputCnt = 0;
inputCnt = 0;
}
async function beforeTest() {
console.info('beforeTest case');
audioEncodeProcessor = null;
eosframenum = 0;
resetAtEOS = false;
workdoneAtEOS = false;
needgetMediaDes = false;
needrelease = false
frameCnt = 1;
timestamp = 0;
rate = 0;
sawInputEOS = false;
sawOutputEOS = false;
readStreamSync = undefined;
inputQueue = [];
outputQueue = [];
ES = [0, 4096]
ES_LENGTH = 1000;
}
async function aferTest() {
console.info('afterTest case');
if (audioEncodeProcessor != null) {
console.info('case audioEncodeProcessor is not null');
await audioEncodeProcessor.release().then(() => {
console.info('audioEncodeProcessor release success');
audioEncodeProcessor = null;
}, failCallback).catch(failCatch);
}
await closeFdRead();
inputCnt = 0;
outputCnt = 0;
}
async function getFdRead(readPath, done) {
await mediaTestBase.getFdRead(readPath, done).then((fdNumber) => {
fdRead = fdNumber;
})
}
async function closeFdRead() {
await fileio.close(fdRead).then(() => {
console.info('[fileio] case close fdRead success, fd is ' + fdRead);
}, failCallback).catch(failCatch);
}
function writeFile(buf, len) {
try{
let res = fileio.writeSync(fdWrite, buf, {length: len});
console.info('case fileio.write buffer success');
} catch(e) {
console.info('case fileio.write buffer error is ' + e);
}
}
function readFile(path) {
console.info('read file start execution');
try{
console.info('filepath: ' + path);
readStreamSync = fileio.fdopenStreamSync(fdRead, 'rb');
}catch(e) {
console.info(e);
}
}
function getContent(buf, len) {
console.info("case start get content");
let lengthreal = -1;
lengthreal = fileio.readSync(fdRead, buf, {length:len});
console.info('case lengthreal is :' + lengthreal);
}
async function resetWork() {
resetParam();
await audioEncodeProcessor.reset().then(async() => {
console.info("case reset success");
if (needrelease) {
await audioEncodeProcessor.release().then(() => {
console.info("case release success");
}, failCallback).catch(failCatch);
audioEncodeProcessor = null;
}
}, failCallback).catch(failCatch);
}
async function doneWork() {
await audioEncodeProcessor.stop().then(() => {
console.info("case stop success");
}, failCallback).catch(failCatch);
resetParam();
await audioEncodeProcessor.reset().then(() => {
console.info("case reset success");
}, failCallback).catch(failCatch);
await audioEncodeProcessor.release().then(() => {
console.info("case release success");
}, failCallback).catch(failCatch);
audioEncodeProcessor = null;
}
async function enqueueInputs(queue) {
while (queue.length > 0 && !sawInputEOS) {
let inputobject = queue.shift();
console.info("case frameCnt:" + frameCnt);
if (frameCnt == eosframenum || frameCnt == ES_LENGTH + 1) {
console.info("case EOS frame seperately")
inputobject.flags = 1;
inputobject.timeMs = 0;
inputobject.length = 0;
sawInputEOS = true;
} else {
console.info("case read frame from file");
inputobject.timeMs = timestamp;
inputobject.offset = 0;
inputobject.length = ES[1];
getContent(inputobject.data, ES[1]);
inputobject.flags = 0;
}
timestamp += 23;
frameCnt += 1;
audioEncodeProcessor.pushInputData(inputobject).then(() => {
console.info('case queueInput success');
inputCnt += 1;
});
}
}
async function dequeueOutputs(queue, nextStep, done) {
while (queue.length > 0 && !sawOutputEOS) {
let outputObject = queue.shift();
if (outputObject.flags == 1) {
sawOutputEOS = true;
expect(outputCnt).assertClose(inputCnt, frameThreshold);
await doneWork();
if(sampleRateList == false && channelCountList[0] != undefined) {
await aferTest();
channelCount = channelCountList.shift();
sampleRateList = formatSampleRate.toString().split(',');
console.info('channelCountList[0]: ' + channelCountList[0]);
console.info('formatSampleRate ' + formatSampleRate);
nextStep();
return;
}else if (channelCountList == false && sampleRateList == false) {
done();
} else {
await aferTest();
nextStep();
return;
}
} else {
console.info("write to file success");
}
audioEncodeProcessor.freeOutputBuffer(outputObject).then(() => {
console.info('release output success');
});
}
}
function printfDescription(obj) {
for (let item in obj) {
let property = obj[item];
console.info("AudioEncoder config is" + item + ":" + property);
}
}
function setCallback(nextStep, done) {
console.info('case callback');
audioEncodeProcessor.on('needInputData', async(inBuffer) => {
console.info('inputBufferAvailable');
inputQueue.push(inBuffer);
await enqueueInputs(inputQueue);
});
audioEncodeProcessor.on('newOutputData', async(outBuffer) => {
console.info('outputBufferAvailable');
outputCnt += 1;
if (outputCnt == 1 && outBuffer.flags == 1) {
console.info("case error occurs! first output is EOS");
expect().assertFail();
}
if (needgetMediaDes) {
audioEncodeProcessor.getOutputMediaDescription().then((MediaDescription) => {
console.info("get OutputMediaDescription success");
console.info('get outputMediaDescription : ' + MediaDescription);
needgetMediaDes=false;
}, failCallback).catch(failCatch);
}
outputQueue.push(outBuffer);
await dequeueOutputs(outputQueue, nextStep, done);
});
audioEncodeProcessor.on('error',(err) => {
console.info('case error called,errName is' + err);
});
audioEncodeProcessor.on('streamChanged',(format) => {
console.info('Output format changed: ' + format);
});
}
eventEmitter.on('nextStep', async (done) => {
console.info('in case : nextStep success');
await beforeTest();
let sampleRate = Number(sampleRateList.shift());
let savePath = `AAC_LC_${channelCount}_${sampleRate}.aac`;
let srcPath = `S16LE_${channelCount}_${sampleRate}.pcm`;
if (channelCount === 2) {
ES = [0, 4096];
} else {
ES = [0, 2048];
}
let mediaDescription = {
"channel_count": channelCount,
"sample_rate": sampleRate,
"audio_sample_format": 1,
"codec_mime": 'audio/mp4a-latm',
}
await encodeSource(mediaDescription, savePath, srcPath, done);
});
async function getFormatCaps() {
await media.createAudioEncoderByMime('audio/mp4a-latm').then((processor) => {
console.info("case create createAudioEncoder success");
audioEncodeProcessor = processor;
}, failCallback).catch(failCatch);
await audioEncodeProcessor.getAudioEncoderCaps().then((AudioCaps) => {
console.info("case get AudioEncoderCaps success");
console.info("print AudioCaps: " + AudioCaps)
console.info("print AudioCaps.supportedSampleRates: " + AudioCaps.supportedSampleRates)
console.info("print AudioCaps.supportedChannel.min: " + AudioCaps.supportedChannel.min)
console.info("print AudioCaps.supportedChannel.max: " + AudioCaps.supportedChannel.max)
formatSampleRate = AudioCaps.supportedSampleRates;
for (let i = AudioCaps.supportedChannel.min; i <= AudioCaps.supportedChannel.max; i++) {
channelCountList.push(i);
}
}, failCallback).catch(failCatch);
await audioEncodeProcessor.release().then(() => {
console.info('audioEncodeProcessor release success');
audioEncodeProcessor = null;
}, failCallback).catch(failCatch);
}
async function encodeSource(config, savePath, srcPath, done){
console.info('start test case');
let mediaDescription = config;
readPath = srcPath;
needgetMediaDes = true;
workdoneAtEOS = true;
await getFdRead(readPath, done);
console.info('case getFdRead success');
await media.createAudioEncoderByMime('audio/mp4a-latm').then((processor) => {
console.info("case create createAudioEncoder success");
audioEncodeProcessor = processor;
}, failCallback).catch(failCatch);
await audioEncodeProcessor.getAudioEncoderCaps().then((AudioCaps) => {
console.info("case get AudioEncoderCaps success");
console.info("print AudioCaps: " + AudioCaps)
}, failCallback).catch(failCatch);
await audioEncodeProcessor.configure(mediaDescription).then(() => {
console.info("case configure success");
}, failCallback).catch(failCatch);
setCallback(function(){eventEmitter.emit('nextStep', done);}, done);
await audioEncodeProcessor.prepare().then(() => {
console.info("case prepare success");
}, failCallback).catch(failCatch);
await audioEncodeProcessor.start().then(() => {
console.info("case start success")
}, failCallback).catch(failCatch);
await audioEncodeProcessor.getOutputMediaDescription().then((mediaDescription) => {
console.info("getOutputMediaDescription success");
printfDescription(mediaDescription);
},failCallback).catch(failCatch);
audioEncodeProcessor.on('error',(err) => {
console.info(`case error called,errName is ${err.name}`);
console.info(`case error called,errCode is ${err.code}`);
console.info(`case error called,errMessage is ${err.message}`);
expect().assertFail();
done();
});
}
/* *
* @tc.number : SUB_MULTIMEDIA_MEDIA_AUDIO_ENCODER_FORMAT_COMPATIBILITY_AAC_PROMISE_0100
* @tc.name : 01.test acc format compatibility
* @tc.desc : audio encoder format compatibility test
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MULTIMEDIA_MEDIA_AUDIO_ENCODER_FORMAT_COMPATIBILITY_AAC_PROMISE_0100', 0, async function (done) {
console.info("case test acc format compatibility");
await getFormatCaps();
sampleRateList = formatSampleRate.toString().split(',');
channelCount = channelCountList.shift();
let nextStep = eventEmitter.emit('nextStep', done);
nextStep();
})
})
\ No newline at end of file
/*
* Copyright (C) 2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require('./AudioEncoderFormatCompatibilityPromiseTest.test.js')
require('./AudioDecoderFormatCompatibilityPromiseTest.test.js')
{
"string": [
{
"name": "entry_MainAbility",
"value": "entry_MainAbility"
},
{
"name": "mainability_description",
"value": "JS_Empty Ability"
}
]
}
\ No newline at end of file
# Copyright (C) 2022 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//test/xts/tools/build/suite.gni")
ohos_js_hap_suite("audio_decoder_js_hap") {
hap_profile = "./src/main/config.json"
js2abc = true
deps = [
":audio_decoder_js_assets",
":audio_decoder_resources",
]
certificate_profile = "./signature/openharmony_sx.p7b"
hap_name = "ActsAudioDecoderJsTest"
subsystem_name = "multimedia"
part_name = "multimedia_player_framework"
}
ohos_js_assets("audio_decoder_js_assets") {
source_dir = "./src/main/js/default"
}
ohos_resources("audio_decoder_resources") {
sources = [ "./src/main/resources" ]
hap_profile = "./src/main/config.json"
}
{
"description": "Configuration for audioDecoder Tests",
"driver": {
"type": "JSUnitTest",
"test-timeout": "2000000",
"package": "ohos.acts.multimedia.audio.audiodecoder",
"shell-timeout": "60000"
},
"kits": [
{
"test-file-name": [
"ActsAudioDecoderJsTest.hap"
],
"type": "AppInstallKit",
"cleanup-apps": true
},
{
"type": "ShellKit",
"run-command": [
"rm -rf /storage/media/100/local/files/*",
"mkdir -p /data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/",
"chmod 777 -R /data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/"
],
"teardown-command":[
]
},
{
"type": "PushKit",
"pre-push": [
],
"push": [
"./resource/audio/audioDecode/AAC_48000_32_1.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/",
"./resource/audio/audioDecode/AAC_16000_1.aac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/",
"./resource/audio/audioDecode/FLAC_48000_32_1.flac ->/data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/",
"./resource/audio/audioDecode/mp3.es ->/data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/",
"./resource/audio/audioDecode/vorbis.es ->/data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/"
]
},
{
"type": "ShellKit",
"run-command": [
"chmod 777 -R /data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/",
"chmod 777 /data/app/el2/100/base/ohos.acts.multimedia.audio.audiodecoder/haps/entry/files/*",
"chmod 777 -R /storage/media/100/local/files/",
"chmod 777 /storage/media/100/local/files/*"
],
"teardown-command":[
]
}
]
}
\ No newline at end of file
{
"app": {
"apiVersion": {
"compatible": 6,
"releaseType": "Beta1",
"target": 7
},
"vendor": "acts",
"bundleName": "ohos.acts.multimedia.audio.audiodecoder",
"version": {
"code": 1000000,
"name": "1.0.0"
}
},
"deviceConfig": {
"default": {
"debug": true
}
},
"module": {
"abilities": [
{
"iconId": 16777218,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"descriptionId": 16777217,
"visible": true,
"labelId": 16777216,
"icon": "$media:icon",
"name": "ohos.acts.multimedia.audio.audiodecoder.MainAbility",
"description": "$string:mainability_description",
"label": "$string:entry_MainAbility",
"type": "page",
"homeAbility": true,
"launchType": "standard"
}
],
"deviceType": [
"default",
"default",
"tablet",
"tv",
"wearable"
],
"reqPermissions": [
{
"name" : "ohos.permission.GRANT_SENSITIVE_PERMISSIONS",
"reason" : "use ohos.permission.GRANT_SENSITIVE_PERMISSIONS"
},
{
"name" : "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS",
"reason" : "use ohos.permission.REVOKE_SENSITIVE_PERMISSIONS"
},
{
"name" : "ohos.permission.MEDIA_LOCATION",
"reason" : "use ohos.permission.MEDIA_LOCATION"
},
{
"name" : "ohos.permission.READ_MEDIA",
"reason" : "use ohos.permission.READ_MEDIA"
},
{
"name" : "ohos.permission.WRITE_MEDIA",
"reason" : "use ohos.permission.WRITE_MEDIA"
}
],
"mainAbility": "ohos.acts.multimedia.audio.audiodecoder.MainAbility",
"distro": {
"moduleType": "entry",
"installationFree": false,
"deliveryWithInstall": true,
"moduleName": "entry"
},
"package": "ohos.acts.multimedia.audio.audiodecoder",
"name": ".MyApplication",
"js": [
{
"pages": [
"pages/index/index"
],
"name": "default",
"window": {
"designWidth": 720,
"autoDesignWidth": true
}
}
]
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export default {
onCreate() {
console.info('AceApplication onCreate');
},
onDestroy() {
console.info('AceApplication onDestroy');
}
};
{
"strings": {
"hello": "Hello",
"world": "World"
}
}
\ No newline at end of file
{
"strings": {
"hello": "您好",
"world": "世界"
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.container {
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.title {
font-size: 40px;
color: #000000;
opacity: 0.9;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
.title {
font-size: 100px;
}
}
@media screen and (device-type: wearable) {
.title {
font-size: 28px;
color: #FFFFFF;
}
}
@media screen and (device-type: tv) {
.container {
background-image: url("/common/images/Wallpaper.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.title {
font-size: 100px;
color: #FFFFFF;
}
}
@media screen and (device-type: phone) and (orientation: landscape) {
.title {
font-size: 60px;
}
}
<!--
Copyright (c) 2022 Huawei Device Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="container">
<text class="title">
{{ $t('strings.hello') }} {{ title }}
</text>
</div>
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Core, ExpectExtend} from 'deccjsunit/index'
export default {
data: {
title: ""
},
onInit() {
this.title = this.$t('strings.world');
},
onShow() {
console.info('onShow finish')
const core = Core.getInstance()
const expectExtend = new ExpectExtend({
'id': 'extend'
})
core.addService('expect', expectExtend)
core.init()
const configService = core.getDefaultService('config')
this.timeout = 60000
configService.setConfig(this)
require('../../../test/List.test')
core.execute()
},
onReady() {
},
}
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import media from '@ohos.multimedia.media'
import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
describe('AudioDecoderEnum', function () {
beforeAll(function() {
console.info('beforeAll case');
})
beforeEach(function() {
console.info('beforeEach case');
})
afterEach(function() {
console.info('afterEach case');
})
afterAll(function() {
console.info('afterAll case');
})
let failCallback = function(err) {
console.info('case callback err : ' + err);
expect(err).assertUndefined();
}
let failCatch = function(err) {
console.info('case catch err : ' + err);
expect(err).assertUndefined();
}
/* *
* @tc.number : SUB_MULTIMEDIA_MEDIA_AUDIO_DECODER_ENUM_AACProfile_0100
* @tc.name : 001.AACProfile
* @tc.desc : Test Enumerate AACProfile
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MULTIMEDIA_MEDIA_AUDIO_DECODER_ENUM_AACProfile_0100', 0, async function (done) {
expect(media.AACProfile.AAC_PROFILE_LC).assertEqual(0);
expect(media.AACProfile.AAC_PROFILE_ELD).assertEqual(1);
expect(media.AACProfile.AAC_PROFILE_ERLC).assertEqual(2);
expect(media.AACProfile.AAC_PROFILE_HE).assertEqual(3);
expect(media.AACProfile.AAC_PROFILE_HE_V2).assertEqual(4);
expect(media.AACProfile.AAC_PROFILE_LD).assertEqual(5);
expect(media.AACProfile.AAC_PROFILE_MAIN).assertEqual(6);
done();
})
/* *
* @tc.number : SUB_MULTIMEDIA_MEDIA_AUDIO_DECODER_ENUM_AudioCaps_0100
* @tc.name : 002.AudioCaps
* @tc.desc : Test Interface AudioCaps
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MULTIMEDIA_MEDIA_AUDIO_DECODER_ENUM_AudioCaps_0100', 0, async function (done) {
console.info("case test Test Interface AudioCaps");
let audioDecodeProcessor;
let audioCaps;
await media.createAudioDecoderByName('avdec_aac').then((processor) => {
console.log("create createAudioDecoder success");
audioDecodeProcessor = processor;
}, failCallback).catch(failCatch);
await audioDecodeProcessor.getAudioDecoderCaps().then((AudioCaps) => {
console.log("get AudioDecoderCaps success");
audioCaps = AudioCaps;
}, failCallback).catch(failCatch);
// check AudioCaps
expect(audioCaps.codecInfo !== undefined).assertTrue();
// check AudioCaps.AVCodecInfo
let avCodecInfo = audioCaps.codecInfo;
expect(avCodecInfo.name !== undefined).assertTrue();
console.info('avCodecInfo.name: '+ avCodecInfo.name);
expect(avCodecInfo.type !== undefined).assertTrue();
console.info('avCodecInfo.type: '+ avCodecInfo.type);
expect(avCodecInfo.mimeType !== undefined).assertTrue();
console.info('avCodecInfo.mimeType: '+ avCodecInfo.mimeType);
expect(avCodecInfo.isHardwareAccelerated !== undefined).assertTrue();
console.info('avCodecInfo.isHardwareAccelerated: '+ avCodecInfo.isHardwareAccelerated);
expect(avCodecInfo.isSoftwareOnly !== undefined).assertTrue();
console.info('avCodecInfo.isSoftwareOnly: '+ avCodecInfo.isSoftwareOnly);
expect(avCodecInfo.isVendor !== undefined).assertTrue();
console.info('avCodecInfo.isVendor: '+ avCodecInfo.isVendor);
// check AudioCaps.supportedBitrate
expect(audioCaps.supportedBitrate !== undefined).assertTrue();
console.info('supportedBitrate.min: '+ audioCaps.supportedBitrate.min);
console.info('supportedBitrate.max: '+ audioCaps.supportedBitrate.max);
// check AudioCaps.supportedChannel
expect(audioCaps.supportedChannel !== undefined).assertTrue();
console.info('supportedChannel.min: '+ audioCaps.supportedChannel.min);
console.info('supportedChannel.max: '+ audioCaps.supportedChannel.max);
// check AudioCaps.supportedFormats
expect(audioCaps.supportedFormats !== undefined).assertTrue();
console.info('audioCaps.supportedFormats: '+ audioCaps.supportedFormats);
// check AudioCaps.supportedSampleRates
expect(audioCaps.supportedSampleRates !== undefined).assertTrue();
console.info('audioCaps.supportedSampleRates: '+ audioCaps.supportedSampleRates);
// check AudioCaps.supportedProfiles
expect(audioCaps.supportedProfiles !== undefined).assertTrue();
console.info('audioCaps.supportedProfiles: '+ audioCaps.supportedProfiles);
// check AudioCaps.supportedComplexity
expect(audioCaps.supportedComplexity !== undefined).assertTrue();
console.info('supportedComplexity.min: '+ audioCaps.supportedComplexity.min);
console.info('supportedComplexity.max: '+ audioCaps.supportedComplexity.max);
done();
})
/* *
* @tc.number : SUB_MULTIMEDIA_MEDIA_AUDIO_DECODER_ENUM_AVCodecType_0100
* @tc.name : 003.AVCodecType
* @tc.desc : Test Enumerate AVCodecType
* @tc.size : MediumTest
* @tc.type : Function test
* @tc.level : Level0
*/
it('SUB_MULTIMEDIA_MEDIA_AUDIO_DECODER_ENUM_AVCodecType_0100', 0, async function (done) {
expect(media.AVCodecType.AVCODEC_TYPE_VIDEO_ENCODER).assertEqual(0);
expect(media.AVCodecType.AVCODEC_TYPE_VIDEO_DECODER).assertEqual(1);
expect(media.AVCodecType.AVCODEC_TYPE_AUDIO_ENCODER).assertEqual(2);
expect(media.AVCodecType.AVCODEC_TYPE_AUDIO_DECODER).assertEqual(3);
done();
})
})
\ No newline at end of file
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require('./AudioDecoderFuncPromiseTest.test.js')
require('./AudioDecoderFuncCallbackTest.test.js')
require('./AudioDecoderFormatPromiseTest.test.js')
require('./AudioDecoderFormatCallbackTest.test.js')
require('./AudioDecoderReliabilityPromiseTest.test.js')
require('./AudioDecoderReliabilityCallbackTest.test.js')
require('./AudioDecoderMultiInstancesTest.test.js')
require('./AudioDecoderEnumTest.test.js')
{
"string": [
{
"name": "entry_MainAbility",
"value": "entry_MainAbility"
},
{
"name": "mainability_description",
"value": "JS_Empty Ability"
}
]
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册