ogg rate, 32bit rate

git-svn-id: svn://elaine/murooma/trunk@288 d8a302eb-03bc-478d-80e4-98257eca68ef
This commit is contained in:
(no author) 2014-09-21 19:52:40 +00:00
parent 983ded3d29
commit 831f07a657
4 changed files with 14 additions and 23 deletions

View file

@ -1,6 +1,7 @@
#ifndef TIME_PROVIDER_H #ifndef TIME_PROVIDER_H
#define TIME_PROVIDER_H #define TIME_PROVIDER_H
#include <atomic>
#include "doubleBuffer.h" #include "doubleBuffer.h"
class TimeProvider class TimeProvider
@ -18,15 +19,12 @@ public:
long getDiffToServerMs(); long getDiffToServerMs();
private: private:
TimeProvider(); // Constructor? (the {} brackets) are needed here. TimeProvider();
// Dont forget to declare these two. You want to make sure they
// are unaccessable otherwise you may accidently get copies of
// your singleton appearing.
TimeProvider(TimeProvider const&); // Don't Implement TimeProvider(TimeProvider const&); // Don't Implement
void operator=(TimeProvider const&); // Don't implement void operator=(TimeProvider const&); // Don't implement
DoubleBuffer<long> diffBuffer; DoubleBuffer<long> diffBuffer;
long diffToServer; std::atomic<long> diffToServer;
}; };

View file

@ -16,7 +16,7 @@ SampleFormat::SampleFormat(const std::string& format) : BaseMessage(message_type
} }
SampleFormat::SampleFormat(uint16_t sampleRate, uint16_t bitsPerSample, uint16_t channelCount) : BaseMessage(message_type::sampleformat) SampleFormat::SampleFormat(uint32_t sampleRate, uint16_t bitsPerSample, uint16_t channelCount) : BaseMessage(message_type::sampleformat)
{ {
setFormat(sampleRate, bitsPerSample, channelCount); setFormat(sampleRate, bitsPerSample, channelCount);
} }
@ -28,13 +28,13 @@ void SampleFormat::setFormat(const std::string& format)
boost::split(strs, format, boost::is_any_of(":")); boost::split(strs, format, boost::is_any_of(":"));
if (strs.size() == 3) if (strs.size() == 3)
setFormat( setFormat(
boost::lexical_cast<uint16_t>(strs[0]), boost::lexical_cast<uint32_t>(strs[0]),
boost::lexical_cast<uint16_t>(strs[1]), boost::lexical_cast<uint16_t>(strs[1]),
boost::lexical_cast<uint16_t>(strs[2])); boost::lexical_cast<uint16_t>(strs[2]));
} }
void SampleFormat::setFormat(uint16_t rate, uint16_t bits, uint16_t channels) void SampleFormat::setFormat(uint32_t rate, uint16_t bits, uint16_t channels)
{ {
this->rate = rate; this->rate = rate;
this->bits = bits; this->bits = bits;

View file

@ -10,12 +10,12 @@ class SampleFormat : public BaseMessage
public: public:
SampleFormat(); SampleFormat();
SampleFormat(const std::string& format); SampleFormat(const std::string& format);
SampleFormat(uint16_t rate, uint16_t bits, uint16_t channels); SampleFormat(uint32_t rate, uint16_t bits, uint16_t channels);
void setFormat(const std::string& format); void setFormat(const std::string& format);
void setFormat(uint16_t rate, uint16_t bits, uint16_t channels); void setFormat(uint32_t rate, uint16_t bits, uint16_t channels);
uint16_t rate; uint32_t rate;
uint16_t bits; uint16_t bits;
uint16_t channels; uint16_t channels;
@ -29,7 +29,7 @@ public:
virtual void read(std::istream& stream) virtual void read(std::istream& stream)
{ {
stream.read(reinterpret_cast<char *>(&rate), sizeof(uint16_t)); stream.read(reinterpret_cast<char *>(&rate), sizeof(uint32_t));
stream.read(reinterpret_cast<char *>(&bits), sizeof(uint16_t)); stream.read(reinterpret_cast<char *>(&bits), sizeof(uint16_t));
stream.read(reinterpret_cast<char *>(&channels), sizeof(uint16_t)); stream.read(reinterpret_cast<char *>(&channels), sizeof(uint16_t));
stream.read(reinterpret_cast<char *>(&sampleSize), sizeof(uint16_t)); stream.read(reinterpret_cast<char *>(&sampleSize), sizeof(uint16_t));
@ -38,26 +38,19 @@ public:
virtual uint32_t getSize() virtual uint32_t getSize()
{ {
return 5*sizeof(int16_t); return sizeof(int32_t) + 4*sizeof(int16_t);
} }
protected: protected:
virtual void doserialize(std::ostream& stream) virtual void doserialize(std::ostream& stream)
{ {
stream.write(reinterpret_cast<char *>(&rate), sizeof(uint16_t)); stream.write(reinterpret_cast<char *>(&rate), sizeof(uint32_t));
stream.write(reinterpret_cast<char *>(&bits), sizeof(uint16_t)); stream.write(reinterpret_cast<char *>(&bits), sizeof(uint16_t));
stream.write(reinterpret_cast<char *>(&channels), sizeof(uint16_t)); stream.write(reinterpret_cast<char *>(&channels), sizeof(uint16_t));
stream.write(reinterpret_cast<char *>(&sampleSize), sizeof(uint16_t)); stream.write(reinterpret_cast<char *>(&sampleSize), sizeof(uint16_t));
stream.write(reinterpret_cast<char *>(&frameSize), sizeof(uint16_t)); stream.write(reinterpret_cast<char *>(&frameSize), sizeof(uint16_t));
} }
/*private:
uint16_t rate_;
uint16_t bits_;
uint16_t channels_;
uint16_t bytes_;
uint16_t frameSize_;
*/
}; };

View file

@ -78,7 +78,7 @@ double OggEncoder::encode(PcmChunk* chunk)
res = os.granulepos; res = os.granulepos;
else else
res = os.granulepos - lastGranulepos; res = os.granulepos - lastGranulepos;
res /= 48.; res /= (sampleFormat.rate / 1000.);
lastGranulepos = os.granulepos; lastGranulepos = os.granulepos;
chunk->payload = (char*)realloc(chunk->payload, pos); chunk->payload = (char*)realloc(chunk->payload, pos);
chunk->payloadSize = pos; chunk->payloadSize = pos;