Camera ID is always 0

This is the continuation of the other post. As it took me some time to update to latest Deepstream.

Device information is as follows

Device infos are as follow.

• Hardware Platform (Jetson / GPU)
Xavier
• DeepStream Version
6.0 (latest)
• JetPack Version
Package: nvidia-jetpack
Version: 4.6-b199
Architecture: arm64
• NVIDIA GPU Driver Version (valid for GPU only)
10.2

deepstream-app is used.
Inside deepstream-app’s function, tried to get camera id or source id

static void  all_bbox_generated (AppCtx * appCtx, GstBuffer * buf,  NvDsBatchMeta * batch_meta, guint index)
{
       for (NvDsMetaList * l_frame = batch_meta->frame_meta_list; l_frame != NULL; l_frame = l_frame->next) {
          NvDsFrameMeta *frame_meta = l_frame->data;
          guint stream_id = frame_meta->source_id;//frame_meta->pad_index;
       }
}

But it always show 0. I have 4 sources (video files). But why I am always getting 0 for frame_meta->source_id; and frame_meta->pad_index;
If I tried the same thing in gst-dsexample plugin, I can have different sources.

Hi,
Please ensure you set batch-size=4 to nvstreammux. The setting has to fit number of sources.

  batch-size          : Maximum number of buffers in a batch
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 1024 Default: 0

Yes it is 4.Pls see the whole file.

################################################################################
# Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
################################################################################

[application]
enable-perf-measurement=1
perf-measurement-interval-sec=5
#gie-kitti-output-dir=streamscl

[tiled-display]
enable=1
rows=2
columns=2
width=1920
height=1080
gpu-id=0
#(0): nvbuf-mem-default - Default memory allocated, specific to particular platform
#(1): nvbuf-mem-cuda-pinned - Allocate Pinned/Host cuda memory applicable for Tesla
#(2): nvbuf-mem-cuda-device - Allocate Device cuda memory applicable for Tesla
#(3): nvbuf-mem-cuda-unified - Allocate Unified cuda memory applicable for Tesla
#(4): nvbuf-mem-surface-array - Allocate Surface Array memory, applicable for Jetson
nvbuf-memory-type=0

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=file://../../streams/ipcam1.mp4
#uri=rtsp://admin:ab123456@192.168.1.112:554/Streaming/Channels/401
num-sources=1
#drop-frame-interval=2
gpu-id=0
camera-id=0
# (0): memtype_device   - Memory type Device
# (1): memtype_pinned   - Memory type Host Pinned
# (2): memtype_unified  - Memory type Unified
cudadec-memtype=0

[source1]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=file://../../streams/ipcam2.mp4
#uri=rtsp://admin:A1234567@192.168.1.101:554/Streaming/Channels/801
num-sources=1
#drop-frame-interval=2
gpu-id=0
camera-id=1
# (0): memtype_device   - Memory type Device
# (1): memtype_pinned   - Memory type Host Pinned
# (2): memtype_unified  - Memory type Unified
cudadec-memtype=0

[source2]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=file://../../streams/ipcam3.mp4
#uri=rtsp://admin:A1234567@192.168.1.101:554/Streaming/Channels/1201
num-sources=1
#drop-frame-interval=2
gpu-id=0
camera-id=2
# (0): memtype_device   - Memory type Device
# (1): memtype_pinned   - Memory type Host Pinned
# (2): memtype_unified  - Memory type Unified
cudadec-memtype=0

[source3]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=file://../../streams/ipcam4.mp4
#uri=rtsp://admin:A1234567@192.168.1.107:554/Streaming/Channels/1601
num-sources=1
#drop-frame-interval=2
gpu-id=0
camera-id=3
# (0): memtype_device   - Memory type Device
# (1): memtype_pinned   - Memory type Host Pinned
# (2): memtype_unified  - Memory type Unified
cudadec-memtype=0


