summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorJohn Regan <john@jrjrtech.com>2021-05-15 10:16:49 -0400
committerJohn Regan <john@jrjrtech.com>2021-05-15 11:31:01 -0400
commit87fa6bca544722550424404b19594f465a391374 (patch)
treef2f06b8b42ad0e80d0005ec59c245d6b6a655b93 /src/lib
parentc3226a319510a7ac57d6e88363a32780eb099888 (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.cxx46
-rw-r--r--src/lib/xiph/OggSerial.hxx29
-rw-r--r--src/lib/xiph/meson.build1
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',