diff --git a/src/media/audio/audio_input.cpp b/src/media/audio/audio_input.cpp index 592268544390e17edc16277f3eaa6fa2730bbaec..f0e2e63f0e58aca1fd40e5e1388af16086aae01c 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 efdd1274598392e729793d27354638e402079986..8baecb17317ec67d69dd728fceb6d508fe1dd863 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 b01d9f73d4f9daa869ab5919aa0220aae7c0b7ff..bfd12b56d2bdeca0c9bf1ae959a6b8ae4d8378df 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 8ee6b6a93b5bb0b0749dad1a655c4d8b960fd702..11f3068c043206beed9e956accdbf10a118d0275 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 589fc74a2ed3c67118c71ab8456c007de0dc095b..54c1550e794dcfd4a88a5df961b0e39b2261b1b4 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 61ace8c1ff298d1ab51d045d6eb629216cecf20a..620f490cbee0ebfa3f3184a92c083814bf7f6a2b 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 1ccfc544f81c28f11c1996ad8790fcc2ce71d3d9..ada09a26b21f5d0aeed23c56eb1b0098424206df 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 174fc09274a5b7cac15afbf76047dc7c02a788b7..389215949dfcc734ce12c58a5ce5a7855772e015 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 7641f4627cfd6b6c20d0c60f8b30970bb93eb86d..1eda2d3912778c481857ae7d7970ad3eff950a85 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: