NVIDIA DeepStream SDK API Reference

9.1 Release
service-maker/sources/modules/sample_video_receiver/sample_video_receiver.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #include <iostream>
19 
20 #include "data_receiver.hpp"
21 
22 #define PGIE_CLASS_ID_VEHICLE 0
23 #define PGIE_CLASS_ID_PERSON 2
24 
25 namespace deepstream {
26 
28  public:
29  virtual int consume(DataReceiver& receiver, Buffer buffer) {
30  VideoBuffer video_buffer = buffer;
31  BatchMetadata batch_meta = video_buffer.getBatchMetadata();
32  batch_meta.iterate([](const FrameMetadata& frame_data) {
33  auto vehicle_count = 0;
34  auto person_count = 0;
35  frame_data.iterate([&](const ObjectMetadata& object_data) {
36  auto class_id = object_data.classId();
37  if (class_id == PGIE_CLASS_ID_VEHICLE) {
38  vehicle_count++;
39  } else if (class_id == PGIE_CLASS_ID_PERSON ) {
40  person_count++;
41  }
42  });
43  std::cout << "Object Counter: " <<
44  " Pad Idx = " << frame_data.padIndex() <<
45  " Frame Number = " << frame_data.frameNum() <<
46  " Vehicle Count = " << vehicle_count <<
47  " Person Count = " << person_count << std::endl;
48  });
49  return 1;
50  }
51 };
52 }
PGIE_CLASS_ID_PERSON
#define PGIE_CLASS_ID_PERSON
Definition: service-maker/sources/modules/sample_video_receiver/sample_video_receiver.hpp:23
deepstream::VideoBuffer::getBatchMetadata
BatchMetadata getBatchMetadata()
deepstream::DataReceiver::IDataConsumer
required interface for a data receiver
Definition: service-maker/includes/data_receiver.hpp:50
deepstream::ObjectMetadata::classId
unsigned int classId() const
Number to identify the class of the object.
PGIE_CLASS_ID_VEHICLE
#define PGIE_CLASS_ID_VEHICLE
Definition: service-maker/sources/modules/sample_video_receiver/sample_video_receiver.hpp:22
deepstream::BatchMetadata::iterate
unsigned int iterate(const std::function< void(const FrameMetadata &)> &func) const
Iterate the frame metadata within it.
deepstream::ObjectCounter
Definition: service-maker/sources/modules/sample_video_receiver/sample_video_receiver.hpp:27
deepstream::ObjectMetadata
Object metadata.
Definition: service-maker/includes/metadata.hpp:182
deepstream
Definition: service-maker/includes/buffer.hpp:38
deepstream::FrameMetadata::padIndex
unsigned int padIndex() const
Index of the pad from which the frame is generated.
deepstream::BatchMetadata
Holds information about a formed batch containingframes from different sources.
Definition: service-maker/includes/metadata.hpp:797
deepstream::Buffer
Base class of a buffer.
Definition: service-maker/includes/buffer.hpp:51
deepstream::ObjectCounter::consume
virtual int consume(DataReceiver &receiver, Buffer buffer)
Definition: service-maker/sources/modules/sample_video_receiver/sample_video_receiver.hpp:29
deepstream::FrameMetadata::frameNum
int frameNum() const
Frame number.
deepstream::DataReceiver
A specific signal handler for consuming data.
Definition: service-maker/includes/data_receiver.hpp:42
deepstream::FrameMetadata::iterate
unsigned int iterate(const std::function< void(const ObjectMetadata &)> &func) const
Iterate the object metadata within it.
receiver
static deepstream::Cloud2DeviceReceiver receiver
Definition: service-maker/sources/modules/smart_recording_action/smart_recording_action.hpp:29
deepstream::VideoBuffer
Definition: service-maker/includes/buffer.hpp:177
deepstream::FrameMetadata
Holds information for a single frame.
Definition: service-maker/includes/metadata.hpp:454