From ba8e1cf45af09364444754ee5cb9fc3d4287eb09 Mon Sep 17 00:00:00 2001 From: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> Date: Tue, 15 Oct 2019 12:09:20 -0400 Subject: [PATCH] conference macOS: use previously selected format Change-Id: If84669cd16bd912ed0db92c50252159db43b95a3 --- src/media/video/video_mixer.cpp | 7 ++++--- src/media/video/video_mixer.h | 3 ++- src/media/video/video_rtp_session.cpp | 10 +++++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/media/video/video_mixer.cpp b/src/media/video/video_mixer.cpp index 2445ed3aca..d9342308fa 100644 --- a/src/media/video/video_mixer.cpp +++ b/src/media/video/video_mixer.cpp @@ -142,7 +142,7 @@ VideoMixer::process() VideoFrame& output = getNewFrame(); try { - output.reserve(AV_PIX_FMT_YUV422P, width_, height_); + output.reserve(format_, width_, height_); } catch (const std::bad_alloc& e) { JAMI_ERR("VideoFrame::allocBuffer() failed"); return; @@ -217,12 +217,13 @@ VideoMixer::render_frame(VideoFrame& output, const VideoFrame& input, } void -VideoMixer::setDimensions(int width, int height) +VideoMixer::setParameters(int width, int height, AVPixelFormat format) { auto lock(rwMutex_.write()); width_ = width; height_ = height; + format_ = format; // cleanup the previous frame to have a nice copy in rendering method std::shared_ptr<VideoFrame> previous_p(obtainLastFrame()); @@ -268,6 +269,6 @@ VideoMixer::getHeight() const AVPixelFormat VideoMixer::getPixelFormat() const -{ return AV_PIX_FMT_YUYV422; } +{ return format_; } }} // namespace jami::video diff --git a/src/media/video/video_mixer.h b/src/media/video/video_mixer.h index 056c472f20..db32f777f6 100644 --- a/src/media/video/video_mixer.h +++ b/src/media/video/video_mixer.h @@ -43,7 +43,7 @@ public: VideoMixer(const std::string& id); ~VideoMixer(); - void setDimensions(int width, int height); + void setParameters(int width, int height, AVPixelFormat format = AV_PIX_FMT_YUV422P); int getWidth() const override; int getHeight() const override; @@ -70,6 +70,7 @@ private: const std::string id_; int width_ = 0; int height_ = 0; + AVPixelFormat format_ = AV_PIX_FMT_YUV422P; std::list<std::unique_ptr<VideoMixerSource>> sources_; rw_mutex rwMutex_; diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp index c1db4f6f68..3ed0edd5c7 100644 --- a/src/media/video/video_rtp_session.cpp +++ b/src/media/video/video_rtp_session.cpp @@ -300,7 +300,13 @@ VideoRtpSession::enterConference(Conference* conference) if (send_.enabled or receiveThread_) { videoMixer_ = conference->getVideoMixer(); - videoMixer_->setDimensions(localVideoParams_.width, localVideoParams_.height); +#if defined(__APPLE__) && TARGET_OS_MAC + videoMixer_->setParameters(localVideoParams_.width, + localVideoParams_.height, + av_get_pix_fmt(localVideoParams_.pixel_format.c_str())); +#else + videoMixer_->setParameters(localVideoParams_.width, localVideoParams_.height); +#endif setupConferenceVideoPipeline(*conference_); } } @@ -574,5 +580,3 @@ VideoRtpSession::getPonderateLoss(float lastLoss) }} // namespace jami::video - - -- GitLab