mirror of
https://gitee.com/openharmony/multimedia_av_codec
synced 2025-02-06 07:47:31 +00:00
解决冲突
Signed-off-by: cailei <cailei24@huawei.com>
This commit is contained in:
parent
aed543404e
commit
f430c3419e
@ -43,5 +43,5 @@ ohos_shared_library("av_codec_plugin_FFmpegMuxer") {
|
|||||||
|
|
||||||
relative_install_dir = "media/av_codec_plugins"
|
relative_install_dir = "media/av_codec_plugins"
|
||||||
subsystem_name = "multimedia"
|
subsystem_name = "multimedia"
|
||||||
part_name = "multimedia_av_codec"
|
part_name = "av_codec"
|
||||||
}
|
}
|
||||||
|
@ -35,14 +35,21 @@ constexpr uint32_t DEFAULT_FRAME_COUNT = 1;
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData) {
|
static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData) {
|
||||||
|
(void)codec;
|
||||||
|
(void)errorCode;
|
||||||
|
(void)userData;
|
||||||
cout << "Error received, errorCode:" << errorCode << endl;
|
cout << "Error received, errorCode:" << errorCode << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData) {
|
static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData) {
|
||||||
|
(void)codec;
|
||||||
|
(void)format;
|
||||||
|
(void)userData;
|
||||||
cout << "OnOutputFormatChanged received" << endl;
|
cout << "OnOutputFormatChanged received" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData) {
|
static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData) {
|
||||||
|
(void)codec;
|
||||||
ADecSignal *signal_ = static_cast<ADecSignal *>(userData);
|
ADecSignal *signal_ = static_cast<ADecSignal *>(userData);
|
||||||
cout << "OnInputBufferAvailable received, index:" << index << endl;
|
cout << "OnInputBufferAvailable received, index:" << index << endl;
|
||||||
unique_lock<mutex> lock(signal_->inMutex_);
|
unique_lock<mutex> lock(signal_->inMutex_);
|
||||||
@ -53,6 +60,7 @@ static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemor
|
|||||||
|
|
||||||
static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr,
|
static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr,
|
||||||
void *userData) {
|
void *userData) {
|
||||||
|
(void)codec;
|
||||||
ADecSignal *signal_ = static_cast<ADecSignal *>(userData);
|
ADecSignal *signal_ = static_cast<ADecSignal *>(userData);
|
||||||
cout << "OnOutputBufferAvailable received, index:" << index << endl;
|
cout << "OnOutputBufferAvailable received, index:" << index << endl;
|
||||||
unique_lock<mutex> lock(signal_->outMutex_);
|
unique_lock<mutex> lock(signal_->outMutex_);
|
||||||
|
@ -35,14 +35,21 @@ constexpr uint32_t DEFAULT_FRAME_COUNT = 1;
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData) {
|
static void OnError(OH_AVCodec *codec, int32_t errorCode, void *userData) {
|
||||||
|
(void)codec;
|
||||||
|
(void)errorCode;
|
||||||
|
(void)userData;
|
||||||
cout << "Error received, errorCode:" << errorCode << endl;
|
cout << "Error received, errorCode:" << errorCode << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData) {
|
static void OnOutputFormatChanged(OH_AVCodec *codec, OH_AVFormat *format, void *userData) {
|
||||||
|
(void)codec;
|
||||||
|
(void)format;
|
||||||
|
(void)userData;
|
||||||
cout << "OnOutputFormatChanged received" << endl;
|
cout << "OnOutputFormatChanged received" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData) {
|
static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData) {
|
||||||
|
(void)codec;
|
||||||
AEncSignal *signal_ = static_cast<AEncSignal *>(userData);
|
AEncSignal *signal_ = static_cast<AEncSignal *>(userData);
|
||||||
cout << "OnInputBufferAvailable received, index:" << index << endl;
|
cout << "OnInputBufferAvailable received, index:" << index << endl;
|
||||||
unique_lock<mutex> lock(signal_->inMutex_);
|
unique_lock<mutex> lock(signal_->inMutex_);
|
||||||
@ -53,6 +60,7 @@ static void OnInputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemor
|
|||||||
|
|
||||||
static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr,
|
static void OnOutputBufferAvailable(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, OH_AVCodecBufferAttr *attr,
|
||||||
void *userData) {
|
void *userData) {
|
||||||
|
(void)codec;
|
||||||
AEncSignal *signal_ = static_cast<AEncSignal *>(userData);
|
AEncSignal *signal_ = static_cast<AEncSignal *>(userData);
|
||||||
cout << "OnOutputBufferAvailable received, index:" << index << endl;
|
cout << "OnOutputBufferAvailable received, index:" << index << endl;
|
||||||
unique_lock<mutex> lock(signal_->outMutex_);
|
unique_lock<mutex> lock(signal_->outMutex_);
|
||||||
|
@ -226,6 +226,7 @@ void ADecDemoCallback::OnError(AVCodecErrorType errorType, int32_t errorCode)
|
|||||||
|
|
||||||
void ADecDemoCallback::OnOutputFormatChanged(const Format &format)
|
void ADecDemoCallback::OnOutputFormatChanged(const Format &format)
|
||||||
{
|
{
|
||||||
|
(void)format;
|
||||||
cout << "OnOutputFormatChanged received" << endl;
|
cout << "OnOutputFormatChanged received" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,6 +240,8 @@ void ADecDemoCallback::OnInputBufferAvailable(uint32_t index)
|
|||||||
|
|
||||||
void ADecDemoCallback::OnOutputBufferAvailable(uint32_t index, AVCodecBufferInfo info, AVCodecBufferFlag flag)
|
void ADecDemoCallback::OnOutputBufferAvailable(uint32_t index, AVCodecBufferInfo info, AVCodecBufferFlag flag)
|
||||||
{
|
{
|
||||||
|
(void)info;
|
||||||
|
(void)flag;
|
||||||
cout << "OnOutputBufferAvailable received, index:" << index << endl;
|
cout << "OnOutputBufferAvailable received, index:" << index << endl;
|
||||||
unique_lock<mutex> lock(signal_->outMutex_);
|
unique_lock<mutex> lock(signal_->outMutex_);
|
||||||
signal_->outQueue_.push(index);
|
signal_->outQueue_.push(index);
|
||||||
|
@ -15,16 +15,88 @@
|
|||||||
|
|
||||||
#include <climits>
|
#include <climits>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <thread>
|
||||||
|
#include <vector>
|
||||||
|
#include "avmuxer_demo.h"
|
||||||
|
#include "avmuxer_ffmpeg_demo.h"
|
||||||
|
#include "avmuxer_engine_demo.h"
|
||||||
#include "avcodec_audio_encoder_inner_demo.h"
|
#include "avcodec_audio_encoder_inner_demo.h"
|
||||||
#include "avcodec_audio_decoder_demo.h"
|
#include "avcodec_audio_decoder_demo.h"
|
||||||
#include "avcodec_audio_encoder_demo.h"
|
#include "avcodec_audio_encoder_demo.h"
|
||||||
|
|
||||||
using namespace OHOS;
|
using namespace OHOS;
|
||||||
using namespace OHOS::Media;
|
using namespace OHOS::Media;
|
||||||
|
using namespace OHOS::Media::Plugin;
|
||||||
using namespace OHOS::Media::AudioDemo;
|
using namespace OHOS::Media::AudioDemo;
|
||||||
using namespace OHOS::Media::InnerAudioDemo;
|
using namespace OHOS::Media::InnerAudioDemo;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
constexpr int RUN_TIME = 600;
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
extern int NativeSelectMode();
|
||||||
|
extern int RunNativeMuxer(const char *out);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int RunLoopNativeMuxer(string out)
|
||||||
|
{
|
||||||
|
time_t startTime = time(NULL);
|
||||||
|
time_t curTime = time(NULL);
|
||||||
|
while (difftime(curTime, startTime) < RUN_TIME) {
|
||||||
|
RunNativeMuxer(out.c_str());
|
||||||
|
time(&curTime);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int RunAVMuxer()
|
||||||
|
{
|
||||||
|
auto avmuxer = std::make_unique<AVMuxerDemo>();
|
||||||
|
if (avmuxer == nullptr) {
|
||||||
|
cout << "avmuxer is null" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
avmuxer->RunCase();
|
||||||
|
cout << "demo avmuxer end" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int RunAVMuxerWithMultithread()
|
||||||
|
{
|
||||||
|
auto avmuxer = std::make_unique<AVMuxerDemo>();
|
||||||
|
if (avmuxer == nullptr) {
|
||||||
|
cout << "avmuxer is null" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
avmuxer->RunMultiThreadCase();
|
||||||
|
cout << "demo multi thread avmuxer end" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int RunFfmpegMuxer()
|
||||||
|
{
|
||||||
|
std::unique_ptr<AVMuxerDemoBase> ffmpegMuxer = std::make_unique<AVMuxerFFmpegDemo>();
|
||||||
|
if (ffmpegMuxer == nullptr) {
|
||||||
|
cout << "ffmpegMuxer is null" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
ffmpegMuxer->RunCase();
|
||||||
|
cout << "demo ffmpegMuxer end" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int RunEngineMuxer()
|
||||||
|
{
|
||||||
|
std::unique_ptr<AVMuxerDemoBase> muxer = std::make_unique<AVMuxerEngineDemo>();
|
||||||
|
if (muxer == nullptr) {
|
||||||
|
cout << "AVMuxerEngineDemo is null" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
muxer->RunCase();
|
||||||
|
cout << "demo engine demo end" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int RunAudioDecoder()
|
static int RunAudioDecoder()
|
||||||
{
|
{
|
||||||
auto audioEnc = std::make_unique<ADecDemo>();
|
auto audioEnc = std::make_unique<ADecDemo>();
|
||||||
@ -85,6 +157,13 @@ int main(int argc, char *argv[])
|
|||||||
cout << "1:Audio Encoder" << endl;
|
cout << "1:Audio Encoder" << endl;
|
||||||
cout << "2:Audio Inner Decoder" << endl;
|
cout << "2:Audio Inner Decoder" << endl;
|
||||||
cout << "3:Audio Inner Encoder" << endl;
|
cout << "3:Audio Inner Encoder" << endl;
|
||||||
|
cout << "4:native_muxer" << endl;
|
||||||
|
cout << "5:native_muxer loop" << endl;
|
||||||
|
cout << "6:native_muxer multithread" << endl;
|
||||||
|
cout << "7:inner_muxer" << endl;
|
||||||
|
cout << "8:inner_muxer with multithread write" << endl;
|
||||||
|
cout << "9:ffmpeg_muxer" << endl;
|
||||||
|
cout << "10:engine_muxer" << endl;
|
||||||
|
|
||||||
string mode;
|
string mode;
|
||||||
(void)getline(cin, mode);
|
(void)getline(cin, mode);
|
||||||
@ -96,7 +175,32 @@ int main(int argc, char *argv[])
|
|||||||
(void)RunAudioInnerDecoder();
|
(void)RunAudioInnerDecoder();
|
||||||
} else if (mode == "3") {
|
} else if (mode == "3") {
|
||||||
(void)RunAudioInnerEncoder();
|
(void)RunAudioInnerEncoder();
|
||||||
} else {
|
} else if (mode == "4") {
|
||||||
|
NativeSelectMode();
|
||||||
|
RunNativeMuxer("native_mux");
|
||||||
|
} else if (mode == "5") {
|
||||||
|
NativeSelectMode();
|
||||||
|
RunLoopNativeMuxer("loop_native_mux");
|
||||||
|
} else if (mode == "6") {
|
||||||
|
NativeSelectMode();
|
||||||
|
vector<thread> vecThread;
|
||||||
|
for (int i = 0; i < 10; ++i) {
|
||||||
|
string out = to_string(i + 1);
|
||||||
|
out += "_native_mux";
|
||||||
|
vecThread.push_back(thread(RunLoopNativeMuxer, out));
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 10; ++i) {
|
||||||
|
vecThread[i].join();
|
||||||
|
}
|
||||||
|
} else if (mode == "7") {
|
||||||
|
RunAVMuxer();
|
||||||
|
} else if (mode == "8") {
|
||||||
|
RunAVMuxerWithMultithread();
|
||||||
|
} else if (mode == "9") {
|
||||||
|
RunFfmpegMuxer();
|
||||||
|
} else if (mode == "10") {
|
||||||
|
RunEngineMuxer();
|
||||||
|
} else {
|
||||||
cout << "no that selection" << endl;
|
cout << "no that selection" << endl;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -60,7 +60,7 @@ ohos_unittest("av_muxer_unit_test") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
external_deps = [
|
external_deps = [
|
||||||
"multimedia_av_codec:av_codec_client",
|
"av_codec:av_codec_client",
|
||||||
]
|
]
|
||||||
|
|
||||||
resource_config_file = "$AV_CODE_ROOT_DIR/test/unittest/ohos_test.xml"
|
resource_config_file = "$AV_CODE_ROOT_DIR/test/unittest/ohos_test.xml"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user