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