๐ English Abstract
This comprehensive technical guide addresses RTSP stream decoding buffer overflow issues and frame drop phenomena in NVIDIA Jetson-based DeepStream SDK pipelines. It explores the internal mechanics of hardware-accelerated video decoding, GStreamer queue dynamics, and network jitter handling. Furthermore, it details memory optimization strategies using NVMM (NVIDIA Video Memory Manager) and Zero-Copy architecture to minimize CPU-GPU memory copy overhead in edge AI applications.
NVIDIA Jetson ์๋ฒ ๋๋ ๋๋ฐ์ด์ค(Embedded Device)์์ ๋ฉํฐ์ฑ๋ RTSP(Real-Time Streaming Protocol) ์นด๋ฉ๋ผ ์คํธ๋ฆผ์ ์ ๋ ฅ๋ฐ์ ์ค์๊ฐ ๋น์ AI ์ธํผ๋ฐ์ค(Inference) ์์คํ ์ ๊ตฌ์ถํ ๋ ๊ฐ์ฅ ํํ๊ฒ ์ง๋ฉดํ๋ ๋ฌธ์ ๋ ํ๋ ์ ์ ์ค(Frame Drop)๊ณผ ๋น๋์ค ๋์ฝ๋ฉ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ(Buffer Overflow)์ ๋๋ค. ๋คํธ์ํฌ ๋ณ๋์ฑ์ผ๋ก ์ธํ ์งํฐ(Jitter)๋ ๋์ฝ๋ฉ ๋ฐ ํ๋ ์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์์์ ๋ฉ๋ชจ๋ฆฌ ๋ณ๋ชฉ์ ์ ์ฒด ํ์ดํ๋ผ์ธ์ ํ์ดํ๋ผ์ธ ๋ ์ดํด์(Latency)๋ฅผ ์ฆ๊ฐ์ํค๊ณ ๊ณ ํ์ง ์คํธ๋ฆผ ์ฒ๋ฆฌ ์ ์์คํ ๋ค์ด์ ์ ๋ฐํฉ๋๋ค.
๋ณธ ํฌ์คํ ์์๋ NVIDIA DeepStream SDK ํ์ดํ๋ผ์ธ ๋ด์์ ๋์ฝ๋ฉ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ ๋ด๋ถ ๋ฉ์ปค๋์ฆ์ ์ฌ์ธต ๋ถ์ํ๊ณ , NVIDIA ๋น๋์ค ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์(NVMM, NVIDIA Video Memory Manager)๋ฅผ ํ์ฉํ **Zero-Copy(์ ๋ก ์นดํผ)** ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ๊ธฐ๋ฒ ๋ฐ ์ค์ ํ๋ผ๋ฏธํฐ ํธ๋ฌ๋ธ์ํ ์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ค๋ฃน๋๋ค.
1. RTSP ์คํธ๋ฆผ ๋์ฝ๋ฉ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ์ ์์ธ๊ณผ ์ฆ์
์ฃ์ง ์ปดํจํ (Edge Computing) ํ๊ฒฝ์์ IP ์นด๋ฉ๋ผ๋ ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ํจํท ๋๋ฌ ์๊ฐ์ด ๋ถ๊ท ์ผํด์ง๋ ์งํฐ(Jitter) ํ์์ ๊ฒช์ต๋๋ค. DeepStream ํ์ดํ๋ผ์ธ ๋ด๋ถ์์ ์ด๋ฌํ ์ค์๊ฐ ์ ๋ ฅ ์คํธ๋ฆผ์ ์ ์ ํ ์ ์ดํ์ง ๋ชปํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฐ. GStreamer ํ(Queue) ์์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ
DeepStream์ ๊ธฐ๋ณธ์ ์ผ๋ก GStreamer ํ๋ ์์ํฌ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค. ๋คํธ์ํฌ ์คํ์์ ๋ฐ์ดํฐ ํจํท์ ์์ ํ๋ rtspsrc ํ๋ฌ๊ทธ์ธ์ ์์ ๋ RTP ํจํท์ ๋ด๋ถ ๋ฒํผ์ ์ ์ฅํฉ๋๋ค. ์ด๋ ๋ฐฑ์๋์ ๋์ฝ๋(nvv4l2decoder)๋ ์ถ๋ก ์์ง(nvinfer)์ด ํ๋ ์์ ์๋นํ๋ ์๋๋ณด๋ค ๋คํธ์ํฌ ์์ ์๋๊ฐ ์ผ์ ์๊ฐ ๋นจ๋ผ์ง๊ฑฐ๋ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋๋ฉด Queue ๋ด๋ถ์ ํจํท์ด ์์ด๊ฒ ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ ๋ฒํผ ํ๊ณ ๋๋ฌ: Queue์
max-size-buffers,max-size-bytes,max-size-timeํ๊ณ์ ๋๋ฌํ๋ฉด ์ ๊ท ๋ค์ด์ค๋ ํจํท์ด ๊ฐ์ ๋ก ๋ฒ๋ ค์ง๋๋ค. - ์ฆ์: ํ๋ฉด ๊นจ์ง(Artifacts), ๋น๋์ค ํธ๋ํน ์ฐ์ ํ์,
GST_WARNING๋ก๊ทธ ๋ฐ ํ๋ ์ ๋๋กญ ๋ฐ์.
๋. nvv4l2decoder์ hardware Surface ํ ๋น ๋ฌธ์
Jetson์ ํ๋์จ์ด ๋น๋์ค ๋์ฝ๋(NVDEC)๋ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ์ํด ๊ณ ์ ๋ ์์ NVMM ์บก์ฒ ๋ฒํผ(Capture Buffers)๋ฅผ ์์ฑํฉ๋๋ค. downstream ํ๋ฌ๊ทธ์ธ(์: nvstreammux)์ด ์ด์ ํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์ํผ์ค(Surface)๋ฅผ ์ ์์ ํด์ (Release)ํ์ง ์๊ณ ์ค๋ซ๋์ ์ฅ๊ณ ์์ผ๋ฉด, ๋์ฝ๋๋ ์ ํ๋ ์์ ๋ณตํธํํ ๋น ๋ฒํผ๋ฅผ ํ๋ณดํ์ง ๋ชปํด ๊ฒฐ๊ตญ ํ๋ ์์ ๋ฒ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
2. NVMM(NVIDIA Video Memory Manager) ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ Zero-Copy ์๋ฆฌ
Jetson ๋ชจ๋(Jetson Orin, Xavier ๋ฑ)์ CPU์ GPU๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์ผํ LPDDR DRAM์ ๊ณต์ ํ๋ ํตํฉ ๋ฉ๋ชจ๋ฆฌ ์ํคํ ์ฒ(Unified Memory Architecture)๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ํํธ์จ์ด ๋ ์ด์ด์์๋ Linux OS ์ปค๋ ๋ฉ๋ชจ๋ฆฌ(System RAM)์ NVIDIA ํ๋์จ์ด ๊ฐ์๊ธฐ ๋๋ผ์ด๋ฒ๊ฐ ์ฌ์ฉํ๋ NVMM ์์ญ์ผ๋ก ๋ช ํํ ๊ตฌ๋ถ๋ฉ๋๋ค.
๊ฐ. ์ผ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ vs NVMM Zero-Copy ๋น๊ต
DeepStream ํ์ดํ๋ผ์ธ ์ต์ ํ์ ํต์ฌ์ ๋ฐ์ดํฐ๋ฅผ System RAM์ผ๋ก ์ฝ์ด ๋ค์ธ ํ CUDA ๋ฉ๋ชจ๋ฆฌ๋ก cudaMemcpy๋ฅผ ์ํํ๋ ๋นํจ์จ์ ์ธ ์ฐ์ฐ์ ์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค.
| ๊ตฌ๋ถ | ์ผ๋ฐ ๋น๋์ค ํ์ดํ๋ผ์ธ (Host Memory) | NVMM Zero-Copy ํ์ดํ๋ผ์ธ |
|---|---|---|
| ๋ฉ๋ชจ๋ฆฌ ์์ญ | Host OS Memory (RAM) | NVMM (Hardware DPA/DMA Mapped) |
| ๋ฐ์ดํฐ ์ด๋ | Network โ RAM โ GPU VRAM (๋ณต์ฌ 2ํ ์ด์) | Network โ NVMM (Zero CPU Copy) |
| CPU ์ ์ ์จ | ๋์ (Memory Copy Overhead) | ๊ทน๋๋ก ๋ฎ์ (DMA ๊ธฐ๋ฐ ์ด๋) |
| ์ฒ๋ฆฌ ์ง์ฐ (Latency) | ๋์ (์ง์ฐ ๋ฐ์ ๊ฐ๋ฅ์ฑ) | ์ด์ ์ง์ฐ (Ultra-low Latency) |
๋. NvBufSurface ๋ฐ NVMM ํฌ์ธํฐ ์ฒ๋ฆฌ
NVMM ๋ฉ๋ชจ๋ฆฌ ๋ด ํ๋ ์ ๋ฐ์ดํฐ๋ NvBufSurface ๊ตฌ์กฐ์ฒด๋ก ์ถ์ํ๋ฉ๋๋ค. DeepStream ํ์ดํ๋ผ์ธ ์์ ํ๋ฌ๊ทธ์ธ๋ค์ ์ค์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ(Pixels)๋ฅผ ์ง์ ์ฃผ๊ณ ๋ฐ๋ ๋์ , NvBufSurface์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ํธ๋ค ํฌ์ธํฐ(Pointer)๋ง ํต๊ณผ์ํต๋๋ค. ์ด๋ฅผ ํตํด ํ๋ ์ ๋ณต์ฌ ๋น์ฉ์ ์์ ํ ์์ ๋ **Zero-Copy(์ ๋ก ์นดํผ)**๋ฅผ ๊ตฌํํฉ๋๋ค.
3. ์ค์ ์ฉ ํด๊ฒฐ์ฑ : DeepStream ํ์ดํ๋ผ์ธ ์ต์ ํ ํธ๋ฌ๋ธ์ํ
RTSP ์คํธ๋ฆผ ์ ์ค ๋ฌธ์ ๋ฐ ๋์ฝ๋ ์ค๋ฒํ๋ก์ฐ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ตฌ์ฒด์ ์ธ DeepStream ์ค์ ๋ฐ ์ฝ๋ ๋ ๋ฒจ ์ต์ ํ ๊ฐ์ด๋์ ๋๋ค.
๊ฐ. RTSP ์์ค ํ๋ผ๋ฏธํฐ(rtspsrc) ๋ฏธ์ธ ์กฐ์
RTSP ์
๋ ฅ ์์ ๋ถ์ธ rtspsrc ์์์๋ ์งํฐ ๋ฒํผ(Jitter Buffer) ๊ด๋ จ ์์ฑ์ ํ์๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
- latency: ๊ธฐ๋ณธ๊ฐ(200ms)์ด ๋๋ฌด ์์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ๋ณ๋ ์ ํ๋ ์์ด ๋๋ ๋๋กญ๋ฉ๋๋ค. ๋คํธ์ํฌ ํ๊ฒฝ์ ๋ง์ถ์ด 500ms~1000ms ์์ค์ผ๋ก ์ํฅ ์ค์ ํฉ๋๋ค.
- drop-on-latency:
true์ค์ ์, ์ง์ ๋ ์ง์ฐ์๊ฐ(Latency)์ ์ด๊ณผํ ์ค๋๋ ํจํท์ ์ฆ์ ํ๊ธฐํ์ฌ ์ ์ฒด ์์คํ ์ถ๋ก ์ง์ฐ์ด ๋์ ๋๋ ํ์์ ๋ฐฉ์งํฉ๋๋ค. - protocols: UDP ํจํท ์์ค์ด ์ฆ์ ํ๊ฒฝ์ด๋ผ๋ฉด ์์ ์ ์ธ
TCP(0x04)ํ๋กํ ์ฝ๋ก ๊ฐ์ ์ง์ ํฉ๋๋ค.
๋. nvstreammux ์์ ๋ฐฐ์น ๋ฐ ๋ฒํผ ๊ด๋ฆฌ ์ต์ ํ
์ฌ๋ฌ RTSP ์ฑ๋์ ํ๋์ ๋ฐฐ์น๊ฐ๊ณต(Batching)์ผ๋ก ํฉ์ณ์ฃผ๋ nvstreammux ์ค์ ๋ํ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ค์ด๋ ํต์ฌ ์ง์ ์
๋๋ค.
- batched-push-timeout: ๋ฐฐ์น ํฌ๊ธฐ(Batch Size)๊ฐ ๋ค ์ฑ์์ง์ง ์๋๋ผ๋ ๋ค์ ๋จ๊ณ๋ก ํ๋ ์์ ๋ฐ์ด๋ด๋ ํ์์์ ์๊ฐ(๋ง์ดํฌ๋ก์ด)์
๋๋ค. RTSP ์คํธ๋ฆผ์ FPS์ ๋ง์ถฐ ์กฐ์ ํด์ผ ํฉ๋๋ค. (์: 30fps์ธ ๊ฒฝ์ฐ
1000000 / 30 = 33333 us) - live-source: RTSP ๊ฐ์ ๋ผ์ด๋ธ ์คํธ๋ฆผ ์ฒ๋ฆฌ ์ ๋ฐ๋์
1(true)๋ก ์ค์ ํด์ผ ๋์ฝ๋ ํ์์คํฌํ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐฉ์ง๋ฉ๋๋ค. - nvbuf-memory-type: Jetson ํ๊ฒฝ์์๋
0 (NVBUF_MEM_DEFAULT / NVBUF_MEM_CUDA_PINNED)๋๋4 (NVBUF_MEM_SURFACE_ARRAY)๋ฅผ ์ฌ์ฉํ์ฌ NVMM ํ ๋น ์ ํ์ ๋ช ์ํฉ๋๋ค.
๋ค. Queue ๋ฒํผ ํฌ๊ธฐ์ Drop ์์ฑ ํ์ดํ๋ผ์ธ ์ ์ฉ ์์
GStreamer ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ์ rtspsrc ๋ค์ nvv4l2decoder ์์ ์ ์ ํ Queue ์์ฑ์ ์ง์ ํด์ผ ํฉ๋๋ค.
rtspsrc location=rtsp://192.168.1.100:554/stream latency=500 drop-on-latency=true protocols=tcp ! \ rtph264depay ! h264parse ! \ queue max-size-buffers=16 max-size-bytes=0 max-size-time=0 leaky=2 ! \ nvv4l2decoder num-extra-surfaces=8 ! \ nvvideoconvert nvbuf-memory-type=0 ! \ nvstreammux name=mux batch-size=4 width=1920 height=1080 batched-push-timeout=33333 live-source=1 ! \ nvinfer config-file-path=config_infer.txt ! \ nvstreamdemux name=demux ...
์ ์์์์ leaky=2 (downstream/downstream leaky) ์์ฑ์ Queue ๋ฒํผ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด ์ค๋๋ ํจํท์ ๋ฒ๋ฆผ์ผ๋ก์จ ๋์ฝ๋ ์ค๋ฒํ๋ก์ฐ๋ก ์ธํด ์ ์ฒด ํ์ดํ๋ผ์ธ์ด ๋ฉ์ถ๋ ๋ฐ๋๋ฝ(Deadlock) ์ํ๋ฅผ ์๋ฐฉํฉ๋๋ค. ๋ํ num-extra-surfaces=8 ์์ฑ์ ํตํด ๋์ฝ๋ ๋ด๋ถ ๋น๋์ค ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๊ฐ์๋ฅผ ๋๋ ค ์๊ฐ์ ์ธ ๋ณ๋ชฉ ์ ๋๋กญ์ ์ํํฉ๋๋ค.
4. Custom Plugin ๋ฐ C/C++ Python ํ๋ก๋ธ์์์ NVMM ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ท์น
GStreamer ๋ฒ์ค ํ๋ก๋ธ(Probe)๋ ์ปค์คํ C/C++ ๋๋ Python ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐํ ๋ Zero-Copy ์ต์ ํ ์์น์ ๊นจ๋จ๋ฆฌ๋ ์ค์๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํฉ๋๋ค.
๊ฐ. ์ ๋ ํ์ง ๋ง์์ผ ํ ์ ๊ทผ (Anti-Pattern)
ํ๋ก๋ธ ํจ์ ์์์ NvBufSurfaceMap์ ํธ์ถํ ๋ค, CPU ํธ์คํธ ๋ฉ๋ชจ๋ฆฌ(System RAM)๋ก ๋ฐ์ดํฐ๋ฅผ memcpy ํ์ฌ OpenCV cv::Mat์ผ๋ก ๋ณํํ๋ ๋์์ Zero-Copy ๊ตฌ์กฐ๋ฅผ ๋ฌด๋๋จ๋ฆฝ๋๋ค. ๋ฉํฐ์ฑ๋ 1080p ํ๊ฒฝ์์ ์ด ์์
์ ์ฆ๊ฐ์ ์ธ CPU ๋ณ๋ชฉ๊ณผ ํจ๊ป ๋์ฝ๋ ๋ฒํผ ๋น์์ง ์ง์ฐ์ผ๋ก ์ด์ด์ง๋๋ค.
๋. ์ฌ๋ฐ๋ฅธ NVMM ๊ธฐ๋ฐ GPU ์ง์ ์ฒ๋ฆฌ (Correct Pattern)
์ด๋ฏธ์ง ๋ณํ์ด๋ ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ ํธ์คํธ ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ ๋์ , NVMM ๋ฉ๋ชจ๋ฆฌ ์ฃผ์(Device Pointer)๋ฅผ ๊ทธ๋๋ก ์ปค์คํ
CUDA ์ปค๋(CUDA Kernel)์ด๋ VPI(Video Processing Interface) ๋๋ OpenCV CUDA ๋ชจ๋(cv::cuda::GpuMat)์ ์ง์ ์ ๋ฌํด์ผ ํฉ๋๋ค.
// C++ DeepStream Probe ์์
static GstPadProbeReturn
crop_probe_callback(GstPad *pad, GstPadProbeInfo *info, gpointer u_data) {
GstBuffer *buf = (GstBuffer *)info->data;
NvBufSurface *surface = NULL;
GstMapInfo in_map_info;
gst_buffer_map(buf, &in_map_info, GST_MAP_READ);
surface = (NvBufSurface *)in_map_info.data;
// Zero-Copy: CUDA ๋ฉ๋ชจ๋ฆฌ ํฌ์ธํฐ ์ง์ ์ฐธ์กฐ
void *cuda_dev_ptr = surface->surfaceList[0].dataPtr;
// ํธ์คํธ ๋ณต์ฌ(memcpy) ์์ด CUDA ์ปค๋ ์ง์ ์คํ
launch_custom_cuda_kernel(cuda_dev_ptr, surface->surfaceList[0].width, surface->surfaceList[0].height);
gst_buffer_unmap(buf, &in_map_info);
return GST_PAD_PROBE_OK;
}
5. ์ฃ์ง ์ผ์ด์ค ๋ฐ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฒ
๊ฐ. Tegrastat ๋ฐ DeepStream SDK ๋๊ตฌ๋ฅผ ํตํ ๋ฌธ์ ๊ฐ์ง
ํ์ดํ๋ผ์ธ ์์ ๋์ฝ๋ ๋ณ๋ชฉ ์ฌ๋ถ๋ฅผ ํ๋จํ๊ธฐ ์ํด Jetson CLI ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ธ tegrastat ๋ช
๋ น์ด๋ฅผ ํ์ฉํฉ๋๋ค.
- NVDEC ์ฌ์ฉ๋ฅ ํ์ธ:
NVDEC 0%๋๋ ์ง์์ ์ธ100%์ ์ง๋ ๋์ฝ๋ ์ ๋ ฅ ๋ถ์กฑ ๋๋ ์ฒ๋ฆฌ ํ๊ณ ๋๋ฌ์ ๋ํ๋ ๋๋ค. - RAM vs RAM_NVM ๋ถ์: SWAP ๋ฉ๋ชจ๋ฆฌ ์ ์ ๊ฐ ๋์ด๋๊ฑฐ๋ RAM ์ฌ์ฉ๋์ด ์ง์ ์์นํ๋ฉด NVMM Surface ํด์ ๋์(Memory Leak)๊ฐ ๋ฐ์ํ๋ ์ํ์ ๋๋ค.
๋. ๋คํธ์ํฌ ์ฌ์ฐ๊ฒฐ ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง
RTSP ๋จ์ ๋ฐ ์ฌ์ฐ๊ฒฐ ์ด๋ฒคํธ ๋ฐ์ ์ ๊ธฐ์กด ํ์ดํ๋ผ์ธ์ rtspsrc ์์๋ฅผ ์ ์์ ์ผ๋ก GST_STATE_NULL๋ก ์ ํํ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ผ ํฉ๋๋ค. NVMM ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋์ง ์์ ์ํ์์ ์๋ก์ด RTSP ์ ์์ ์๋ํ๋ฉด HW ๋์ฝ๋์ ๋ฒํผ ํ(Buffer Pool)์ด ๊ณ ๊ฐ๋์ด ๋์ฝ๋ฉ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฌดํ ๋ฐ๋ณต๋ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
NVIDIA Jetson ๊ธฐ๋ฐ DeepStream ํ์ดํ๋ผ์ธ์ ์ค์๊ฐ์ฑ์ ๋ณด์ฅํ๊ณ ํ๋ ์ ์ ์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ ๋คํธ์ํฌ ๋ ์ด์ด์ ์งํฐ ์ํ์ GPU ๊ฐ์ ๋์ฝ๋ ๋ฒํผ ๊ด๋ฆฌ, ๊ทธ๋ฆฌ๊ณ **NVMM Zero-Copy ๋ฉ๋ชจ๋ฆฌ ์ํคํ ์ฒ**์ ๋ํ ๋ช ํํ ์ดํด๊ฐ ํ์์ ์ ๋๋ค.
๋ณธ ๊ฐ์ด๋์์ ์ ์ํ rtspsrc ์ง์ฐ์๊ฐ ์ต์
, nvv4l2decoder ๋ฒํผ ํ์ฅ, Queue์ leaky ์ค์ , ๊ทธ๋ฆฌ๊ณ CUDA Device Pointer ์ง์ ์ฐ์ฐ ํจํด์ ์ ์ฉํ๋ฉด, ๋ค์ค RTSP ์คํธ๋ฆผ ํ๊ฒฝ์์๋ ์ ์ค ์์ด ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ฃ์ง AI ๋น์ ํ์ดํ๋ผ์ธ์ ์ด์ฉํ ์ ์์ต๋๋ค.