mirror of
https://github.com/thinkonmay/sunshine-sdk.git
synced 2026-08-06 20:54:52 +00:00
overflow congestion control
This commit is contained in:
parent
7e568388b3
commit
689049d8d9
21
src/main.cpp
21
src/main.cpp
@ -8,9 +8,6 @@
|
||||
#include <csignal>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/array.hpp>
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
// local includes
|
||||
#include "globals.h"
|
||||
@ -44,13 +41,11 @@ enum EventType {
|
||||
Idr,
|
||||
Hdr,
|
||||
Stop,
|
||||
BufferOverflow,
|
||||
EventMax
|
||||
};
|
||||
|
||||
using namespace std::literals;
|
||||
using namespace boost::asio::ip;
|
||||
using boost::asio::ip::udp;
|
||||
using boost::asio::ip::address;
|
||||
|
||||
std::map<int, std::function<void()>> signal_handlers;
|
||||
void
|
||||
@ -199,6 +194,7 @@ main(int argc, char *argv[]) {
|
||||
auto idr = mail->event<bool>(mail::idr);
|
||||
|
||||
auto expected_index = 0;
|
||||
auto last_bitrate = 6;
|
||||
while (!process_shutdown_event->peek() && !local_shutdown->peek()) {
|
||||
char buffer[512] = {0};
|
||||
while (expected_index == queue->outindex)
|
||||
@ -215,11 +211,20 @@ main(int argc, char *argv[]) {
|
||||
|
||||
switch (buffer[0]) {
|
||||
case EventType::Bitrate:
|
||||
BOOST_LOG(debug) << "bitrate changed to " << (buffer[1] * 1000);
|
||||
last_bitrate = buffer[1];
|
||||
BOOST_LOG(info) << "bitrate changed to " << (buffer[1] * 1000);
|
||||
bitrate->raise(buffer[1] * 1000);
|
||||
break;
|
||||
case EventType::BufferOverflow:
|
||||
if (last_bitrate <= 1)
|
||||
break;
|
||||
|
||||
last_bitrate--;
|
||||
BOOST_LOG(info) << "overflow, bitrate changed to " << (last_bitrate * 1000);
|
||||
bitrate->raise(last_bitrate * 1000);
|
||||
break;
|
||||
case EventType::Framerate:
|
||||
BOOST_LOG(debug) << "framerate changed to " << (buffer[1]);
|
||||
BOOST_LOG(info) << "framerate changed to " << (buffer[1]);
|
||||
framerate->raise(buffer[1]);
|
||||
break;
|
||||
case EventType::Pointer:
|
||||
|
||||
@ -1754,10 +1754,6 @@ namespace video {
|
||||
auto shutdown_event = mail->event<bool>(mail::shutdown);
|
||||
auto bitrate_events = mail->event<int>(mail::bitrate);
|
||||
auto framerate_events = mail->event<int>(mail::framerate);
|
||||
|
||||
BOOST_LOG(info) << "framerate "sv << config->framerate;
|
||||
BOOST_LOG(info) << "bitrate "sv << config->bitrate;
|
||||
|
||||
auto packets = mail->queue<packet_t>(mail::video_packets);
|
||||
auto idr_events = mail->event<bool>(mail::idr);
|
||||
auto invalidate_ref_frames_events = mail->event<std::pair<int64_t, int64_t>>(mail::invalidate_ref_frames);
|
||||
@ -1801,11 +1797,9 @@ namespace video {
|
||||
|
||||
if (bitrate_events->peek()) {
|
||||
config->bitrate = bitrate_events->pop().value();
|
||||
BOOST_LOG(info) << "bitrate changed to "sv << config->bitrate;
|
||||
break;
|
||||
} else if (framerate_events->peek()) {
|
||||
config->framerate = framerate_events->pop().value();
|
||||
BOOST_LOG(info) << "framerate changed to "sv << config->framerate;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user