FFmpeg
Data Structures | Functions
v4l2_context.h File Reference
#include <stdatomic.h>
#include <linux/videodev2.h>
#include "libavcodec/avcodec.h"
#include "libavutil/pixfmt.h"
#include "libavutil/frame.h"
#include "libavutil/buffer.h"
#include "v4l2_buffers.h"

Go to the source code of this file.

Data Structures

struct  V4L2Context
 

Functions

int ff_v4l2_context_init (V4L2Context *ctx)
 Initializes a V4L2Context. More...
 
int ff_v4l2_context_set_format (V4L2Context *ctx)
 Sets the V4L2Context format in the v4l2 driver. More...
 
int ff_v4l2_context_get_format (V4L2Context *ctx, int probe)
 Queries the driver for a valid v4l2 format and copies it to the context. More...
 
void ff_v4l2_context_release (V4L2Context *ctx)
 Releases a V4L2Context. More...
 
int ff_v4l2_context_set_status (V4L2Context *ctx, uint32_t cmd)
 Sets the status of a V4L2Context. More...
 
int ff_v4l2_context_dequeue_packet (V4L2Context *ctx, AVPacket *pkt)
 Dequeues a buffer from a V4L2Context to an AVPacket. More...
 
int ff_v4l2_context_dequeue_frame (V4L2Context *ctx, AVFrame *f, int timeout)
 Dequeues a buffer from a V4L2Context to an AVFrame. More...
 
int ff_v4l2_context_enqueue_packet (V4L2Context *ctx, const AVPacket *pkt)
 Enqueues a buffer to a V4L2Context from an AVPacket. More...
 
int ff_v4l2_context_enqueue_frame (V4L2Context *ctx, const AVFrame *f)
 Enqueues a buffer to a V4L2Context from an AVFrame. More...
 

Function Documentation

int ff_v4l2_context_init ( V4L2Context ctx)

Initializes a V4L2Context.

Parameters
[in]ctxA pointer to a V4L2Context. See V4L2Context description for required variables.
Returns
0 in case of success, a negative value representing the error otherwise.

Definition at line 692 of file v4l2_context.c.

Referenced by ff_v4l2_m2m_codec_full_reinit(), v4l2_configure_contexts(), and v4l2_try_start().

int ff_v4l2_context_set_format ( V4L2Context ctx)

Sets the V4L2Context format in the v4l2 driver.

Parameters
[in]ctxA pointer to a V4L2Context. See V4L2Context description for required variables.
Returns
0 in case of success, a negative value representing the error otherwise.

Definition at line 672 of file v4l2_context.c.

Referenced by ff_v4l2_m2m_codec_full_reinit(), ff_v4l2_m2m_codec_reinit(), and v4l2_configure_contexts().

int ff_v4l2_context_get_format ( V4L2Context ctx,
int  probe 
)

Queries the driver for a valid v4l2 format and copies it to the context.

Parameters
[in]ctxA pointer to a V4L2Context. See V4L2Context description for required variables.
[in]probeProbe only and ignore changes to the format.
Returns
0 in case of success, a negative value representing the error otherwise.

Definition at line 645 of file v4l2_context.c.

Referenced by ff_v4l2_m2m_codec_full_reinit(), ff_v4l2_m2m_codec_reinit(), and v4l2_probe_driver().

void ff_v4l2_context_release ( V4L2Context ctx)

Releases a V4L2Context.

Parameters
[in]ctxA pointer to a V4L2Context. The caller is reponsible for freeing it. It must not be used after calling this function.

Definition at line 677 of file v4l2_context.c.

Referenced by ff_v4l2_m2m_codec_end(), ff_v4l2_m2m_codec_full_reinit(), ff_v4l2_m2m_codec_reinit(), and v4l2_m2m_destroy_context().

int ff_v4l2_context_set_status ( V4L2Context ctx,
uint32_t  cmd 
)

Sets the status of a V4L2Context.

Parameters
[in]ctxA pointer to a V4L2Context.
[in]cmdThe status to set (VIDIOC_STREAMON or VIDIOC_STREAMOFF). Warning: If VIDIOC_STREAMOFF is sent to a buffer context that still has some frames buffered, those frames will be dropped.
Returns
0 in case of success, a negative value representing the error otherwise.

Definition at line 541 of file v4l2_context.c.

Referenced by ff_v4l2_m2m_codec_end(), ff_v4l2_m2m_codec_full_reinit(), ff_v4l2_m2m_codec_reinit(), v4l2_receive_packet(), v4l2_stop_decode(), v4l2_stop_encode(), and v4l2_try_start().

int ff_v4l2_context_dequeue_packet ( V4L2Context ctx,
AVPacket pkt 
)

Dequeues a buffer from a V4L2Context to an AVPacket.

The pkt must be non NULL.

Parameters
[in]ctxThe V4L2Context to dequeue from.
[in,out]pktThe AVPacket to dequeue to.
Returns
0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error.

Definition at line 625 of file v4l2_context.c.

Referenced by v4l2_receive_packet().

int ff_v4l2_context_dequeue_frame ( V4L2Context ctx,
AVFrame f,
int  timeout 
)

Dequeues a buffer from a V4L2Context to an AVFrame.

The frame must be non NULL.

Parameters
[in]ctxThe V4L2Context to dequeue from.
[in,out]fThe AVFrame to dequeue to.
[in]timeoutThe timeout for dequeue (-1 to block, 0 to return immediately, or milliseconds)
Returns
0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error.

Definition at line 605 of file v4l2_context.c.

Referenced by v4l2_receive_frame().

int ff_v4l2_context_enqueue_packet ( V4L2Context ctx,
const AVPacket pkt 
)

Enqueues a buffer to a V4L2Context from an AVPacket.

The packet must be non NULL. When the size of the pkt is null, the buffer is not queued but a V4L2_DEC_CMD_STOP command is sent instead to the driver.

Parameters
[in]ctxThe V4L2Context to enqueue to.
[in]pktA pointer to an AVPacket.
Returns
0 in case of success, a negative error otherwise.

Definition at line 580 of file v4l2_context.c.

Referenced by v4l2_receive_frame().

int ff_v4l2_context_enqueue_frame ( V4L2Context ctx,
const AVFrame f 
)

Enqueues a buffer to a V4L2Context from an AVFrame.

The frame must be non NULL.

Parameters
[in]ctxThe V4L2Context to enqueue to.
[in]fA pointer to an AVFrame to enqueue.
Returns
0 in case of success, a negative error otherwise.

Definition at line 555 of file v4l2_context.c.

Referenced by v4l2_send_frame().