diff --git a/DV3003.cpp b/DV3003.cpp index ac4e922..ccc17d2 100644 --- a/DV3003.cpp +++ b/DV3003.cpp @@ -412,7 +412,7 @@ void CDV3003::FeedDevice() } else { - waiting_packet[index] = packet; + waiting_packet[index].push(packet); if (needs_audio) { @@ -455,7 +455,7 @@ void CDV3003::ReadDevice() if (! GetResponse(p)) { unsigned int channel = p.field_id - PKT_CHANNEL0; - auto packet = waiting_packet[channel]; + auto packet = waiting_packet[channel].pop(); if (PKT_CHANNEL == p.header.packet_type) { if (12!=ntohs(p.header.payload_length) || PKT_CHAND!=p.payload.ambe.chand || 72!=p.payload.ambe.num_bits) diff --git a/DV3003.h b/DV3003.h index e6a8443..4ccba5e 100644 --- a/DV3003.h +++ b/DV3003.h @@ -116,7 +116,7 @@ private: int fd; std::atomic ch_depth, sp_depth; std::atomic keep_running; - std::shared_ptr waiting_packet[3]; // the packet currently being processed in each vocoder + CPacketQueue waiting_packet[3]; // the packet currently being processed in each vocoder CPacketQueue input_queue; std::future feedFuture, readFuture; std::string devicepath, productid, version;