* Copyright (C) 2025 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 "gtest/gtest.h"
#include "native_avcodec_base.h"
#include "avcodec_audio_channel_layout.h"
#include "native_avdemuxer.h"
#include "native_avformat.h"
#include "native_avsource.h"
#include "native_avmemory.h"
#include <iostream>
#include <cstdio>
#include <string>
#include <fcntl.h>
#include <cmath>
#include <thread>
namespace OHOS {
namespace Media {
class DemuxerCafFuncNdkTest : public testing::Test {
public:
static void SetUpTestCase(void);
static void TearDownTestCase(void);
void SetUp(void);
void TearDown(void);
protected:
const char *INP_DIR_1 = "/data/test/media/audio/ac3.caf";
const char *INP_DIR_2 = "/data/test/media/audio/error.caf";
const char *INP_DIR_3 = "/data/test/media/audio/adpcm_ima_wav.caf";
const char *INP_DIR_4 = "/data/test/media/audio/adpcm_ms.caf";
const char *INP_DIR_5 = "/data/test/media/audio/alac.caf";
const char *INP_DIR_6 = "/data/test/media/audio/amr_nb.caf";
const char *INP_DIR_7 = "/data/test/media/audio/flac.caf";
const char *INP_DIR_8 = "/data/test/media/audio/gsm.caf";
const char *INP_DIR_9 = "/data/test/media/audio/gsm_ms.caf";
const char *INP_DIR_10 = "/data/test/media/audio/ilbc.caf";
const char *INP_DIR_11 = "/data/test/media/audio/mp2.caf";
const char *INP_DIR_12 = "/data/test/media/audio/mp3.caf";
const char *INP_DIR_13 = "/data/test/media/audio/opus.caf";
const char *INP_DIR_14 = "/data/test/media/audio/pcm_alaw.caf";
const char *INP_DIR_15 = "/data/test/media/audio/pcm_mulaw.caf";
const char *INP_DIR_16 = "/data/test/media/audio/pcm_s16be.caf";
const char *INP_DIR_17 = "/data/test/media/audio/caf_adpcm_ima_qt.caf";
const char *INP_DIR_18 = "/data/test/media/audio/caf_pcm_f32be.caf";
const char *INP_DIR_19 = "/data/test/media/audio/caf_pcm_f32le.caf";
const char *INP_DIR_20 = "/data/test/media/audio/caf_pcm_f64be.caf";
const char *INP_DIR_21 = "/data/test/media/audio/caf_pcm_f64le.caf";
const char *INP_DIR_22 = "/data/test/media/audio/caf_pcm_s8.caf";
const char *INP_DIR_23 = "/data/test/media/audio/caf_pcm_s16le.caf";
const char *INP_DIR_24 = "/data/test/media/audio/caf_pcm_s24be.caf";
const char *INP_DIR_25 = "/data/test/media/audio/caf_pcm_s24le.caf";
const char *INP_DIR_26 = "/data/test/media/audio/caf_pcm_s32be.caf";
const char *INP_DIR_27 = "/data/test/media/audio/caf_pcm_s32le.caf";
};
static int g_fd = -1;
static OH_AVMemory *memory = nullptr;
static OH_AVSource *source = nullptr;
static OH_AVDemuxer *demuxer = nullptr;
static OH_AVFormat *sourceFormat = nullptr;
static OH_AVFormat *trackFormat = nullptr;
static OH_AVBuffer *avBuffer = nullptr;
static OH_AVFormat *format = nullptr;
static OH_AVErrCode ret = AV_ERR_OK;
static int32_t g_trackCount;
static int32_t g_width = 3840;
static int32_t g_height = 2160;
constexpr int32_t THOUSAND = 1000.0;
constexpr int32_t ONE = 1;
void DemuxerCafFuncNdkTest::SetUpTestCase() {}
void DemuxerCafFuncNdkTest::TearDownTestCase() {}
void DemuxerCafFuncNdkTest::SetUp()
{
memory = OH_AVMemory_Create(g_width * g_height);
g_trackCount = 0;
}
void DemuxerCafFuncNdkTest::TearDown()
{
if (trackFormat != nullptr) {
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
if (sourceFormat != nullptr) {
OH_AVFormat_Destroy(sourceFormat);
sourceFormat = nullptr;
}
if (format != nullptr) {
OH_AVFormat_Destroy(format);
format = nullptr;
}
if (memory != nullptr) {
OH_AVMemory_Destroy(memory);
memory = nullptr;
}
if (source != nullptr) {
OH_AVSource_Destroy(source);
source = nullptr;
}
if (demuxer != nullptr) {
OH_AVDemuxer_Destroy(demuxer);
demuxer = nullptr;
}
if (avBuffer != nullptr) {
OH_AVBuffer_Destroy(avBuffer);
avBuffer = nullptr;
}
if (g_fd > 0) {
close(g_fd);
g_fd = -1;
}
}
}
}
using namespace std;
using namespace OHOS;
using namespace OHOS::Media;
using namespace testing::ext;
static int64_t GetFileSize(const char *fileName)
{
int64_t fileSize = 0;
if (fileName != nullptr) {
struct stat fileStatus {};
if (stat(fileName, &fileStatus) == 0) {
fileSize = static_cast<int64_t>(fileStatus.st_size);
}
}
return fileSize;
}
struct seekInfo {
const char *fileName;
OH_AVSeekMode seekmode;
int64_t millisecond;
int32_t audioCount;
int32_t videoCount;
};
static void CheckSeekMode(seekInfo seekInfo)
{
int tarckType = 0;
OH_AVCodecBufferAttr attr;
g_fd = open(seekInfo.fileName, O_RDONLY);
int64_t size = GetFileSize(seekInfo.fileName);
cout << seekInfo.fileName << "-------" << g_fd << "-------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_NE(demuxer, nullptr);
sourceFormat = OH_AVSource_GetSourceFormat(source);
ASSERT_NE(sourceFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(sourceFormat, OH_MD_KEY_TRACK_COUNT, &g_trackCount));
cout << "g_trackCount----" << g_trackCount << endl;
for (int32_t index = 0; index < g_trackCount; index++) {
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, index));
}
for (int32_t index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SeekToTime(demuxer, seekInfo.millisecond / THOUSAND, seekInfo.seekmode));
bool readEnd = false;
int32_t frameNum = 0;
while (!readEnd) {
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_ReadSample(demuxer, index, memory, &attr));
if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_EOS) {
readEnd = true;
break;
}
frameNum++;
}
if (tarckType == MEDIA_TYPE_VID) {
cout << "frameNum---" << frameNum << endl;
ASSERT_EQ(seekInfo.videoCount, frameNum);
} else if (tarckType == MEDIA_TYPE_AUD) {
cout << "frameNum---" << frameNum << endl;
ASSERT_EQ(seekInfo.audioCount, frameNum);
}
}
}
static void CheckSeekModeCombination(seekInfo seekInfo1, seekInfo secondSeekInfo)
{
int tarckType = 0;
OH_AVCodecBufferAttr attr;
g_fd = open(seekInfo1.fileName, O_RDONLY);
int64_t size = GetFileSize(seekInfo1.fileName);
cout << seekInfo1.fileName << "-------" << g_fd << "-------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_NE(demuxer, nullptr);
sourceFormat = OH_AVSource_GetSourceFormat(source);
ASSERT_NE(sourceFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(sourceFormat, OH_MD_KEY_TRACK_COUNT, &g_trackCount));
cout << "g_trackCount----" << g_trackCount << endl;
for (int32_t index = 0; index < g_trackCount; index++) {
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, index));
}
for (int32_t index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SeekToTime(demuxer, seekInfo1.millisecond / THOUSAND, seekInfo1.seekmode));
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SeekToTime(demuxer, secondSeekInfo.millisecond / THOUSAND,
secondSeekInfo.seekmode));
bool readEnd = false;
int32_t frameNum = 0;
while (!readEnd) {
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_ReadSample(demuxer, index, memory, &attr));
if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_EOS) {
readEnd = true;
break;
}
frameNum++;
}
if (tarckType == MEDIA_TYPE_VID) {
cout << "frameNum---" << frameNum << endl;
ASSERT_EQ(secondSeekInfo.videoCount, frameNum);
} else if (tarckType == MEDIA_TYPE_AUD) {
cout << "frameNum---" << frameNum << endl;
ASSERT_EQ(secondSeekInfo.audioCount, frameNum);
}
}
close(g_fd);
g_fd = -1;
}
static void SetAudioValue(OH_AVCodecBufferAttr attr, bool &audioIsEnd, int &audioFrame, int &aKeyCount)
{
if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_EOS) {
audioIsEnd = true;
cout << audioFrame << " audio is end !!!!!!!!!!!!!!!" << endl;
} else {
audioFrame++;
if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_SYNC_FRAME) {
aKeyCount++;
}
}
}
static void SetVideoValue(OH_AVCodecBufferAttr attr, bool &videoIsEnd, int &videoFrame, int &vKeyCount)
{
if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_EOS) {
videoIsEnd = true;
cout << videoFrame << " video is end !!!!!!!!!!!!!!!" << endl;
} else {
videoFrame++;
if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_SYNC_FRAME) {
vKeyCount++;
}
}
}
static void DemuxerResult(const char *file, int aFrames, int vFrames)
{
int tarckType = 0;
OH_AVCodecBufferAttr attr;
bool audioIsEnd = false;
bool videoIsEnd = false;
int audioFrame = 0;
int videoFrame = 0;
g_fd = open(file, O_RDONLY);
if (g_fd < 0) {
return;
}
int64_t size = GetFileSize(file);
cout << file << "----------------------" << g_fd << "---------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_NE(demuxer, nullptr);
sourceFormat = OH_AVSource_GetSourceFormat(source);
ASSERT_TRUE(OH_AVFormat_GetIntValue(sourceFormat, OH_MD_KEY_TRACK_COUNT, &g_trackCount));
ASSERT_EQ(g_trackCount, ONE);
for (int32_t index = 0; index < g_trackCount; index++) {
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, index));
}
int aKeyCount = 0;
int vKeyCount = 0;
while (!audioIsEnd && !videoIsEnd) {
for (int32_t index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
if ((audioIsEnd && (tarckType == MEDIA_TYPE_AUD)) || (videoIsEnd && (tarckType == MEDIA_TYPE_VID))) {
continue;
}
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_ReadSample(demuxer, index, memory, &attr));
if (tarckType == MEDIA_TYPE_AUD) {
SetAudioValue(attr, audioIsEnd, audioFrame, aKeyCount);
} else if (tarckType == MEDIA_TYPE_VID) {
SetVideoValue(attr, videoIsEnd, videoFrame, vKeyCount);
}
}
}
close(g_fd);
g_fd = -1;
ASSERT_EQ(audioFrame, aFrames);
ASSERT_EQ(videoFrame, vFrames);
}
static void DemuxerFile(const char *file)
{
g_fd = open(file, O_RDONLY);
int64_t size = GetFileSize(file);
cout << file << "----------------------" << g_fd << "---------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_NE(demuxer, nullptr);
sourceFormat = OH_AVSource_GetSourceFormat(source);
ASSERT_TRUE(OH_AVFormat_GetIntValue(sourceFormat, OH_MD_KEY_TRACK_COUNT, &g_trackCount));
}
* @tc.number : DEMUXER_CAF_FUNC_0100
* @tc.name : create_source_with_fd_ac3_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0100, TestSize.Level2)
{
DemuxerResult(INP_DIR_1, 158, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_0200
* @tc.name : demuxer_caf_get_source_format_track_count
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0200, TestSize.Level2)
{
DemuxerFile(INP_DIR_1);
ASSERT_EQ(g_trackCount, ONE);
}
* @tc.number : DEMUXER_CAF_FUNC_0300
* @tc.name : demuxer_caf_get_public_track_format_mime
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0300, TestSize.Level2)
{
const char *stringVal;
DemuxerFile(INP_DIR_1);
int tarckType = 0;
for (int index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
ASSERT_TRUE(OH_AVFormat_GetStringValue(trackFormat, OH_MD_KEY_CODEC_MIME, &stringVal));
if (tarckType == MEDIA_TYPE_AUD) {
ASSERT_EQ(0, strcmp(stringVal, OH_AVCODEC_MIMETYPE_AUDIO_AC3));
}
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
}
* @tc.number : DEMUXER_CAF_FUNC_0400
* @tc.name : demuxer_caf_get_audio_track_format_sample_rate
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0400, TestSize.Level2)
{
int32_t sr = 0;
DemuxerFile(INP_DIR_1);
int tarckType = 0;
for (int index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_AUD_SAMPLE_RATE, &sr));
if (tarckType == MEDIA_TYPE_AUD) {
ASSERT_EQ(sr, 48000);
}
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
}
* @tc.number : DEMUXER_CAF_FUNC_0500
* @tc.name : demuxer_caf_get_audio_track_format_bitrate
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0500, TestSize.Level2)
{
int64_t br = 0;
DemuxerFile(INP_DIR_1);
int tarckType = 0;
for (int index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
ASSERT_TRUE(OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_BITRATE, &br));
if (tarckType == MEDIA_TYPE_AUD) {
ASSERT_EQ(br, 96000);
}
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
}
* @tc.number : DEMUXER_CAF_FUNC_0600
* @tc.name : demuxer_caf_get_audio_track_format_channel_count
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0600, TestSize.Level2)
{
int32_t cc = 0;
DemuxerFile(INP_DIR_1);
int tarckType = 0;
for (int index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_AUD_CHANNEL_COUNT, &cc));
if (tarckType == MEDIA_TYPE_AUD) {
ASSERT_EQ(cc, ONE);
}
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
}
* @tc.number : DEMUXER_CAF_FUNC_0700
* @tc.name : demuxer_caf_check_source_format_title
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0700, TestSize.Level2)
{
const char *stringVal;
DemuxerFile(INP_DIR_1);
ASSERT_FALSE(OH_AVFormat_GetStringValue(sourceFormat, OH_MD_KEY_TITLE, &stringVal));
}
* @tc.number : DEMUXER_CAF_FUNC_0800
* @tc.name : demuxer_caf_check_source_format_album_artist
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0800, TestSize.Level2)
{
const char *stringVal;
DemuxerFile(INP_DIR_1);
ASSERT_FALSE(OH_AVFormat_GetStringValue(sourceFormat, OH_MD_KEY_ALBUM_ARTIST, &stringVal));
}
* @tc.number : DEMUXER_CAF_FUNC_0900
* @tc.name : demuxer_caf_check_track_format_date
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_0900, TestSize.Level2)
{
const char *stringVal;
DemuxerFile(INP_DIR_1);
ASSERT_TRUE(OH_AVFormat_GetStringValue(sourceFormat, OH_MD_KEY_DATE, &stringVal));
ASSERT_EQ(0, strcmp(stringVal, "2015-11-23"));
}
* @tc.number : DEMUXER_CAF_FUNC_1000
* @tc.name : demuxer_caf_check_track_format_comment
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1000, TestSize.Level2)
{
const char *stringVal;
DemuxerFile(INP_DIR_1);
ASSERT_FALSE(OH_AVFormat_GetStringValue(sourceFormat, OH_MD_KEY_COMMENT, &stringVal));
}
* @tc.number : DEMUXER_CAF_FUNC_1100
* @tc.name : demuxer_caf_check_track_format_genre
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1100, TestSize.Level2)
{
const char *stringVal;
DemuxerFile(INP_DIR_1);
ASSERT_FALSE(OH_AVFormat_GetStringValue(sourceFormat, OH_MD_KEY_GENRE, &stringVal));
}
* @tc.number : DEMUXER_CAF_FUNC_1200
* @tc.name : demuxer_caf_check_track_format_copyright
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1200, TestSize.Level2)
{
const char *stringVal;
DemuxerFile(INP_DIR_1);
ASSERT_FALSE(OH_AVFormat_GetStringValue(sourceFormat, OH_MD_KEY_COPYRIGHT, &stringVal));
}
* @tc.number : DEMUXER_CAF_FUNC_1300
* @tc.name : demuxer_caf_get_public_track_format_channel_layout
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1300, TestSize.Level2)
{
int64_t channelLayout;
DemuxerFile(INP_DIR_1);
int tarckType = 0;
for (int index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
if (tarckType == MEDIA_TYPE_VID) {
continue;
}
ASSERT_TRUE(OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_CHANNEL_LAYOUT, &channelLayout));
ASSERT_EQ(MONO, channelLayout);
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
}
* @tc.number : DEMUXER_CAF_FUNC_1400
* @tc.name : demuxer_caf_get_public_track_format_audio_sample_format
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1400, TestSize.Level2)
{
int32_t sampleFormat;
DemuxerFile(INP_DIR_1);
int tarckType = 0;
for (int index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
if (tarckType == MEDIA_TYPE_VID) {
continue;
}
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_AUDIO_SAMPLE_FORMAT, &sampleFormat));
int sampleFormatResult = 9;
ASSERT_EQ(sampleFormatResult, sampleFormat);
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
}
* @tc.number : DEMUXER_CAF_FUNC_1500
* @tc.name : demuxer_caf_get_public_track_format_bits_per_coded_sample
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1500, TestSize.Level2)
{
int32_t bitsPreCodedSample;
DemuxerFile(INP_DIR_1);
int tarckType = 0;
for (int index = 0; index < g_trackCount; index++) {
trackFormat = OH_AVSource_GetTrackFormat(source, index);
ASSERT_NE(trackFormat, nullptr);
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_TRACK_TYPE, &tarckType));
if (tarckType == MEDIA_TYPE_VID) {
continue;
}
ASSERT_TRUE(OH_AVFormat_GetIntValue(trackFormat, OH_MD_KEY_BITS_PER_CODED_SAMPLE, &bitsPreCodedSample));
int bitsPreCodedSampleResult = 0;
ASSERT_EQ(bitsPreCodedSampleResult, bitsPreCodedSample);
OH_AVFormat_Destroy(trackFormat);
trackFormat = nullptr;
}
}
* @tc.number : DEMUXER_CAF_FUNC_1600
* @tc.name : seek to the start time, previous mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1600, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_PREVIOUS_SYNC, 0, 158, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_1700
* @tc.name : seek to the start time, next mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1700, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_NEXT_SYNC, 0, 158, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_1800
* @tc.name : seek to the start time, closest mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1800, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_CLOSEST_SYNC, 0, 158, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_1900
* @tc.name : seek to the end time, previous mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_1900, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_PREVIOUS_SYNC, 4990000, 3, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_2000
* @tc.name : seek to the end time, next mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2000, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_NEXT_SYNC, 4990000, 3, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_2100
* @tc.name : seek to the end time, closest mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2100, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_CLOSEST_SYNC, 4990000, 3, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_2200
* @tc.name : seek to the middle time, 5000000 millisecond, previous mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2200, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_PREVIOUS_SYNC, 5000000, 2, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_2300
* @tc.name : seek to the middle time, 5000000 millisecond, next mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2300, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_NEXT_SYNC, 5000000, 2, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_2400
* @tc.name : seek to the middle time, 5000000 millisecond, closest mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2400, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_CLOSEST_SYNC, 5000000, 2, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_2500
* @tc.name : seek to the middle time, closest mode, previous mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2500, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_PREVIOUS_SYNC, 0, 158, 0};
seekInfo fileTest2{INP_DIR_1, SEEK_MODE_CLOSEST_SYNC, 5000000, 2, 0};
CheckSeekModeCombination(fileTest1, fileTest2);
}
* @tc.number : DEMUXER_CAF_FUNC_2600
* @tc.name : seek to the middle time, previous mode, next mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2600, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_PREVIOUS_SYNC, 0, 158, 0};
seekInfo fileTest2{INP_DIR_1, SEEK_MODE_NEXT_SYNC, 4990000, 3, 0};
CheckSeekModeCombination(fileTest1, fileTest2);
}
* @tc.number : DEMUXER_CAF_FUNC_2700
* @tc.name : seek to the middle time, closest mode, next mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2700, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_CLOSEST_SYNC, 4990000, 3, 0};
seekInfo fileTest2{INP_DIR_1, SEEK_MODE_NEXT_SYNC, 4990000, 3, 0};
CheckSeekModeCombination(fileTest1, fileTest2);
}
* @tc.number : DEMUXER_CAF_FUNC_2800
* @tc.name : demuxer_damaged_caf_file
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2800, TestSize.Level2)
{
const char *file = INP_DIR_2;
g_fd = open(file, O_RDONLY);
int64_t size = GetFileSize(file);
cout << file << "----------------------" << g_fd << "---------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_EQ(source, nullptr);
close(g_fd);
g_fd = -1;
}
* @tc.number : DEMUXER_CAF_FUNC_2900
* @tc.name : seek to a invalid time, closest mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_2900, TestSize.Level2)
{
const char *file = INP_DIR_1;
srand(time(nullptr));
g_fd = open(file, O_RDONLY);
int64_t size = GetFileSize(file);
cout << file << "----------------------" << g_fd << "---------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, 0));
ASSERT_NE(demuxer, nullptr);
int64_t invalidPts = 12000 * 16666;
ret = OH_AVDemuxer_SeekToTime(demuxer, invalidPts, SEEK_MODE_CLOSEST_SYNC);
ASSERT_NE(ret, AV_ERR_OK);
close(g_fd);
g_fd = -1;
}
* @tc.number : DEMUXER_CAF_FUNC_3000
* @tc.name : remove track before add track
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3000, TestSize.Level2)
{
const char *file = INP_DIR_1;
srand(time(nullptr));
g_fd = open(file, O_RDONLY);
int64_t size = GetFileSize(file);
cout << file << "----------------------" << g_fd << "---------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_NE(demuxer, nullptr);
ret = OH_AVDemuxer_UnselectTrackByID(demuxer, 0);
ASSERT_EQ(ret, AV_ERR_OK);
ret = OH_AVDemuxer_SelectTrackByID(demuxer, 0);
ASSERT_EQ(ret, AV_ERR_OK);
close(g_fd);
g_fd = -1;
}
* @tc.number : DEMUXER_CAF_FUNC_3100
* @tc.name : remove all tracks before demux finish
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3100, TestSize.Level2)
{
OH_AVCodecBufferAttr attr;
const char *file = INP_DIR_1;
bool isEnd = false;
int count = 0;
g_fd = open(file, O_RDONLY);
int64_t size = GetFileSize(file);
cout << file << "----------------------" << g_fd << "---------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_NE(demuxer, nullptr);
sourceFormat = OH_AVSource_GetSourceFormat(source);
ASSERT_TRUE(OH_AVFormat_GetIntValue(sourceFormat, OH_MD_KEY_TRACK_COUNT, &g_trackCount));
ASSERT_EQ(g_trackCount, ONE);
for (int32_t index = 0; index < g_trackCount; index++) {
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_SelectTrackByID(demuxer, index));
}
srand(time(nullptr));
int pos = rand() % 250;
cout << " pos= " << pos << endl;
while (!isEnd) {
for (int32_t index = 0; index < g_trackCount; index++) {
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_ReadSample(demuxer, index, memory, &attr));
if (count == pos) {
cout << count << " count == pos!!!!!!!!!" << endl;
ASSERT_EQ(AV_ERR_OK, OH_AVDemuxer_UnselectTrackByID(demuxer, 0));
ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, OH_AVDemuxer_ReadSample(demuxer, index, memory, &attr));
isEnd = true;
break;
}
if (attr.flags & OH_AVCodecBufferFlags::AVCODEC_BUFFER_FLAGS_EOS) {
isEnd = true;
cout << "is end !!!!!!!!!!!!!!!" << endl;
}
if (index == MEDIA_TYPE_AUD) {
count++;
}
}
}
close(g_fd);
g_fd = -1;
}
* @tc.number : DEMUXER_CAF_FUNC_3200
* @tc.name : start demux before add track
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3200, TestSize.Level2)
{
uint32_t trackIndex = 0;
OH_AVCodecBufferAttr attr;
const char *file = INP_DIR_1;
srand(time(nullptr));
g_fd = open(file, O_RDONLY);
int64_t size = GetFileSize(file);
cout << file << "----------------------" << g_fd << "---------" << size << endl;
source = OH_AVSource_CreateWithFD(g_fd, 0, size);
ASSERT_NE(source, nullptr);
demuxer = OH_AVDemuxer_CreateWithSource(source);
ASSERT_NE(demuxer, nullptr);
ret = OH_AVDemuxer_ReadSample(demuxer, trackIndex, memory, &attr);
ASSERT_EQ(ret, AV_ERR_OPERATE_NOT_PERMIT);
close(g_fd);
g_fd = -1;
}
* @tc.number : DEMUXER_CAF_FUNC_3300
* @tc.name : create_source_with_fd_adpcm_ima_wav_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3300, TestSize.Level2)
{
DemuxerResult(INP_DIR_3, 119, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_3400
* @tc.name : create_source_with_fd_adpcm_ms_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3400, TestSize.Level2)
{
DemuxerResult(INP_DIR_4, 119, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_3500
* @tc.name : create_source_with_fd_alac_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3500, TestSize.Level2)
{
DemuxerResult(INP_DIR_5, 60, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_3600
* @tc.name : create_source_with_fd_amr_nb_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3600, TestSize.Level2)
{
DemuxerResult(INP_DIR_6, 253, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_3700
* @tc.name : create_source_with_fd_flac_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3700, TestSize.Level2)
{
DemuxerResult(INP_DIR_7, 53, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_3800
* @tc.name : create_source_with_fd_gsm_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3800, TestSize.Level2)
{
DemuxerResult(INP_DIR_8, 252, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_3900
* @tc.name : create_source_with_fd_gsm_ms_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_3900, TestSize.Level2)
{
DemuxerResult(INP_DIR_9, 126, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4000
* @tc.name : create_source_with_fd_ilbc_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4000, TestSize.Level2)
{
DemuxerResult(INP_DIR_10, 252, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4100
* @tc.name : create_source_with_fd_mp2_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4100, TestSize.Level2)
{
DemuxerResult(INP_DIR_11, 210, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4200
* @tc.name : create_source_with_fd_mp3_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4200, TestSize.Level2)
{
DemuxerResult(INP_DIR_12, 210, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4300
* @tc.name : create_source_with_fd_opus_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4300, TestSize.Level2)
{
DemuxerResult(INP_DIR_13, 253, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4400
* @tc.name : create_source_with_fd_pcm_alaw_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4400, TestSize.Level2)
{
DemuxerResult(INP_DIR_14, 60, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4500
* @tc.name : create_source_with_fd_pcm_mulaw_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4500, TestSize.Level2)
{
DemuxerResult(INP_DIR_15, 10, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4600
* @tc.name : create_source_with_fd_pcm_s16be_caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4600, TestSize.Level2)
{
DemuxerResult(INP_DIR_16, 119, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4700
* @tc.name : create source with caf_adpcm_ima_qt, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4700, TestSize.Level2)
{
DemuxerResult(INP_DIR_17, 3750, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4800
* @tc.name : create source with caf_pcm_f32be, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4800, TestSize.Level2)
{
DemuxerResult(INP_DIR_18, 235, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_4900
* @tc.name : create source with caf_pcm_f32le, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_4900, TestSize.Level2)
{
DemuxerResult(INP_DIR_19, 235, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_5000
* @tc.name : create source with caf_pcm_f64be, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5000, TestSize.Level2)
{
DemuxerResult(INP_DIR_20, 469, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_5100
* @tc.name : create source with caf_pcm_f64le, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5100, TestSize.Level2)
{
DemuxerResult(INP_DIR_21, 469, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_5200
* @tc.name : create source with caf_pcm_s8, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5200, TestSize.Level2)
{
DemuxerResult(INP_DIR_22, 59, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_5300
* @tc.name : create source with caf_pcm_s16le, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5300, TestSize.Level2)
{
DemuxerResult(INP_DIR_23, 118, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_5400
* @tc.name : seek to the middle time, previous mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5400, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_PREVIOUS_SYNC, 4990000, 3, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_5500
* @tc.name : seek to the middle time, next mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5500, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_NEXT_SYNC, 4990000, 3, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_5600
* @tc.name : seek to the middle time, closest mode
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5600, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_1, SEEK_MODE_CLOSEST_SYNC, 4990000, 3, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_5700
* @tc.name : create source with caf_pcm_s24be, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5700, TestSize.Level2)
{
DemuxerResult(INP_DIR_24, 176, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_5800
* @tc.name : create source with caf_pcm_s24le, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5800, TestSize.Level2)
{
DemuxerResult(INP_DIR_25, 176, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_5900
* @tc.name : create source with caf_pcm_s32be, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_5900, TestSize.Level2)
{
DemuxerResult(INP_DIR_26, 235, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_6000
* @tc.name : create source with caf_pcm_s32le, caf
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6000, TestSize.Level2)
{
DemuxerResult(INP_DIR_27, 235, 0);
}
* @tc.number : DEMUXER_CAF_FUNC_6100
* @tc.name : seek_to_middle_time_previous_mode_adpcm_ima_wav
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6100, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_3, SEEK_MODE_PREVIOUS_SYNC, 2500000, 61, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6200
* @tc.name : seek_to_middle_time_next_mode_adpcm_ms
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6200, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_4, SEEK_MODE_NEXT_SYNC, 2500000, 60, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6300
* @tc.name : seek_to_middle_time_closest_mode_alac
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6300, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_5, SEEK_MODE_CLOSEST_SYNC, 2500000, 31, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6400
* @tc.name : seek_to_middle_time_previous_mode_amr_nb
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6400, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_6, SEEK_MODE_PREVIOUS_SYNC, 2500000, 128, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6500
* @tc.name : seek_to_middle_time_next_mode_flac
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6500, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_7, SEEK_MODE_NEXT_SYNC, 2500000, 26, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6600
* @tc.name : seek_to_middle_time_closest_mode_gsm
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6600, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_8, SEEK_MODE_CLOSEST_SYNC, 2500000, 127, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6700
* @tc.name : seek_to_middle_time_previous_mode_gsm_ms
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6700, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_9, SEEK_MODE_PREVIOUS_SYNC, 2500000, 64, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6800
* @tc.name : seek_to_middle_time_next_mode_ilbc
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6800, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_10, SEEK_MODE_NEXT_SYNC, 2500000, 127, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_6900
* @tc.name : seek_to_middle_time_closest_mode_mp2
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_6900, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_11, SEEK_MODE_CLOSEST_SYNC, 2500000, 106, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7000
* @tc.name : seek_to_middle_time_previous_mode_mp3
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7000, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_12, SEEK_MODE_PREVIOUS_SYNC, 2500000, 106, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7100
* @tc.name : seek_to_middle_time_next_mode_opus
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7100, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_13, SEEK_MODE_NEXT_SYNC, 300000, 238, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7200
* @tc.name : seek_to_middle_time_closest_mode_pcm_alaw
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7200, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_14, SEEK_MODE_CLOSEST_SYNC, 2500000, 30, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7300
* @tc.name : seek_to_middle_time_previous_mode_pcm_mulaw
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7300, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_15, SEEK_MODE_PREVIOUS_SYNC, 2500000, 5, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7400
* @tc.name : seek_to_middle_time_next_mode_pcm_s16be
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7400, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_16, SEEK_MODE_NEXT_SYNC, 2500000, 60, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7500
* @tc.name : seek_to_middle_time_closest_mode_caf_adpcm_ima_qt
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7500, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_17, SEEK_MODE_CLOSEST_SYNC, 2500000, 1875, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7600
* @tc.name : seek_to_middle_time_previous_mode_caf_pcm_f32be
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7600, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_18, SEEK_MODE_PREVIOUS_SYNC, 2500000, 118, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7700
* @tc.name : seek_to_middle_time_next_mode_caf_pcm_f32le
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7700, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_19, SEEK_MODE_NEXT_SYNC, 2500000, 118, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7800
* @tc.name : seek_to_middle_time_closest_mode_caf_pcm_f64be
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7800, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_20, SEEK_MODE_CLOSEST_SYNC, 2500000, 235, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_7900
* @tc.name : seek_to_middle_time_previous_mode_caf_pcm_f64le
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_7900, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_21, SEEK_MODE_PREVIOUS_SYNC, 2500000, 235, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_8000
* @tc.name : seek_to_middle_time_next_mode_caf_pcm_s8
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_8000, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_22, SEEK_MODE_NEXT_SYNC, 2500000, 30, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_8100
* @tc.name : seek_to_middle_time_closest_mode_caf_pcm_s16le
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_8100, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_23, SEEK_MODE_CLOSEST_SYNC, 2500000, 59, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_8200
* @tc.name : seek_to_middle_time_previous_mode_caf_pcm_s24be
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_8200, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_24, SEEK_MODE_PREVIOUS_SYNC, 2500000, 88, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_8300
* @tc.name : seek_to_middle_time_next_mode_caf_pcm_s24le
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_8300, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_25, SEEK_MODE_NEXT_SYNC, 2500000, 88, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_8400
* @tc.name : seek_to_middle_time_closest_mode_caf_pcm_s32be
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_8400, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_26, SEEK_MODE_CLOSEST_SYNC, 2500000, 118, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_FUNC_8500
* @tc.name : seek_to_middle_time_previous_mode_caf_pcm_s32le
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_FUNC_8500, TestSize.Level1)
{
seekInfo fileTest1{INP_DIR_27, SEEK_MODE_PREVIOUS_SYNC, 2500000, 118, 0};
CheckSeekMode(fileTest1);
}
* @tc.number : DEMUXER_CAF_ILLEGAL_PARA_0100
* @tc.name : input invalid wma uri file
* @tc.desc : function test
*/
HWTEST_F(DemuxerCafFuncNdkTest, DEMUXER_CAF_ILLEGAL_PARA_0100, TestSize.Level2)
{
const char *uri = "http://192.168.3.11:8080/share/invalid.wma";
source = OH_AVSource_CreateWithURI(const_cast<char *>(uri));
ASSERT_EQ(source, nullptr);
}