encoder header is shared ptr

This commit is contained in:
badaix 2016-02-03 23:05:28 +01:00
parent bfdca3038d
commit d44232114a
7 changed files with 12 additions and 15 deletions

View file

@ -56,8 +56,6 @@ public:
virtual ~Encoder()
{
if (headerChunk_ != NULL)
delete headerChunk_;
}
/// The listener will receive the encoded stream
@ -86,7 +84,7 @@ public:
}
/// Header information needed to decode the data
virtual msg::Header* getHeader() const
virtual std::shared_ptr<msg::Header> getHeader() const
{
return headerChunk_;
}
@ -95,7 +93,7 @@ protected:
virtual void initEncoder() = 0;
SampleFormat sampleFormat_;
msg::Header* headerChunk_;
std::shared_ptr<msg::Header> headerChunk_;
EncoderListener* listener_;
std::string codecOptions_;
};

View file

@ -28,7 +28,7 @@ using namespace std;
FlacEncoder::FlacEncoder(const std::string& codecOptions) : Encoder(codecOptions), encoder_(NULL), pcmBufferSize_(0), encodedSamples_(0)
{
flacChunk_ = new msg::PcmChunk();
headerChunk_ = new msg::Header("flac");
headerChunk_.reset(new msg::Header("flac"));
pcmBuffer_ = (FLAC__int32*)malloc(pcmBufferSize_ * sizeof(FLAC__int32));
}

View file

@ -223,7 +223,7 @@ void OggEncoder::initEncoder()
* audio data will start on a new page, as per spec
*/
size_t pos(0);
headerChunk_ = new msg::Header("ogg");
headerChunk_.reset(new msg::Header("ogg"));
while (true)
{
int result = ogg_stream_flush(&os,&og);

View file

@ -22,7 +22,7 @@
PcmEncoder::PcmEncoder(const std::string& codecOptions) : Encoder(codecOptions)
{
headerChunk_ = new msg::Header("pcm");
headerChunk_.reset(new msg::Header("pcm"));
}

View file

@ -59,7 +59,7 @@ PcmReader::~PcmReader()
}
msg::Header* PcmReader::getHeader()
std::shared_ptr<msg::Header> PcmReader::getHeader()
{
return encoder_->getHeader();
}

View file

@ -62,7 +62,7 @@ public:
/// Implementation of EncoderListener::onChunkEncoded
virtual void onChunkEncoded(const Encoder* encoder, msg::PcmChunk* chunk, double duration);
virtual msg::Header* getHeader();
virtual std::shared_ptr<msg::Header> getHeader();
virtual const ReaderUri& getUri() const;
virtual const std::string& getName() const;

View file

@ -217,8 +217,7 @@ void StreamServer::onMessageReceived(ControlSession* controlSession, const std::
StreamSession* session = getStreamSession(request.getParam("client").get<string>());
if (session != NULL)
{
msg::Header* headerChunk = stream->getHeader();
session->send(headerChunk);
session->add(stream->getHeader());
session->setPcmReader(stream);
}
}
@ -287,9 +286,9 @@ void StreamServer::onMessageReceived(StreamSession* connection, const msg::BaseM
{
// std::lock_guard<std::mutex> mlock(mutex_);
//TODO: use the correct stream
msg::Header* headerChunk = streamManager_->getDefaultStream()->getHeader();
auto headerChunk = streamManager_->getDefaultStream()->getHeader();
headerChunk->refersTo = requestMsg.id;
connection->send(headerChunk);
connection->send(headerChunk.get());
}
}
else if (baseMessage.type == message_type::kHello)
@ -319,8 +318,8 @@ void StreamServer::onMessageReceived(StreamSession* connection, const msg::BaseM
}
//TODO: use the correct stream
msg::Header* headerChunk = streamManager_->getDefaultStream()->getHeader();
connection->send(headerChunk);
auto headerChunk = streamManager_->getDefaultStream()->getHeader();
connection->send(headerChunk.get());
ClientInfoPtr client = Config::instance().getClientInfo(connection->macAddress);