From 08f37f1b6679a017e749bfd746e66126addc27e1 Mon Sep 17 00:00:00 2001 From: starfish002 Date: Thu, 20 Jan 2022 20:53:37 +0800 Subject: [PATCH] add audio capture service Signed-off-by: starfish002 --- media/BUILD.gn | 19 +++++++++++++++++++ media/audio_capture_sample.cpp | 7 +++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/media/BUILD.gn b/media/BUILD.gn index 01f99e1..65f1e69 100755 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -29,6 +29,24 @@ executable("camera_sample") { output_dir = "$root_out_dir/dev_tools" } +executable("audio_capture_sample") { + sources = [ "audio_capture_sample.cpp" ] + cflags = [ "-Wall" ] + cflags_cc = cflags + + include_dirs = [ "//foundation/multimedia/audio_lite/interfaces/kits" ] + include_dirs += [ "//foundation/multimedia/utils/lite/interfaces/kits" ] + + ldflags = [ "-lstdc++" ] + ldflags += [ "-lpthread" ] + ldflags += [ "-Wl,-rpath-link=$ohos_root_path/$root_out_dir" ] + deps = [ + "//foundation/multimedia/audio_lite/frameworks:audio_capturer_lite", + "//third_party/bounds_checking_function:libsec_shared", + ] + output_dir = "$root_out_dir/dev_tools" +} + executable("player_sample") { sources = [ "player_sample.cpp" ] cflags = [ "-Wall" ] @@ -48,5 +66,6 @@ lite_component("media_sample") { features = [ ":camera_sample", ":player_sample", + ":audio_capture_sample", ] } diff --git a/media/audio_capture_sample.cpp b/media/audio_capture_sample.cpp index 6d32140..06e8072 100644 --- a/media/audio_capture_sample.cpp +++ b/media/audio_capture_sample.cpp @@ -15,8 +15,9 @@ #include #include -#include #include +#include +#include #include "audio_capturer.h" #include "media_errors.h" #include "securec.h" @@ -93,6 +94,7 @@ static char *GernerateFileName(AudioCodecFormat format) static void AudioInputSourceProcess(AudioSourceInput *audioSourceInput) { + const int32_t waitTimeUs = 20000; std::cout << "audioSourceInput: " << audioSourceInput << std::endl; if (audioSourceInput == nullptr) { return; @@ -114,8 +116,9 @@ static void AudioInputSourceProcess(AudioSourceInput *audioSourceInput) while (audioSourceInput->bThreadRun) { int ret = audioSourceInput->audioCap->Read(audioSourceInput->buffer, audioSourceInput->framesize, false); - if (ret == -1) { + if (ret <= 0) { std::cout << "audioCap Read failed ret:" << ret << std::endl; + usleep(waitTimeUs); continue; } if (fwrite(audioSourceInput->buffer, 1, ret, pfd) != ret) { -- Gitee