From ec03a19e85439435a896e234f2af7874484dfb18 Mon Sep 17 00:00:00 2001 From: philippegorley <philippe.gorley@savoirfairelinux.com> Date: Mon, 3 Dec 2018 10:53:49 -0500 Subject: [PATCH] audio: add ability to get stream information Changes name from getStream to getInfo. Change-Id: I17b2eedb03dd707146b30062e755c5cd80c559fb --- src/media/audio/audio_input.cpp | 8 ++++++++ src/media/audio/audio_input.h | 4 +++- src/media/audio/audio_receive_thread.cpp | 6 ++++++ src/media/audio/audio_receive_thread.h | 4 ++++ src/media/media_recorder.cpp | 4 ++-- src/media/video/video_input.cpp | 2 +- src/media/video/video_input.h | 2 +- src/media/video/video_receive_thread.cpp | 2 +- src/media/video/video_receive_thread.h | 2 +- 9 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/media/audio/audio_input.cpp b/src/media/audio/audio_input.cpp index 5922685443..f0e2e63f0e 100644 --- a/src/media/audio/audio_input.cpp +++ b/src/media/audio/audio_input.cpp @@ -188,4 +188,12 @@ AudioInput::setMuted(bool isMuted) muteState_ = isMuted; } +MediaStream +AudioInput::getInfo() const +{ + std::lock_guard<std::mutex> lk(fmtMutex_); + auto ms = MediaStream("a:local", format_, sent_samples); + return ms; +} + } // namespace ring diff --git a/src/media/audio/audio_input.h b/src/media/audio/audio_input.h index efdd127459..8baecb1731 100644 --- a/src/media/audio/audio_input.h +++ b/src/media/audio/audio_input.h @@ -33,6 +33,7 @@ namespace ring { +struct MediaStream; class Resampler; class AudioInput : public Observable<std::shared_ptr<AudioFrame>> @@ -46,6 +47,7 @@ public: bool isCapturing() const { return loop_.isRunning(); } void setFormat(const AudioFormat& fmt); void setMuted(bool isMuted); + MediaStream getInfo() const; private: bool nextFromDevice(AudioFrame& frame); @@ -55,7 +57,7 @@ private: AudioBuffer micData_; bool muteState_ = false; uint64_t sent_samples = 0; - std::mutex fmtMutex_ {}; + mutable std::mutex fmtMutex_ {}; AudioFormat format_; std::unique_ptr<Resampler> resampler_; diff --git a/src/media/audio/audio_receive_thread.cpp b/src/media/audio/audio_receive_thread.cpp index b01d9f73d4..bfd12b56d2 100644 --- a/src/media/audio/audio_receive_thread.cpp +++ b/src/media/audio/audio_receive_thread.cpp @@ -150,6 +150,12 @@ AudioReceiveThread::addIOContext(SocketPair& socketPair) demuxContext_.reset(socketPair.createIOContext(mtu_)); } +MediaStream +AudioReceiveThread::getInfo() const +{ + return audioDecoder_->getStream("a:remote"); +} + void AudioReceiveThread::startLoop() { diff --git a/src/media/audio/audio_receive_thread.h b/src/media/audio/audio_receive_thread.h index 8ee6b6a93b..11f3068c04 100644 --- a/src/media/audio/audio_receive_thread.h +++ b/src/media/audio/audio_receive_thread.h @@ -33,6 +33,7 @@ namespace ring { class MediaDecoder; class MediaIOHandle; +struct MediaStream; class RingBuffer; class AudioReceiveThread : public Observable<std::shared_ptr<AudioFrame>> @@ -43,6 +44,9 @@ public: const std::string& sdp, const uint16_t mtu); ~AudioReceiveThread(); + + MediaStream getInfo() const; + void addIOContext(SocketPair &socketPair); void startLoop(); diff --git a/src/media/media_recorder.cpp b/src/media/media_recorder.cpp index 589fc74a2e..54c1550e79 100644 --- a/src/media/media_recorder.cpp +++ b/src/media/media_recorder.cpp @@ -201,9 +201,9 @@ void MediaRecorder::update(Observable<std::shared_ptr<VideoFrame>>* ob, const st { MediaStream ms; if (auto receiver = dynamic_cast<video::VideoReceiveThread*>(ob)) { - ms = receiver->getStream(); + ms = receiver->getInfo(); } else if (auto input = dynamic_cast<video::VideoInput*>(ob)) { - ms = input->getStream(); + ms = input->getInfo(); } ms.firstTimestamp = v->pointer()->pts; recordData(v->pointer(), ms); diff --git a/src/media/video/video_input.cpp b/src/media/video/video_input.cpp index 61ace8c1ff..620f490cbe 100644 --- a/src/media/video/video_input.cpp +++ b/src/media/video/video_input.cpp @@ -607,7 +607,7 @@ DeviceParams VideoInput::getParams() const { return decOpts_; } MediaStream -VideoInput::getStream() const +VideoInput::getInfo() const { return decoder_->getStream("v:local"); } diff --git a/src/media/video/video_input.h b/src/media/video/video_input.h index 1ccfc544f8..ada09a26b2 100644 --- a/src/media/video/video_input.h +++ b/src/media/video/video_input.h @@ -78,7 +78,7 @@ public: int getHeight() const; int getPixelFormat() const; DeviceParams getParams() const; - MediaStream getStream() const; + MediaStream getInfo() const; std::shared_future<DeviceParams> switchInput(const std::string& resource); #if defined(__ANDROID__) || defined(RING_UWP) || (defined(TARGET_OS_IOS) && TARGET_OS_IOS) diff --git a/src/media/video/video_receive_thread.cpp b/src/media/video/video_receive_thread.cpp index 174fc09274..389215949d 100644 --- a/src/media/video/video_receive_thread.cpp +++ b/src/media/video/video_receive_thread.cpp @@ -247,7 +247,7 @@ int VideoReceiveThread::getPixelFormat() const { return videoDecoder_->getPixelFormat(); } MediaStream -VideoReceiveThread::getStream() const +VideoReceiveThread::getInfo() const { return videoDecoder_->getStream("v:remote"); } diff --git a/src/media/video/video_receive_thread.h b/src/media/video/video_receive_thread.h index 7641f4627c..1eda2d3912 100644 --- a/src/media/video/video_receive_thread.h +++ b/src/media/video/video_receive_thread.h @@ -60,7 +60,7 @@ public: int getWidth() const; int getHeight() const; int getPixelFormat() const; - MediaStream getStream() const; + MediaStream getInfo() const; void triggerKeyFrameRequest(); private: -- GitLab