From 021b93c63ed7940994b728c8c337ab2a12ccc44e Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Wed, 20 May 2020 14:55:11 +0300 Subject: [PATCH] Fix for lowering bitrate --- applications/gui/src/media_panel.cpp | 3 ++- components/codecs/src/nvpipe_encoder.cpp | 9 +++++---- components/streams/src/sender.cpp | 2 ++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/applications/gui/src/media_panel.cpp b/applications/gui/src/media_panel.cpp index 2801e2dc8..4677cb7e0 100644 --- a/applications/gui/src/media_panel.cpp +++ b/applications/gui/src/media_panel.cpp @@ -42,7 +42,7 @@ MediaPanel::MediaPanel(ftl::gui::Screen *screen, ftl::gui::SourceWindow *sourceW auto recordpopup = recordbutton_->popup(); recordpopup->setLayout(new GroupLayout()); recordpopup->setTheme(screen->toolbuttheme); - recordpopup->setAnchorHeight(150); + recordpopup->setAnchorHeight(180); auto itembutton = new Button(recordpopup, "2D snapshot (.png)"); itembutton->setCallback([this]() { _startRecording(RecordMode::Snapshot2D); @@ -227,6 +227,7 @@ void MediaPanel::_startRecording(MediaPanel::RecordMode mode) { record_mode_ = mode; screen_->activeCamera()->startVideoRecording(filename, ""); } else if (mode == RecordMode::Live2D) { + record_mode_ = mode; screen_->activeCamera()->startVideoRecording("", "ftl://live.utu.fi"); } } diff --git a/components/codecs/src/nvpipe_encoder.cpp b/components/codecs/src/nvpipe_encoder.cpp index 98d2c47a7..c9f662183 100644 --- a/components/codecs/src/nvpipe_encoder.cpp +++ b/components/codecs/src/nvpipe_encoder.cpp @@ -88,7 +88,7 @@ static uint64_t calculateBitrate(definition_t def, float ratescale) { } bitrate *= 1000.0f*1000.0f; - float minrate = 0.25f * bitrate; + float minrate = 0.05f * bitrate; return uint64_t((bitrate - minrate)*ratescale + minrate); } @@ -167,13 +167,14 @@ bool NvPipeEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt) if (!_createEncoder(pkt, fmt)) return false; - if (isLossy(pkt.codec) && pkt.bitrate != last_bitrate_) { + // Doesn't seem to work + /*if (isLossy(pkt.codec) && pkt.bitrate != last_bitrate_) { uint64_t bitrate = calculateBitrate(pkt.definition, float(pkt.bitrate)/255.0f) * pkt.frame_count; const int fps = 1000/ftl::timer::getInterval(); LOG(INFO) << "Changing bitrate: " << bitrate; NvPipe_SetBitrate(nvenc_, bitrate, fps); last_bitrate_ = pkt.bitrate; - } + }*/ //LOG(INFO) << "NvPipe Encode: " << int(definition) << " " << in.cols; @@ -262,7 +263,7 @@ static NvPipe_Format selectFormat(const Packet &pkt, format_t fmt) { bool NvPipeEncoder::_encoderMatch(const ftl::codecs::Packet &pkt, format_t fmt) { return compression_ == selectCompression(pkt, fmt) && format_ == selectFormat(pkt, fmt) && - codec_ == selectCodec(pkt); + codec_ == selectCodec(pkt) && last_bitrate_ == pkt.bitrate; } bool NvPipeEncoder::_createEncoder(const ftl::codecs::Packet &pkt, format_t fmt) { diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp index 8277a73d9..6f4cb3289 100644 --- a/components/streams/src/sender.cpp +++ b/components/streams/src/sender.cpp @@ -349,6 +349,8 @@ void Sender::_encodeChannel(ftl::rgbd::FrameSet &fs, Channel c, bool reset) { FTL_Profile("Encoder",0.02); + LOG(INFO) << "Enocode bitrate: " << (int)pkt.bitrate; + if (enc->encode(sroi, pkt)) { stream_->post(spkt, pkt); -- GitLab