1 /*
2     SPDX-FileCopyrightText: 2006 Pino Toscano <pino@kde.org>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "sound.h"
8 
9 #include <QVariant>
10 
11 using namespace Okular;
12 
13 class Sound::Private
14 {
15 public:
Private(const QByteArray & data)16     explicit Private(const QByteArray &data)
17         : m_data(QVariant(data))
18         , m_type(Sound::Embedded)
19     {
20         init();
21     }
22 
Private(const QString & url)23     explicit Private(const QString &url)
24         : m_data(QVariant(url))
25         , m_type(Sound::External)
26     {
27         init();
28     }
29 
init()30     void init()
31     {
32         m_samplingRate = 44100.0;
33         m_channels = 1;
34         m_bitsPerSample = 8;
35         m_soundEncoding = Sound::Raw;
36     }
37 
38     QVariant m_data;
39     Sound::SoundType m_type;
40     double m_samplingRate;
41     int m_channels;
42     int m_bitsPerSample;
43     SoundEncoding m_soundEncoding;
44 };
45 
Sound(const QByteArray & data)46 Sound::Sound(const QByteArray &data)
47     : d(new Private(data))
48 {
49 }
50 
Sound(const QString & url)51 Sound::Sound(const QString &url)
52     : d(new Private(url))
53 {
54 }
55 
~Sound()56 Sound::~Sound()
57 {
58     delete d;
59 }
60 
soundType() const61 Sound::SoundType Sound::soundType() const
62 {
63     return d->m_type;
64 }
65 
url() const66 QString Sound::url() const
67 {
68     return d->m_type == Sound::External ? d->m_data.toString() : QString();
69 }
70 
data() const71 QByteArray Sound::data() const
72 {
73     return d->m_type == Sound::Embedded ? d->m_data.toByteArray() : QByteArray();
74 }
75 
samplingRate() const76 double Sound::samplingRate() const
77 {
78     return d->m_samplingRate;
79 }
80 
setSamplingRate(double samplingRate)81 void Sound::setSamplingRate(double samplingRate)
82 {
83     d->m_samplingRate = samplingRate;
84 }
85 
channels() const86 int Sound::channels() const
87 {
88     return d->m_channels;
89 }
90 
setChannels(int channels)91 void Sound::setChannels(int channels)
92 {
93     d->m_channels = channels;
94 }
95 
bitsPerSample() const96 int Sound::bitsPerSample() const
97 {
98     return d->m_bitsPerSample;
99 }
100 
setBitsPerSample(int bitsPerSample)101 void Sound::setBitsPerSample(int bitsPerSample)
102 {
103     d->m_bitsPerSample = bitsPerSample;
104 }
105 
soundEncoding() const106 Sound::SoundEncoding Sound::soundEncoding() const
107 {
108     return d->m_soundEncoding;
109 }
110 
setSoundEncoding(Sound::SoundEncoding soundEncoding)111 void Sound::setSoundEncoding(Sound::SoundEncoding soundEncoding)
112 {
113     d->m_soundEncoding = soundEncoding;
114 }
115