Skip to content

Commit 1825ae1

Browse files
authored
Fix VAAPI with dynamic bitrate (#1863)
* Revert "EncodePipelineVAAPI: Force VBR with adaptive bitrate (#1768)" This reverts commit c1821aa. * EncodePipelineVAAPI: Fix setting quality preset quality == 1 means "default" preset which is balanced + preencode + vbaq.
1 parent b17d99e commit 1825ae1

File tree

3 files changed

+2
-21
lines changed

3 files changed

+2
-21
lines changed

alvr/server/cpp/alvr_server/Settings.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,6 @@ void Settings::Load() {
104104
m_enableControllers = config.get("controllers_enabled").get<bool>();
105105
m_controllerIsTracker = config.get("controller_is_tracker").get<bool>();
106106

107-
m_constantBitrate = v.get("session_settings")
108-
.get("video")
109-
.get("bitrate")
110-
.get("mode")
111-
.get("variant").get<std::string>() == "ConstantMbps";
112-
113107
Info("Render Target: %d %d\n", m_renderWidth, m_renderHeight);
114108
Info("Refresh Rate: %d\n", m_refreshRate);
115109
m_loaded = true;

alvr/server/cpp/alvr_server/Settings.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,4 @@ class Settings {
8080

8181
bool m_enableControllers;
8282
int m_controllerIsTracker = false;
83-
84-
bool m_constantBitrate;
8583
};

alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#include "ALVR-common/packet_types.h"
33
#include "ffmpeg_helper.h"
44
#include "alvr_server/Settings.h"
5-
#include "alvr_server/Logger.h"
65
#include <chrono>
76

87
extern "C" {
@@ -181,12 +180,7 @@ alvr::EncodePipelineVAAPI::EncodePipelineVAAPI(Renderer *render, VkContext &vk_c
181180
break;
182181
case ALVR_CBR:
183182
default:
184-
if (settings.m_constantBitrate) {
185-
av_opt_set(encoder_ctx->priv_data, "rc_mode", "CBR", 0);
186-
} else {
187-
Info("Forcing VBR rate control with adaptive bitrate");
188-
av_opt_set(encoder_ctx->priv_data, "rc_mode", "VBR", 0);
189-
}
183+
av_opt_set(encoder_ctx->priv_data, "rc_mode", "CBR", 0);
190184
break;
191185
}
192186

@@ -207,7 +201,6 @@ alvr::EncodePipelineVAAPI::EncodePipelineVAAPI(Renderer *render, VkContext &vk_c
207201
SetParams(params);
208202

209203
vlVaQualityBits quality = {};
210-
quality.valid_setting = 1;
211204
quality.vbaq_mode = Settings::Instance().m_enableVbaq; //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas
212205
switch (settings.m_amdEncoderQualityPreset)
213206
{
@@ -349,11 +342,7 @@ void alvr::EncodePipelineVAAPI::SetParams(FfiDynamicEncoderParams params)
349342
}
350343
encoder_ctx->bit_rate = params.bitrate_bps;
351344
encoder_ctx->framerate = AVRational{int(params.framerate * 1000), 1000};
352-
if (settings.m_constantBitrate) {
353-
encoder_ctx->rc_buffer_size = encoder_ctx->bit_rate / params.framerate;
354-
} else {
355-
encoder_ctx->rc_buffer_size = (encoder_ctx->bit_rate / params.framerate) * 5.0;
356-
}
345+
encoder_ctx->rc_buffer_size = encoder_ctx->bit_rate / params.framerate;
357346
encoder_ctx->rc_max_rate = encoder_ctx->bit_rate;
358347
encoder_ctx->rc_initial_buffer_occupancy = encoder_ctx->rc_buffer_size;
359348

0 commit comments

Comments
 (0)