From a0c0f0bd551155270b11ac23c7f1c526a20a44b9 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 5 Aug 2021 10:22:41 +0200 Subject: Youtube: attempt to auto-detect throttling and restart download --- plugins/youtube/YoutubeMediaProxy.hpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'plugins') diff --git a/plugins/youtube/YoutubeMediaProxy.hpp b/plugins/youtube/YoutubeMediaProxy.hpp index 28aa6fe..d50d8df 100644 --- a/plugins/youtube/YoutubeMediaProxy.hpp +++ b/plugins/youtube/YoutubeMediaProxy.hpp @@ -2,10 +2,13 @@ #include "../../include/Program.hpp" #include +#include // TODO: Sync sequence for video and audio (for live stream). namespace QuickMedia { + using ThrottleHandler = std::function; + class YoutubeMediaProxy { public: enum Error { @@ -29,7 +32,7 @@ namespace QuickMedia { class YoutubeStaticMediaProxy : public YoutubeMediaProxy { public: - YoutubeStaticMediaProxy() = default; + YoutubeStaticMediaProxy(ThrottleHandler throttle_handler = nullptr); YoutubeStaticMediaProxy(YoutubeStaticMediaProxy&) = delete; YoutubeStaticMediaProxy&operator=(YoutubeStaticMediaProxy&) = delete; ~YoutubeStaticMediaProxy(); @@ -65,11 +68,19 @@ namespace QuickMedia { bool download_header_remaining_sent = false; int download_header_written_offset = 0; int download_header_offset_to_end_of_header = 0; + time_t download_start_time = 0; + time_t throttle_start_time = 0; + int64_t total_downloaded_bytes = 0; + bool download_started = false; + bool throttle_started = false; + bool throttle_callback_called = false; + ThrottleHandler throttle_handler = nullptr; bool client_request_finished = false; std::string client_request_buffer; char download_read_buffer[16384]; }; + // TODO: Add throttle detection for live streams class YoutubeLiveStreamMediaProxy : public YoutubeMediaProxy { public: YoutubeLiveStreamMediaProxy() = default; -- cgit v1.2.3