Fix advertised sound playback/recording rates in public headers

Resolves: rhbz#1129961 (QEMU would need a rebuild though)
This commit is contained in:
Christophe Fergeau 2014-08-25 12:46:28 +02:00
parent 6838c6cf7e
commit 4c96febcdd
2 changed files with 63 additions and 1 deletions

View File

@ -0,0 +1,56 @@
From 288cf77f804187a3e77ae2a5a21d108d101d22ce Mon Sep 17 00:00:00 2001
From: Christophe Fergeau <cfergeau@redhat.com>
Date: Tue, 19 Aug 2014 11:09:05 +0200
Subject: [PATCH] spice.h: Don't use 48kHz for playback/recording rates
When adding Opus support, SPICE_INTERFACE_PLAYBACK_FREQ and
SPICE_INTERFACE_RECORD_FREQ in the public header 'spice.h' were changed
from 44100 to 48000.
However, this was not really useful as these constants are not used in
spice-server, but only by users of spice-server (ie QEMU).
It turns out changing these values is actually harmful. QEMU uses these
constants in 2 situations:
1. when it's a version of QEMU with this commit, but we are compiling
against older spice-server headers (before Opus support was added)
2. when it's a version of QEMU without commit 795ca114d35 which added
what is needed for Opus support
When we are in the second situation, having 48000 in the public header
will actually cause issues as spice-server will know QEMU does not
support Opus, so internally spice-server will be using a 44100 rate for
audio. However, QEMU will be using SPICE_INTERFACE_.*_FREQ and think it
should use a 48000 rate, which will cause distorsions as experienced in
bug https://bugzilla.redhat.com/show_bug.cgi?id=1129961
Reverting these constants back to 44100 will fix audio in the 'new
spice-server/old QEMU' scenario, and won't cause issues either when both
support Opus as in this case these constants are not used.
---
server/spice.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/server/spice.h b/server/spice.h
index c648a1d..58700d1 100644
--- a/server/spice.h
+++ b/server/spice.h
@@ -342,7 +342,7 @@ enum {
SPICE_INTERFACE_AUDIO_FMT_S16 = 1,
};
-#define SPICE_INTERFACE_PLAYBACK_FREQ 48000
+#define SPICE_INTERFACE_PLAYBACK_FREQ 44100
#define SPICE_INTERFACE_PLAYBACK_CHAN 2
#define SPICE_INTERFACE_PLAYBACK_FMT SPICE_INTERFACE_AUDIO_FMT_S16
@@ -372,7 +372,7 @@ typedef struct SpiceRecordInterface SpiceRecordInterface;
typedef struct SpiceRecordInstance SpiceRecordInstance;
typedef struct SpiceRecordState SpiceRecordState;
-#define SPICE_INTERFACE_RECORD_FREQ 48000
+#define SPICE_INTERFACE_RECORD_FREQ 44100
#define SPICE_INTERFACE_RECORD_CHAN 2
#define SPICE_INTERFACE_RECORD_FMT SPICE_INTERFACE_AUDIO_FMT_S16
--
1.9.3

View File

@ -1,11 +1,12 @@
Name: spice
Version: 0.12.5
Release: 4%{?dist}
Release: 5%{?dist}
Summary: Implements the SPICE protocol
Group: User Interface/Desktops
License: LGPLv2+
URL: http://www.spice-space.org/
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
Patch0: 0001-spice.h-Don-t-use-48kHz-for-playback-recording-rates.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=613529
%if 0%{?rhel}
@ -61,6 +62,7 @@ using spice-server, you will need to install spice-server-devel.
%prep
%setup -q
%patch0 -p1
%build
@ -91,6 +93,10 @@ mkdir -p %{buildroot}%{_libexecdir}
%changelog
* Mon Aug 25 2014 Christophe Fergeau <cfergeau@redhat.com> 0.12.5-5
- Fix advertised sound playback/recording rates in public headers
Resolves: rhbz#1129961 (QEMU would need a rebuild though)
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.12.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild