Move the logic of whether to queue a packet into packetqueue::queuePacket

This commit is contained in:
Isaac Connor 2021-02-10 14:11:00 -05:00
parent 0a1bd3537d
commit 393e8b582a
2 changed files with 10 additions and 7 deletions

View File

@ -2615,13 +2615,8 @@ int Monitor::Capture() {
shared_data->last_write_time = packet->timestamp->tv_sec; shared_data->last_write_time = packet->timestamp->tv_sec;
image_count++; image_count++;
if (GetFunction() != Function::MONITOR // Will only be queued if there are iterators allocated in the queue.
and (packetqueue.packet_count(video_stream_id) or packet->keyframe or event)) { if ( !packetqueue.queuePacket(packet) ) {
Debug(2, "Have video packet for image index (%d), adding to queue", index);
packetqueue.queuePacket(packet);
} else {
Debug(2, "Not queuing video packet for index (%d) packet count %d",
index, packetqueue.packet_count(video_stream_id));
delete packet; delete packet;
} }
UpdateCaptureFPS(); UpdateCaptureFPS();

View File

@ -72,6 +72,14 @@ PacketQueue::~PacketQueue() {
bool PacketQueue::queuePacket(ZMPacket* add_packet) { bool PacketQueue::queuePacket(ZMPacket* add_packet) {
Debug(4, "packetqueue queuepacket %p %d", add_packet, add_packet->image_index); Debug(4, "packetqueue queuepacket %p %d", add_packet, add_packet->image_index);
if (iterators.empty()) {
Debug(4, "No iterators so no one needs us to queue packets.");
return false;
}
if (!packet_counts[video_stream_id] and !add_packet->keyframe) {
Debug(4, "No video keyframe so no one needs us to queue packets.");
return false;
}
mutex.lock(); mutex.lock();
pktQueue.push_back(add_packet); pktQueue.push_back(add_packet);