L4T Multimedia API Reference

28.1 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
12_camera_v4l2_cuda


Overview

This sample demonstrates how to capture images from a V4L2 YUV type of camera and share the image stream with NVIDIA® CUDA® engines to draw a black box on the upper left corner.


Building and Running

Prerequisites

  • You have followed Steps 1-3 in Building and Running.
  • If you are building from your host Linux PC (x86), you have followed Step 4 in Building and Running.
  • You have the following hardware:
    • V4L2 Camera (USB or YUV Camera with the format YUYV/YVYU/UYVY/VYUY)
    • Display

To build:

  • Enter:
      $ cd 12_camera_v4l2_cuda
      $ make
    

To run

  • Enter:

      $ ./camera_v4l2_cuda -d /dev/video0 -s 1280x720 -f YUYV -c
    

    The -c option enables CUDA processing.

  • Or enter:

      $ ./camera_v4l2_cuda -d /dev/video0 -s 640x480 -f YUYV -n 30 -c
    

    The -n option saves the n-th frame before video converter processing.

To view supported options

  • Use the -h option.


Flow

The following diagram shows the flow of data through this sample.

Block Diagram

Block Diagram


Key Structure and Functions

The sample defines the structure and functions listed in the following tables.

StructureDescription
context_tGlobal structure to save the context for V4L2 camera, VIC, CUDA and EglRenderer.


FunctionDescription
init_componentsInitializes V4L2 camera, VIC, and EglRenderer.
prepare_buffersAllocates buffers for VIC output_plane and capture_plane. Then, it shares the buffers with V4L2 Camera, CUDA, and EglRenderer.
start_streamStarts V4L2 camera streaming and VIC.
conv_capture_dqbuf_thread_callbackProcesses the de-queued buffer with CUDA and renders it to the display.
start_captureMain thread to enqueue and dequeue buffers.
stop_streamStops V4L2 camera streaming.