[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File
type=2
sync=0
source-id=0
gpu-id=0
nvbuf-memory-type=0

[sink1]
enable=0
type=3
#1=mp4 2=mkv
container=1
#1=h264 2=h265
codec=1
#encoder type 0=Hardware 1=Software
enc-type=0
sync=0
iframeinterval=10
bitrate=2000000
#H264 Profile - 0=Baseline 2=Main 4=High
#H265 Profile - 0=Main 1=Main10
profile=0
output-file=out.mp4
source-id=2


#[sink2]
#enable=0
##Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming
#type=4
##1=h264 2=h265
#codec=1
##encoder type 0=Hardware 1=Software
#enc-type=0
#sync=0
#bitrate=4000000
##H264 Profile - 0=Baseline 2=Main 4=High
##H265 Profile - 0=Main 1=Main10
#profile=0
## set below properties in case of RTSPStreaming
#rtsp-port=8554
#udp-port=5400

[osd]
enable=1
gpu-id=0
border-width=1
text-size=15
text-color=1;1;1;1;
text-bg-color=0.3;0.3;0.3;1
font=Serif
show-clock=0
clock-x-offset=800
clock-y-offset=820
clock-text-size=12
clock-color=1;0;0;0
nvbuf-memory-type=0
display-mask=1

[streammux]
gpu-id=0
##Boolean property to inform muxer that sources are live
live-source=0
batch-size=4
##time out in usec, to wait after the first buffer is available
##to push the batch even if the complete batch is not formed
batched-push-timeout=40000
## Set muxer output width and height
width=1920
height=1080
##Enable to maintain aspect ratio wrt source, and allow black borders, works
##along with width, height properties
enable-padding=0
nvbuf-memory-type=0
## If set to TRUE, system timestamp will be attached as ntp timestamp
## If set to FALSE, ntp timestamp from rtspsrc, if available, will be attached
# attach-sys-ts-as-ntp=1

# config-file property is mandatory for any gie section.
# Other properties are optional and if set will override the properties set in
# the infer config file.
[primary-gie]
enable=1
gpu-id=0
model-engine-file=../../models/mapletree/mapletree.etlt_b4_gpu0_int8.engine
batch-size=4
#Required by the app for OSD, not a plugin property
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
interval=1
gie-unique-id=1
nvbuf-memory-type=0
config-file=config_infer_mapletree.txt

[ds-example]
enable=0
#processing-width=960
#processing-height=544
full-frame=1
blur-objects=0
unique-id=15


[tracker]
enable=1
# For NvDCF and DeepSORT tracker, tracker-width and tracker-height must be a multiple of 32, respectively
tracker-width=640
tracker-height=384
ll-lib-file=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_nvmultiobjecttracker.so
# ll-config-file required to set different tracker types
# ll-config-file=config_tracker_IOU.yml
ll-config-file=config_tracker_NvDCF_perf.yml
# ll-config-file=config_tracker_NvDCF_accuracy.yml
# ll-config-file=config_tracker_DeepSORT.yml
gpu-id=0
enable-batch-process=1
enable-past-frame=1
display-tracking-id=1

[tests]
file-loop=0

Hi,
We add the print in gstdsexample.cpp:

    for (l_frame = batch_meta->frame_meta_list; l_frame != NULL;
      l_frame = l_frame->next)
    {
      frame_meta = (NvDsFrameMeta *) (l_frame->data);
+ g_print("source id = %d \n",frame_meta->source_id);
#ifdef WITH_OPENCV

And can see source id from 0 to 7 with attached config file. Please give it a try.
source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_test.txt (7.3 KB)

Yes can see source ID from gstdsexample.
But now issue is from deepstream_app_main.c.
If you print source id from

static void  all_bbox_generated (AppCtx * appCtx, GstBuffer * buf,  NvDsBatchMeta * batch_meta, guint index)
{
}

all source ids are 0.
all_bbox_generated is inside deepstream_app_main.c.

Hi,
Please add your code to gie_primary_processing_done_buf_prob(). After nvmultistreamtiler the sources are composited into single source, so source_id is 0.

I put here as tracker is used.

static void
write_kitti_past_track_output (AppCtx * appCtx, NvDsBatchMeta * batch_meta)

Thanks

Hi,
Please add your code in write_kitti_output().

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.