diff options
author | John Regan <john@jrjrtech.com> | 2021-05-15 10:16:49 -0400 |
---|---|---|
committer | John Regan <john@jrjrtech.com> | 2021-05-15 11:31:01 -0400 |
commit | 87fa6bca544722550424404b19594f465a391374 (patch) | |
tree | f2f06b8b42ad0e80d0005ec59c245d6b6a655b93 /src/lib | |
parent | c3226a319510a7ac57d6e88363a32780eb099888 (diff) |
flac encoder: enable Ogg FLAC and Ogg chaining
refactors GenerateOggSerial into a generic GenerateSerial
utility, under the util lib.
libFLAC may be encoded without Ogg support. If Ogg support is disabled,
libFLAC will still export Ogg-related methods (like setting a serial
number), and throw a runtime error when initializing an Ogg stream.
GenerateOggSerial does not depend on libogg. Refactoring it into
a generic GenerateSerial prevents having to add build-time checks
for libogg within the FLAC encoder plugin.
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/xiph/OggSerial.cxx | 46 | ||||
-rw-r--r-- | src/lib/xiph/OggSerial.hxx | 29 | ||||
-rw-r--r-- | src/lib/xiph/meson.build | 1 |
3 files changed, 0 insertions, 76 deletions
diff --git a/src/lib/xiph/OggSerial.cxx b/src/lib/xiph/OggSerial.cxx deleted file mode 100644 index 6f5ba3f84..000000000 --- a/src/lib/xiph/OggSerial.cxx +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2003-2021 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "OggSerial.hxx" -#include "util/Compiler.h" - -#include <atomic> -#include <chrono> - -static std::atomic_uint next_ogg_serial; - -int -GenerateOggSerial() noexcept -{ - unsigned serial = ++next_ogg_serial; - if (gcc_unlikely(serial < 16)) { - /* first-time initialization: seed with a clock value, - which is random enough for our use */ - - /* this code is not race-free, but good enough */ - using namespace std::chrono; - const auto now = steady_clock::now().time_since_epoch(); - const auto now_ms = duration_cast<milliseconds>(now); - const unsigned seed = now_ms.count(); - next_ogg_serial = serial = seed; - } - - return serial; -} - diff --git a/src/lib/xiph/OggSerial.hxx b/src/lib/xiph/OggSerial.hxx deleted file mode 100644 index bc6298139..000000000 --- a/src/lib/xiph/OggSerial.hxx +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2003-2021 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef MPD_OGG_SERIAL_HXX -#define MPD_OGG_SERIAL_HXX - -/** - * Generate the next pseudo-random Ogg serial. - */ -int -GenerateOggSerial() noexcept; - -#endif diff --git a/src/lib/xiph/meson.build b/src/lib/xiph/meson.build index d57d68d8f..4666d28fc 100644 --- a/src/lib/xiph/meson.build +++ b/src/lib/xiph/meson.build @@ -72,7 +72,6 @@ if libogg_dep.found() ogg = static_library( 'ogg', 'OggVisitor.cxx', - 'OggSerial.cxx', 'OggSyncState.cxx', 'OggFind.cxx', 'OggPacket.cxx', |