Skip to content

Commit 2426295

Browse files
committed
feat: support no audio flag
1 parent 0abf07d commit 2426295

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

src/args.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ struct Args {
1111
int height = 480;
1212
int rotation_angle = 0;
1313
int sample_rate = 44100;
14+
bool no_audio = false;
1415
bool hw_accel = false;
1516
bool use_libcamera = false;
1617
uint32_t format = V4L2_PIX_FMT_MJPEG;

src/conductor.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
#include <pc/video_track_source_proxy.h>
2121
#include <rtc_base/ssl_adapter.h>
2222

23+
#include "capturer/libcamera_capturer.h"
24+
#include "capturer/v4l2_capturer.h"
2325
#include "common/logging.h"
2426
#include "common/utils.h"
25-
#include "capturer/v4l2_capturer.h"
26-
#include "capturer/libcamera_capturer.h"
2727
#include "customized_video_encoder_factory.h"
2828
#include "track/v4l2dma_track_source.h"
2929

@@ -46,7 +46,7 @@ std::shared_ptr<PaCapturer> Conductor::AudioSource() const { return audio_captur
4646
std::shared_ptr<VideoCapturer> Conductor::VideoSource() const { return video_capture_source_; }
4747

4848
void Conductor::InitializeTracks() {
49-
if (audio_track_ == nullptr) {
49+
if (audio_track_ == nullptr && !args.no_audio) {
5050
audio_capture_source_ = PaCapturer::Create(args);
5151
auto options = peer_connection_factory_->CreateAudioSource(cricket::AudioOptions());
5252
audio_track_ = peer_connection_factory_->CreateAudioTrack("audio_track", options.get());
@@ -280,8 +280,12 @@ void Conductor::InitializePeerConnectionFactory() {
280280
cricket::MediaEngineDependencies media_dependencies;
281281
media_dependencies.task_queue_factory = dependencies.task_queue_factory.get();
282282

283-
media_dependencies.adm = webrtc::AudioDeviceModule::Create(
284-
webrtc::AudioDeviceModule::kLinuxPulseAudio, dependencies.task_queue_factory.get());
283+
webrtc::AudioDeviceModule::AudioLayer audio_layer = webrtc::AudioDeviceModule::kLinuxPulseAudio;
284+
if (args.no_audio) {
285+
audio_layer = webrtc::AudioDeviceModule::kDummyAudio;
286+
}
287+
media_dependencies.adm =
288+
webrtc::AudioDeviceModule::Create(audio_layer, dependencies.task_queue_factory.get());
285289
media_dependencies.audio_encoder_factory = webrtc::CreateBuiltinAudioEncoderFactory();
286290
media_dependencies.audio_decoder_factory = webrtc::CreateBuiltinAudioDecoderFactory();
287291
media_dependencies.audio_processing = webrtc::AudioProcessingBuilder().Create();

src/parser.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ void Parser::ParseArgs(int argc, char *argv[], Args &args) {
1818
"Read the specific camera file via V4L2, default is /dev/video0")(
1919
"use_libcamera", bpo::bool_switch()->default_value(args.use_libcamera),
2020
"Read YUV420 from the camera via libcamera, the `device` and `v4l2_format` flags will be suspended")(
21+
"no_audio", bpo::bool_switch()->default_value(args.no_audio),
22+
"Run without audio source")(
2123
"uid", bpo::value<std::string>()->default_value(args.uid),
2224
"Set the unique id to identify the device")(
2325
"stun_url", bpo::value<std::string>()->default_value(args.stun_url),
@@ -83,6 +85,10 @@ void Parser::ParseArgs(int argc, char *argv[], Args &args) {
8385
}
8486
}
8587

88+
if (vm.count("no_audio")) {
89+
args.no_audio = vm["no_audio"].as<bool>();
90+
}
91+
8692
if (vm.count("uid")) {
8793
args.uid = vm["uid"].as<std::string>();
8894
}

0 commit comments

Comments
 (0)