aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/opus/opusproperties.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/opus/opusproperties.cpp')
-rw-r--r--src/plugins/Input/opus/opusproperties.cpp161
1 files changed, 0 insertions, 161 deletions
diff --git a/src/plugins/Input/opus/opusproperties.cpp b/src/plugins/Input/opus/opusproperties.cpp
deleted file mode 100644
index 89ede973d..000000000
--- a/src/plugins/Input/opus/opusproperties.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-/***************************************************************************
- copyright : (C) 2012 by Lukáš Lalinský
- email : lalinsky@gmail.com
-
- copyright : (C) 2002 - 2008 by Scott Wheeler
- email : wheeler@kde.org
- (original Vorbis implementation)
- ***************************************************************************/
-
-/***************************************************************************
- * This library is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU Lesser General Public License version *
- * 2.1 as published by the Free Software Foundation. *
- * *
- * This library 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 *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this library; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA *
- * 02110-1301 USA *
- * *
- * Alternatively, this file is available under the Mozilla Public *
- * License Version 1.1. You may obtain a copy of the License at *
- * http://www.mozilla.org/MPL/ *
- ***************************************************************************/
-
-#include <taglib/tstring.h>
-#include "tdebug.h"
-
-#include <taglib/oggpageheader.h>
-
-#include "opusproperties.h"
-#include "opusfile.h"
-
-using namespace TagLib;
-using namespace TagLib::Ogg;
-
-class Opus::Properties::PropertiesPrivate
-{
-public:
- PropertiesPrivate(File *f, ReadStyle s) :
- file(f),
- style(s),
- length(0),
- inputSampleRate(0),
- channels(0),
- opusVersion(0) {}
-
- File *file;
- ReadStyle style;
- int length;
- int inputSampleRate;
- int channels;
- int opusVersion;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-// public members
-////////////////////////////////////////////////////////////////////////////////
-
-Opus::Properties::Properties(File *file, ReadStyle style) : AudioProperties(style)
-{
- d = new PropertiesPrivate(file, style);
- read();
-}
-
-Opus::Properties::~Properties()
-{
- delete d;
-}
-
-int Opus::Properties::length() const
-{
- return d->length;
-}
-
-int Opus::Properties::bitrate() const
-{
- return 0;
-}
-
-int Opus::Properties::sampleRate() const
-{
- // Opus can decode any stream at a sample rate of 8, 12, 16, 24, or 48 kHz,
- // so there is no single sample rate. Let's assume it's the highest
- // possible.
- return 48000;
-}
-
-int Opus::Properties::channels() const
-{
- return d->channels;
-}
-
-int Opus::Properties::inputSampleRate() const
-{
- return d->inputSampleRate;
-}
-
-int Opus::Properties::opusVersion() const
-{
- return d->opusVersion;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// private members
-////////////////////////////////////////////////////////////////////////////////
-
-void Opus::Properties::read()
-{
- // Get the identification header from the Ogg implementation.
-
- // http://tools.ietf.org/html/draft-terriberry-oggopus-01#section-5.1
-
- ByteVector data = d->file->packet(0);
-
- // *Magic Signature*
- int pos = 8;
-
- // *Version* (8 bits, unsigned)
- d->opusVersion = uchar(data.at(pos));
- pos += 1;
-
- // *Output Channel Count* 'C' (8 bits, unsigned)
- d->channels = uchar(data.at(pos));
- pos += 1;
-
- // *Pre-skip* (16 bits, unsigned, little endian)
- ushort preSkip = data.mid(pos, 2).toUShort(false);
- pos += 2;
-
- // *Input Sample Rate* (32 bits, unsigned, little endian)
- d->inputSampleRate = data.mid(pos, 4).toUInt(false);
- pos += 4;
-
- // *Output Gain* (16 bits, signed, little endian)
- pos += 2;
-
- // *Channel Mapping Family* (8 bits, unsigned)
- pos += 1;
-
- const Ogg::PageHeader *first = d->file->firstPageHeader();
- const Ogg::PageHeader *last = d->file->lastPageHeader();
-
- if(first && last) {
- long long start = first->absoluteGranularPosition();
- long long end = last->absoluteGranularPosition();
-
- if(start >= 0 && end >= 0)
- d->length = (int) ((end - start - preSkip) / 48000);
- else {
- debug("Opus::Properties::read() -- The PCM values for the start or "
- "end of this file was incorrect.");
- }
- }
- else
- debug("Opus::Properties::read() -- Could not find valid first and last Ogg pages.");
-}