Fix HEVC streams requiring a higher bitrate to enable high quality surround audio

This commit is contained in:
Cameron Gutman
2018-07-27 19:04:25 -07:00
parent 4c47dd74ad
commit 679f6e83bb
3 changed files with 5 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ AUDIO_RENDERER_CALLBACKS AudioCallbacks;
int NegotiatedVideoFormat;
volatile int ConnectionInterrupted;
int HighQualitySurroundEnabled;
int OriginalVideoBitrate;
// Connection stages
static const char* stageNames[STAGE_MAX] = {
@@ -223,6 +224,7 @@ int LiStartConnection(PSERVER_INFORMATION serverInfo, PSTREAM_CONFIGURATION stre
NegotiatedVideoFormat = 0;
memcpy(&StreamConfig, streamConfig, sizeof(StreamConfig));
OriginalVideoBitrate = streamConfig->bitrate;
RemoteAddrString = strdup(serverInfo->address);
// FEC only works in 16 byte chunks, so we must round down

View File

@@ -21,6 +21,7 @@ extern AUDIO_RENDERER_CALLBACKS AudioCallbacks;
extern int NegotiatedVideoFormat;
extern volatile int ConnectionInterrupted;
extern int HighQualitySurroundEnabled;
extern int OriginalVideoBitrate;
#ifndef UINT24_MAX
#define UINT24_MAX 0xFFFFFF

View File

@@ -362,7 +362,8 @@ static PSDP_OPTION getAttributesList(char*urlSafeAddr) {
}
if (AppVersionQuad[0] >= 7) {
if (StreamConfig.bitrate > HIGH_BITRATE_THRESHOLD && audioChannelCount > 2) {
// Decide to use HQ audio based on the original video bitrate, not the HEVC-adjusted value
if (OriginalVideoBitrate >= HIGH_BITRATE_THRESHOLD && audioChannelCount > 2) {
// Enable high quality mode for surround sound
err |= addAttributeString(&optionHead, "x-nv-audio.surround.AudioQuality", "1");