Start using webrtc::VideoTrack.
This commit is contained in:
parent
16177eae2b
commit
f3808bdc24
|
@ -23,7 +23,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "media/audio/media_audio_track.h"
|
#include "media/audio/media_audio_track.h"
|
||||||
#include "base/platform/base_platform_info.h"
|
#include "base/platform/base_platform_info.h"
|
||||||
#include "calls/calls_panel.h"
|
#include "calls/calls_panel.h"
|
||||||
#include "webrtc/webrtc_video_sink.h"
|
#include "webrtc/webrtc_video_track.h"
|
||||||
#include "data/data_user.h"
|
#include "data/data_user.h"
|
||||||
#include "data/data_session.h"
|
#include "data/data_session.h"
|
||||||
#include "facades.h"
|
#include "facades.h"
|
||||||
|
@ -758,17 +758,21 @@ void Call::createAndStartController(const MTPDphoneCall &call) {
|
||||||
if (_muted.current()) {
|
if (_muted.current()) {
|
||||||
raw->setMuteMicrophone(_muted.current());
|
raw->setMuteMicrophone(_muted.current());
|
||||||
}
|
}
|
||||||
const auto &settings = Core::App().settings();
|
|
||||||
raw->setIncomingVideoOutput(webrtc::CreateVideoSink([=](QImage frame) {
|
_videoTrack = std::make_shared<webrtc::VideoTrack>();
|
||||||
crl::on_main(weak, [=] {
|
_videoTrack->renderNextFrame(
|
||||||
|
) | rpl::start_with_next([=] {
|
||||||
if (_remoteVideoInactiveFrom > 0
|
if (_remoteVideoInactiveFrom > 0
|
||||||
&& (_remoteVideoInactiveFrom + kDropFramesWhileInactive
|
&& (_remoteVideoInactiveFrom + kDropFramesWhileInactive
|
||||||
> crl::now())) {
|
> crl::now())) {
|
||||||
} else {
|
} else {
|
||||||
_frames.fire_copy(frame);
|
_frames.fire_copy(_videoTrack->frame(webrtc::FrameRequest()));
|
||||||
|
_videoTrack->markFrameShown();
|
||||||
}
|
}
|
||||||
});
|
}, lifetime());
|
||||||
}));
|
raw->setIncomingVideoOutput(_videoTrack->sink());
|
||||||
|
|
||||||
|
const auto &settings = Core::App().settings();
|
||||||
raw->setAudioOutputDevice(
|
raw->setAudioOutputDevice(
|
||||||
settings.callOutputDeviceID().toStdString());
|
settings.callOutputDeviceID().toStdString());
|
||||||
raw->setAudioInputDevice(
|
raw->setAudioInputDevice(
|
||||||
|
|
|
@ -26,6 +26,10 @@ enum class State;
|
||||||
enum class VideoState;
|
enum class VideoState;
|
||||||
} // namespace tgcalls
|
} // namespace tgcalls
|
||||||
|
|
||||||
|
namespace webrtc {
|
||||||
|
class VideoTrack;
|
||||||
|
} // namespace webrtc
|
||||||
|
|
||||||
namespace Calls {
|
namespace Calls {
|
||||||
|
|
||||||
struct DhConfig {
|
struct DhConfig {
|
||||||
|
@ -227,6 +231,7 @@ private:
|
||||||
|
|
||||||
std::unique_ptr<tgcalls::Instance> _instance;
|
std::unique_ptr<tgcalls::Instance> _instance;
|
||||||
std::shared_ptr<tgcalls::VideoCaptureInterface> _videoCapture;
|
std::shared_ptr<tgcalls::VideoCaptureInterface> _videoCapture;
|
||||||
|
std::shared_ptr<webrtc::VideoTrack> _videoTrack;
|
||||||
|
|
||||||
std::unique_ptr<Media::Audio::Track> _waitingTrack;
|
std::unique_ptr<Media::Audio::Track> _waitingTrack;
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit fa4c2e22d678d7a977b5f4572689e459be29b7e3
|
Subproject commit 817d74d734385fa4eb814c7f3ff0b4284b872b91
|
Loading…
Reference in New Issue