diff --git a/common/message/codec_header.hpp b/common/message/codec_header.hpp index 760c63d6..004c8c92 100644 --- a/common/message/codec_header.hpp +++ b/common/message/codec_header.hpp @@ -30,9 +30,11 @@ namespace msg class CodecHeader : public BaseMessage { public: - CodecHeader(const std::string& codecName = "", size_t size = 0) : BaseMessage(message_type::kCodecHeader), payloadSize(size), codec(codecName) + CodecHeader(const std::string& codecName = "", size_t size = 0) + : BaseMessage(message_type::kCodecHeader), payloadSize(size), payload(nullptr), codec(codecName) { - payload = (char*)malloc(size); + if (size > 0) + payload = (char*)malloc(size * sizeof(char)); } ~CodecHeader() override @@ -62,7 +64,7 @@ protected: writeVal(stream, payload, payloadSize); } }; -} +} // namespace msg #endif diff --git a/common/message/pcm_chunk.hpp b/common/message/pcm_chunk.hpp index f019e26c..6eb2b201 100644 --- a/common/message/pcm_chunk.hpp +++ b/common/message/pcm_chunk.hpp @@ -50,6 +50,15 @@ public: ~PcmChunk() override = default; + template + int readFrames(void* outputBuffer, const std::chrono::duration& duration) + { + auto us = std::chrono::microseconds(duration).count(); + auto frames = (us * 48000) / std::micro::den; + // return readFrames(outputBuffer, (us * 48000) / std::micro::den); + return frames; + } + int readFrames(void* outputBuffer, size_t frameCount) { // logd << "read: " << frameCount << ", total: " << (wireChunk->length / format.frameSize) << ", idx: " << idx;// << std::endl; @@ -123,6 +132,6 @@ public: private: uint32_t idx_; }; -} +} // namespace msg #endif diff --git a/common/message/wire_chunk.hpp b/common/message/wire_chunk.hpp index ba4ecc21..934b933b 100644 --- a/common/message/wire_chunk.hpp +++ b/common/message/wire_chunk.hpp @@ -39,9 +39,10 @@ namespace msg class WireChunk : public BaseMessage { public: - WireChunk(size_t size = 0) : BaseMessage(message_type::kWireChunk), payloadSize(size) + WireChunk(size_t size = 0) : BaseMessage(message_type::kWireChunk), payloadSize(size), payload(nullptr) { - payload = (char*)malloc(size); + if (size > 0) + payload = (char*)malloc(size * sizeof(char)); } WireChunk(const WireChunk& wireChunk) : BaseMessage(message_type::kWireChunk), timestamp(wireChunk.timestamp), payloadSize(wireChunk.payloadSize) @@ -84,7 +85,7 @@ protected: writeVal(stream, payload, payloadSize); } }; -} +} // namespace msg #endif