/opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps/deepstream-app/deepstream_app.c
create_pipeline (AppCtx * appCtx,
bbox_generated_callback bbox_generated_post_analytics_cb,
bbox_generated_callback all_bbox_generated_cb, perf_callback perf_cb,
overlay_graphics_callback overlay_graphics_cb)
{
multi_src_bin = create_multi_source_bin {
sub_bins[] = create_camera_source_bin |
create_uridecode_src_bin |
create_rtsp_src_bin |
create_uridecode_src_bin_audio;
sub_bins[] - nvstreammux;
};
create_common_elements {
secondary_gie_bin = create_secondary_gie_bin {
sub_bins[] = create_secondary_gie {
secondary_gie = nvinfer | nvinferserver
if (num_children == 0) {
queue - secondary_gie - fakesink
} else {
queue - secondary_gie - tee
}
};
tee - queue
tee - sub_bins[]...
};
dsanalytics_bin = create_dsanalytics_bin {
queue - nvdsanalytics
};
tracker_bin = create_tracking_bin { nvtracker };
primary_gie_bin = create_primary_gie_bin {
queue - nvvideoconvert - (nvinfer | nvinferserver)
};
preprocess_bin = create_preprocess_bin {
queue | nvdspreprocess
};
common_elements = nvmsgconv - tee
{ preprocess_bin - primary_gie_bin - tracker_bin -
dsanalytics_bin - secondary_gie_bin - common_elements -
tee
};
secondary_gie_bin(src) -> bbox_generated_post_analytics_cb()
sink_elem = preprocess_bin
src_elem = tee
};
dsexample_bin = create_dsexample_bin {
queue - nvvideoconvert - capsfilter - dsexample
};
demuxer = { nvstreamdemux };
instance_bins[] = create_processing_instance {
osd_bin = create_osd_bin {
queue - nvvideoconvert - queue - nvdsosd
};
sink_bin = create_sink_bin {
sub_bins[] = create_render_bin |
create_encode_file_bin |
create_udpsink_bin |
create_msg_conv_broker_bin
queue - tee - sub_bins[]
};
osd_bin - sink_bin
(sink)osd_bin -> all_bbox_generated_cb()
(sink)osd_bin -> overlay_graphics_cb()
};
demux_instance_bins[] = create_demux_pipeline {
osd_bin = create_osd_bin {
queue - nvvideoconvert - queue - nvdsosd
};
demux_sink_bin = create_demux_sink_bin {
sub_bins[] = create_render_bin |
create_encode_file_bin |
create_udpsink_bin |
create_msg_conv_broker_bin
queue - tee - sub_bins[]
};
osd_bin - demux_sink_bin
};
tiled_display_bin = create_tiled_display_bin {
queue - nvmultistreamtiler
};
if (tiled_display_config.enable) {
multi_src_bin - (sink_elem-src_elem) - dsexample_bin - tiler_tee
tiler_tee - nvstreamdemux - demux_instance_bins[]
tiler_tee - tiled_display_bin - instance_bins[]
} else {
multi_src_bin - (sink_elem-src_elem) - dsexample_bin - demuxer - instance_bins[]
};
};
沒有留言:
張貼留言