L4T Multimedia API Reference

28.1 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
multimedia_api/ll_samples/docs/l4t_mm_jpeg_encode.md
Go to the documentation of this file.
1 Copyright (c) 2016-2017, NVIDIA CORPORATION. All rights reserved.
2 
3 @page l4t_mm_jpeg_encode 05_jpeg_encode
4 @{
5 
6  - [Overview](#overview)
7  - [Building and Running](#build_and_run)
8  - [Flow](#flow)
9  - [Key Structure and Classes](#key)
10 
11 - - - - - - - - - - - - - - -
12 <a name="overview">
13 ## Overview ##
14 
15 This sample demonstrates how to:
16 
17 * Use the libv4l2 conversion component function to allocate buffer
18 * Set up attributes
19 * Use the JPEG encode component to encode YUV data to a file.
20 
21 This sample does not require a camera.
22 
23 <a name="build_and_run">
24 - - - - - - - - - - - - - - -
25 ## Building and Running ##
26 
27 #### Prerequisites ####
28 * You have followed Steps 1-3 in @ref mmapi_build.
29 * If you are building from your host Linux PC (x86), you have
30  followed Step 4 in @ref mmapi_build.
31 
32 ### To build:
33 * Enter:
34 
35  $ cd $HOME/tegra_multimedia_api/samples/05_jpeg_encode
36  $ make
37 
38 ### To run
39 * Enter:
40 
41  $ ./jpeg_encode <in-file> <in-width> <in-height> <out-file> [OPTIONS]
42 
43 <a name="flow">
44 ## Flow
45 The following diagram shows the flow of data through this sample.
46 
47 ![](l4t_mm_jpeg_encoder.jpg)
48 
49 #### Additional Details
50 
51 The output plane is used to receive input and the capture plane is used to produce output.
52 The YUV data format prior to entering the JPEG encoder can be block, linear, or pitch linear.
53 This results in 2 different encode processes: [encodeFromFD](classNvJPEGEncoder.html#a4c7f16d4d8ee39fcc52279ee14418fea) and [encodeFromBuffer](classNvJPEGEncoder.html#a445e1de7f368f3a92af98a789d10172b).
54 `encodeFromFD` allows JPEG encode hardware to process the data directly.
55 `encodeFromBuffer` requires extra format conversion prior to writing to the JPEG file.
56 
57 - - - - - - - - - - - - - - -
58 <a name="key">
59 ## Key Structure and Classes ##
60 
61 The `struct context_t` global structure manages all of the resources in the application.
62 
63 |%NvVideoDecoder |Description|
64 |---|---|
65 |class [NvVideoConverter](classNvVideoConverter.html)|Contains elements and functions regarding video format conversion.|
66 |class [NvJpegEncoder](classNvJPEGEncoder.html)|Contains elements and functions to encode JPEG images.|
67 
68 %NvVideoConverter contains all video converting related elements and functions. Key members of \c %NvVideoConverter used in the sample are:
69 
70 |%NvVideoConverter Member|Description|
71 |---|---|
72 |[output_plane](classNvV4l2Element.html#aaba251827cef1b23e7c42f776e95fee5)|V4l2 output plane.|
73 |[capture_plane](classNvV4l2Element.html#a91806d7ed13b4b2c48758e8a02f46c6d)|V4l2 capture plane.|
74 |[waitForIdle](classNvVideoConverter.html#a2f5d1a234427862adf9cae7323b5e24c)|Wait until all queued output plane buffers are processed and dequeued from the capture plane.|
75 |[setOutputPlaneFormat](classNvVideoConverter.html#a38b53f4d1e2c357360893756f417faf6)|Set output plane format.|
76 |[setCapturePlaneFormat](classNvVideoConverter.html#ad91e70f0e8b5f5a8b4deefa5a26ffe85)|Set capture plane format.|
77 
78 The %NvVideoConverter elements `output_plane` and `capture_plane` belong to the [NvV4l2ElementPlane](group__l4t_mm__nvv4lelementplane__group.html) class. Key members of \c %NvV4l2ElementPlane used in the sample are as follows:
79 
80 |Element|Description|
81 |---|---|
82 |[setupPlane](classNvV4l2ElementPlane.html#a89959f455e5222f686187cc826b1b345)|Setup the plane of V4l2 element.|
83 |[deinitPlane](classNvV4l2ElementPlane.html#af89cfe87d8f818beb0478bcf5b72574c)|Destroy the plane of V4l2 element.|
84 |[setStreamStatus](classNvV4l2ElementPlane.html#a03164dde4d7ab41f3e92b41e13059316)|Start/Stop the stream.|
85 |[setDQThreadCallback](classNvV4l2ElementPlane.html#a37f213325e0e4857180f5b2319317d6a)|Set the callback function of the dqueue buffer thread.|
86 |[startDQThread](classNvV4l2ElementPlane.html#a31f77f5e5ed1f320caa44a868a7cbedd)|Start the thread of the dqueue buffer.|
87 |[stopDQThread](classNvV4l2ElementPlane.html#aa798d14493de321fa90aeab6d944ca87)|Stop the thread of the dqueue buffer.|
88 |[qBuffer](classNvV4l2ElementPlane.html#af4d52964fcfd37082f47682e457f5e95)|Queue the V4l2 buffer.|
89 |[dqBuffer](classNvV4l2ElementPlane.html#a8dfcbc666ee6f36a02abfb1170ae05cd)|Dequeue the V4l2 buffer.|
90 |[getNumBuffers](classNvV4l2ElementPlane.html#ac5cd394a7e0a4afd69395759aeac8787)|Get the number of the V4l2 buffer.|
91 |[getNumQueuedBuffers](#NvV4l2ElementPlane::getNumQueuedBuffers) |Get the number of the V4l2 buffer under queue.|
92 |[getNthBuffer](classNvV4l2ElementPlane.html#a868d438908f3d267dd4af1033133892f)| Get the \c %NvBuffer at Index N.|
93 
94 The %NvJpegEncoder class contains all of the functions for JPEG encoding. Key members used are:
95 
96 |%NvV4l2ElementPlane|Description|
97 |---|---|
98 |[encodeFromFd](classNvJPEGEncoder.html#a4c7f16d4d8ee39fcc52279ee14418fea)|Encode from FD of buffer exported by V4L2 element.|
99 |[encodeFromBuffer](classNvJPEGEncoder.html#a445e1de7f368f3a92af98a789d10172b)|Encode from pointers of buffer data.|
100 
Defines a helper class for V4L2 Video Decoder.
Defines a helper class for operations performed on a V4L2 Element plane.
Class representing a buffer.
Definition: NvBuffer.h:85
Defines a helper class for V4L2 Video Converter.
uint32_t getNumQueuedBuffers()
Gets the number of buffers currently queued on the plane.