Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Xts Acts
提交
daef763c
X
Xts Acts
项目概览
OpenHarmony
/
Xts Acts
1 年多 前同步成功
通知
9
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
Xts Acts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
daef763c
编写于
8月 26, 2022
作者:
O
openharmony_ci
提交者:
Gitee
8月 26, 2022
浏览文件
操作
浏览文件
下载
差异文件
!5204 新增ndk接口视频编解码测试封装函数
Merge pull request !5204 from ling990/ling990
上级
3f6d31d4
259f7e77
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
952 addition
and
0 deletion
+952
-0
multimedia/media/media_cpp_standard/videoDecEncNdk/include/ActsVideoDecEncNdkTest.h
..._standard/videoDecEncNdk/include/ActsVideoDecEncNdkTest.h
+49
-0
multimedia/media/media_cpp_standard/videoDecEncNdk/include/VDecEncNdkSample.h
...ia_cpp_standard/videoDecEncNdk/include/VDecEncNdkSample.h
+139
-0
multimedia/media/media_cpp_standard/videoDecEncNdk/src/VDecEncNdkSample.cpp
...edia_cpp_standard/videoDecEncNdk/src/VDecEncNdkSample.cpp
+764
-0
未找到文件。
multimedia/media/media_cpp_standard/videoDecEncNdk/include/ActsVideoDecEncNdkTest.h
0 → 100644
浏览文件 @
daef763c
/*
* 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.
*/
#ifndef ACTSVIDEODECENC_NDK_FUNC_TEST_H
#define ACTSVIDEODECENC_NDK_FUNC_TEST_H
#include "gtest/gtest.h"
#include "VDecEncNdkSample.h"
namespace
OHOS
{
namespace
Media
{
class
ActsVideoDecEncNdkTest
:
public
testing
::
Test
{
public:
// Preset action of the test suite, which is executed before the first test case
static
void
SetUpTestCase
(
void
)
{
printf
(
"ActsVideoDecEncNdkTest::SetUpTestCase"
);
}
// Test suite cleanup action, which is executed after the last test case
static
void
TearDownTestCase
(
void
)
{
printf
(
"ActsVideoDecEncNdkTest::TearDownTestCase"
);
}
// Preset action of the test case
void
SetUp
(
void
)
{
printf
(
"ActsVideoDecEncNdkTest::SetUp"
);
}
// Cleanup action of the test case
virtual
void
TearDown
(
void
)
{
printf
(
"ActsVideoDecEncNdkTest::TearDown"
);
}
};
}
}
#endif // ACTSVIDEODECENC_NDK_FUNC_TEST_H
multimedia/media/media_cpp_standard/videoDecEncNdk/include/VDecEncNdkSample.h
0 → 100644
浏览文件 @
daef763c
/*
* 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.
*/
#ifndef VIDEODECENC_NDK_SAMPLE_H
#define VIDEODECENC_NDK_SAMPLE_H
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <atomic>
#include <fstream>
#include <thread>
#include <mutex>
#include <queue>
#include <string>
#include "securec.h"
#include "nocopyable.h"
#include "ndktest_log.h"
#include "native_avmagic.h"
#include "surface.h"
#include "native_avcodec_videodecoder.h"
#include "native_avcodec_videoencoder.h"
namespace
OHOS
{
namespace
Media
{
class
VDecEncSignal
{
public:
std
::
mutex
inMutexDec_
;
std
::
mutex
outMutexDec_
;
std
::
condition_variable
inCondDec_
;
std
::
condition_variable
outCondDec_
;
std
::
queue
<
uint32_t
>
inQueueDec_
;
std
::
queue
<
uint32_t
>
outQueueDec_
;
std
::
queue
<
uint32_t
>
flagQueueDec_
;
std
::
queue
<
OH_AVMemory
*>
inBufferQueueDec_
;
std
::
queue
<
OH_AVMemory
*>
outBufferQueueDec_
;
std
::
mutex
outMutexEnc_
;
std
::
condition_variable
outCondEnc_
;
std
::
queue
<
uint32_t
>
inQueueEnc_
;
std
::
queue
<
uint32_t
>
outQueueEnc_
;
std
::
queue
<
uint32_t
>
sizeQueueEnc_
;
std
::
queue
<
uint32_t
>
flagQueueEnc_
;
std
::
queue
<
OH_AVMemory
*>
inBufferQueueEnc_
;
std
::
queue
<
OH_AVMemory
*>
outBufferQueueEnc_
;
int32_t
errorNum_
=
0
;
std
::
atomic
<
bool
>
isVdecFlushing_
=
false
;
std
::
atomic
<
bool
>
isVencFlushing_
=
false
;
};
class
VDecEncNdkSample
:
public
NoCopyable
{
public:
VDecEncNdkSample
()
=
default
;
~
VDecEncNdkSample
();
void
SetEosState
(
bool
needSetEos
);
struct
OH_AVCodec
*
CreateVideoDecoderByMime
(
std
::
string
mimetype
);
struct
OH_AVCodec
*
CreateVideoDecoderByName
(
std
::
string
name
);
int32_t
ConfigureDec
(
struct
OH_AVFormat
*
format
);
int32_t
SetOutputSurface
();
int32_t
PrepareDec
();
int32_t
StartDec
();
int32_t
StopDec
();
int32_t
FlushDec
();
int32_t
ResetDec
();
int32_t
ReleaseDec
();
struct
OH_AVCodec
*
CreateVideoEncoderByMime
(
std
::
string
mimetype
);
struct
OH_AVCodec
*
CreateVideoEncoderByName
(
std
::
string
name
);
int32_t
ConfigureEnc
(
struct
OH_AVFormat
*
format
);
int32_t
GetSurface
();
int32_t
PrepareEnc
();
int32_t
StartEnc
();
int32_t
StopEnc
();
int32_t
FlushEnc
();
int32_t
ResetEnc
();
int32_t
ReleaseEnc
();
int32_t
CalcuError
();
void
SetReadPath
(
std
::
string
filepath
);
void
SetSavePath
(
std
::
string
filepath
);
void
ReRead
();
void
ResetDecParam
();
void
ResetEncParam
();
int32_t
GetFrameCount
();
bool
GetEncEosState
();
bool
GetDecEosState
();
void
PopInqueueDec
();
void
PopOutqueueDec
();
void
PopOutqueueEnc
();
void
SendEncEos
();
int32_t
PushInbufferDec
(
uint32_t
index
,
uint32_t
bufferSize
);
VDecEncSignal
*
vcodecSignal_
=
nullptr
;
bool
isDecInputEOS
=
false
;
bool
isEncInputEOS
=
false
;
bool
isDecOutputEOS
=
false
;
bool
isEncOutputEOS
=
false
;
bool
setEos
=
true
;
private:
OHNativeWindow
*
nativeWindow_
;
struct
OH_AVCodec
*
vdec_
;
void
InputFuncDec
();
void
OutputFuncDec
();
int32_t
WriteToFile
();
std
::
atomic
<
bool
>
isDecRunning_
=
false
;
std
::
unique_ptr
<
std
::
ifstream
>
testFile_
;
std
::
unique_ptr
<
std
::
thread
>
inputLoopDec_
;
std
::
unique_ptr
<
std
::
thread
>
outputLoopDec_
;
struct
OH_AVCodecAsyncCallback
cbDec_
;
int64_t
timeStampDec_
=
0
;
uint32_t
decInCnt_
=
0
;
uint32_t
decOutCnt_
=
0
;
struct
OH_AVCodec
*
venc_
;
void
OutputFuncEnc
();
std
::
atomic
<
bool
>
isEncRunning_
=
false
;
std
::
unique_ptr
<
std
::
thread
>
outputLoopEnc_
;
struct
OH_AVCodecAsyncCallback
cbEnc_
;
bool
isFirstDecFrame_
=
true
;
uint32_t
encOutCnt_
=
0
;
std
::
string
inFile_
=
"/data/media/out_320_240_10s.h264"
;
std
::
string
outFile_
=
"/data/media/video_out.es"
;
};
}
}
#endif // VIDEODECENC_NDK_SAMPLE_H
multimedia/media/media_cpp_standard/videoDecEncNdk/src/VDecEncNdkSample.cpp
0 → 100644
浏览文件 @
daef763c
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录