L4T Multimedia API Reference

27.1 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NvVideoEncoder.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of NVIDIA CORPORATION nor the names of its
13  * contributors may be used to endorse or promote products derived
14  * from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
45 #ifndef __NV_VIDEO_ENCODER_H__
46 #define __NV_VIDEO_ENCODER_H__
47 
48 #include "NvV4l2Element.h"
49 
60 {
61 public:
76  static NvVideoEncoder *createVideoEncoder(const char *name, int flags = 0);
77 
79 
92  int setOutputPlaneFormat(uint32_t pixfmt, uint32_t width, uint32_t height);
105  int setCapturePlaneFormat(uint32_t pixfmt, uint32_t width,
106  uint32_t height, uint32_t sizeimage);
107 
119  int setFrameRate(uint32_t framerate_num, uint32_t framerate_den);
120 
132  int setBitrate(uint32_t bitrate);
133 
146  int setProfile(uint32_t profile);
147 
160  int setLevel(enum v4l2_mpeg_video_h264_level level);
161 
174  int setRateControlMode(enum v4l2_mpeg_video_bitrate_mode mode);
175 
187  int setIFrameInterval(uint32_t interval);
188 
200  int setIDRInterval(uint32_t interval);
201 
211  int forceIDR();
212 
226 
240  int setSliceLength(v4l2_enc_slice_length_type type, uint32_t length);
241 
256  int setROIParams(uint32_t buffer_index, v4l2_enc_frame_ROI_params & params);
257 
270 
283 
296 
309 
324  int SetInputMetaParams(uint32_t buffer_index, v4l2_ctrl_videoenc_input_metadata &params);
325 
336  int setVirtualBufferSize(uint32_t size);
337 
348  int setNumReferenceFrames(uint32_t num_frames);
349 
360  int setSliceIntrarefresh(uint32_t interval);
361 
372  int setNumBFrames(uint32_t num);
373 
385  int setInsertSpsPpsAtIdrEnabled(bool enabled);
386 
397 
413  int getMetadata(uint32_t buffer_index,
415 
431  int getMotionVectors(uint32_t buffer_index,
433 
449  int setQpRange(uint32_t MinQpI, uint32_t MaxQpI, uint32_t MinQpP,
450  uint32_t MaxQpP, uint32_t MinQpB, uint32_t MaxQpB);
451 
452 
453 private:
457  NvVideoEncoder(const char *name, int flags);
458 
459  static const NvElementProfiler::ProfilerField valid_fields =
460  NvElementProfiler::PROFILER_FIELD_TOTAL_UNITS |
461  NvElementProfiler::PROFILER_FIELD_LATENCIES |
462  NvElementProfiler::PROFILER_FIELD_FPS;
463 };
466 #endif
Holds the encoder frame ROI parameters.
Holds the encoder output metadata for a frame, to be used with V4L2_CID_MPEG_VIDEOENC_METADATA IOCTL...
int setRateControlMode(enum v4l2_mpeg_video_bitrate_mode mode)
Sets the encoder rate control mode.
NVIDIA Multimedia API: V4L2 Helper Class
int setSliceLength(v4l2_enc_slice_length_type type, uint32_t length)
Sets the encoder output slice length.
v4l2_enc_temporal_tradeoff_level_type
Enum specifying the types of encoder temporal tradeoff levels.
int setTemporalTradeoff(v4l2_enc_temporal_tradeoff_level_type level)
Sets the encoder Temporal Tradeoff.
Defines a helper class for V4L2 based components.
Definition: NvV4l2Element.h:65
int setFrameRate(uint32_t framerate_num, uint32_t framerate_den)
Sets the encode framerate.
int setProfile(uint32_t profile)
Sets the encoder profile.
int enableMotionVectorReporting()
Enables video encoder output motion vector metadata reporting.
v4l2_enc_slice_length_type
Enum specifying the type of slice length.
int getMetadata(uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata &enc_metadata)
Gets metadata for the encoded capture plane buffer.
int setCapturePlaneFormat(uint32_t pixfmt, uint32_t width, uint32_t height, uint32_t sizeimage)
Sets the format on the encoder capture plane.
Holds the params to configure encoder for external rps control.
Holds the params to configure encoder for external rate control mode.
int enableROI(v4l2_enc_enable_roi_param &params)
Enables External ROI.
int setNumReferenceFrames(uint32_t num_frames)
Sets the number of reference frames of the encoder.
int setROIParams(uint32_t buffer_index, v4l2_enc_frame_ROI_params &params)
Sets the Region of Interest (ROI) parameters for the next buffer, which will be queued on the output ...
Defines a helper class for V4L2 Video Encoder.
int setBitrate(uint32_t bitrate)
Sets the encoder bitrate.
int setIDRInterval(uint32_t interval)
Sets the encoder IDR interval.
int setOutputPlaneFormat(uint32_t pixfmt, uint32_t width, uint32_t height)
Sets the format on the encoder output plane.
int setLevel(enum v4l2_mpeg_video_h264_level level)
Set the encoder level.
static NvVideoEncoder * createVideoEncoder(const char *name, int flags=0)
Creates a new V4L2 Video Encoder object named name.
Holds the params to configure encoder for ROI parameters encoding.
Holds the motion vector parameters for one complete frame.
int getMotionVectors(uint32_t buffer_index, v4l2_ctrl_videoenc_outputbuf_metadata_MV &enc_mv_metadata)
Gets motion vector metadata for the encoded capture plane buffer.
int setInsertSpsPpsAtIdrEnabled(bool enabled)
Enables/disables insert SPS PPS at every IDR.
int setVirtualBufferSize(uint32_t size)
Sets the virtual buffer size of the encoder.
int setIFrameInterval(uint32_t interval)
Sets the encoder I-frame interval.
int enableExternalRPS(v4l2_enc_enable_ext_rps_ctr &params)
Enable External RPS.
int enableReconCRC(v4l2_enc_enable_reconcrc_param &params)
Enables Recon CRC.
Holds the encoder frame input metadata parameters.
int enableExternalRC(v4l2_enc_enable_ext_rate_ctr &params)
Enable External Picture RC.
int SetInputMetaParams(uint32_t buffer_index, v4l2_ctrl_videoenc_input_metadata &params)
Set input Metadata parameters for the next buffer which will be queued on output plane with index buf...
int setNumBFrames(uint32_t num)
Sets the number of B frames to P frames.
int setQpRange(uint32_t MinQpI, uint32_t MaxQpI, uint32_t MinQpP, uint32_t MaxQpP, uint32_t MinQpB, uint32_t MaxQpB)
Sets QP values for I/P/B frames.
int setSliceIntrarefresh(uint32_t interval)
Sets slice intra-refresh interval params.
Holds the params to configure encoder for Reconstructed CRC encoding.
int forceIDR()
Forces an IDR frame.