FFmpeg
Data Structures | Macros | Functions | Variables
vf_framepack.c File Reference

Generate a frame packed video, by combining two views in a single surface. More...

#include <string.h>
#include "libavutil/common.h"
#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/rational.h"
#include "libavutil/stereo3d.h"
#include "avfilter.h"
#include "formats.h"
#include "internal.h"
#include "video.h"

Go to the source code of this file.

Data Structures

struct  FramepackContext
 

Macros

#define LEFT   0
 
#define RIGHT   1
 
#define OFFSET(x)   offsetof(FramepackContext, x)
 
#define V   AV_OPT_FLAG_VIDEO_PARAM
 

Functions

static int query_formats (AVFilterContext *ctx)
 
static av_cold void framepack_uninit (AVFilterContext *ctx)
 
static int config_output (AVFilterLink *outlink)
 
static void horizontal_frame_pack (AVFilterLink *outlink, AVFrame *out, int interleaved)
 
static void vertical_frame_pack (AVFilterLink *outlink, AVFrame *out, int interleaved)
 
static av_always_inline void spatial_frame_pack (AVFilterLink *outlink, AVFrame *dst)
 
static int try_push_frame (AVFilterContext *ctx)
 
static int filter_frame_left (AVFilterLink *inlink, AVFrame *frame)
 
static int filter_frame_right (AVFilterLink *inlink, AVFrame *frame)
 
static int request_frame (AVFilterLink *outlink)
 
 AVFILTER_DEFINE_CLASS (framepack)
 

Variables

static enum AVPixelFormat formats_supported []
 
static const AVOption framepack_options []
 
static const AVFilterPad framepack_inputs []
 
static const AVFilterPad framepack_outputs []
 
AVFilter ff_vf_framepack
 

Detailed Description

Generate a frame packed video, by combining two views in a single surface.

Definition in file vf_framepack.c.

Macro Definition Documentation

#define LEFT   0
#define RIGHT   1
#define OFFSET (   x)    offsetof(FramepackContext, x)

Definition at line 366 of file vf_framepack.c.

#define V   AV_OPT_FLAG_VIDEO_PARAM

Definition at line 367 of file vf_framepack.c.

Function Documentation

static int query_formats ( AVFilterContext ctx)
static

Definition at line 62 of file vf_framepack.c.

static av_cold void framepack_uninit ( AVFilterContext ctx)
static

Definition at line 71 of file vf_framepack.c.

static int config_output ( AVFilterLink outlink)
static

Definition at line 80 of file vf_framepack.c.

static void horizontal_frame_pack ( AVFilterLink outlink,
AVFrame out,
int  interleaved 
)
static

Definition at line 147 of file vf_framepack.c.

Referenced by spatial_frame_pack().

static void vertical_frame_pack ( AVFilterLink outlink,
AVFrame out,
int  interleaved 
)
static

Definition at line 212 of file vf_framepack.c.

Referenced by spatial_frame_pack().

static av_always_inline void spatial_frame_pack ( AVFilterLink outlink,
AVFrame dst 
)
static

Definition at line 251 of file vf_framepack.c.

Referenced by try_push_frame().

static int try_push_frame ( AVFilterContext ctx)
static

Definition at line 305 of file vf_framepack.c.

Referenced by filter_frame_left(), filter_frame_right(), and spatial_frame_pack().

static int filter_frame_left ( AVFilterLink inlink,
AVFrame frame 
)
static

Definition at line 274 of file vf_framepack.c.

static int filter_frame_right ( AVFilterLink inlink,
AVFrame frame 
)
static

Definition at line 281 of file vf_framepack.c.

static int request_frame ( AVFilterLink outlink)
static

Definition at line 288 of file vf_framepack.c.

AVFILTER_DEFINE_CLASS ( framepack  )

Variable Documentation

enum AVPixelFormat formats_supported[]
static
Initial value:
= {
}
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
Definition: pixfmt.h:71
planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
Definition: pixfmt.h:101
planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range...
Definition: pixfmt.h:100
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
Definition: pixfmt.h:79
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition: pixfmt.h:70
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
Definition: pixfmt.h:78
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
Definition: pixfmt.h:72
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:66
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
Definition: pixfmt.h:80

Definition at line 55 of file vf_framepack.c.

Referenced by query_formats().

const AVOption framepack_options[]
static
Initial value:
= {
{ "format", "Frame pack output format", OFFSET(format), AV_OPT_TYPE_INT,
{ .i64 = AV_STEREO3D_SIDEBYSIDE }, 0, INT_MAX, .flags = V, .unit = "format" },
{ "sbs", "Views are packed next to each other", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_SIDEBYSIDE }, INT_MIN, INT_MAX, .flags = V, .unit = "format" },
{ "tab", "Views are packed on top of each other", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_TOPBOTTOM }, INT_MIN, INT_MAX, .flags = V, .unit = "format" },
{ "frameseq", "Views are one after the other", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_FRAMESEQUENCE }, INT_MIN, INT_MAX, .flags = V, .unit = "format" },
{ "lines", "Views are interleaved by lines", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_LINES }, INT_MIN, INT_MAX, .flags = V, .unit = "format" },
{ "columns", "Views are interleaved by columns", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_COLUMNS }, INT_MIN, INT_MAX, .flags = V, .unit = "format" },
{ NULL },
}
#define NULL
Definition: coverity.c:32
Views are next to each other.
Definition: stereo3d.h:67
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample format(the sample packing is implied by the sample format) and sample rate.The lists are not just lists
#define OFFSET(x)
Definition: vf_framepack.c:366
#define V
Definition: vf_framepack.c:367
Views are packed per line, as if interlaced.
Definition: stereo3d.h:129
Views are alternated temporally.
Definition: stereo3d.h:92
Views are on top of each other.
Definition: stereo3d.h:79
Views are packed per column.
Definition: stereo3d.h:141

Definition at line 368 of file vf_framepack.c.

const AVFilterPad framepack_inputs[]
static
Initial value:
= {
{
.name = "left",
.filter_frame = filter_frame_left,
.needs_fifo = 1,
},
{
.name = "right",
.filter_frame = filter_frame_right,
.needs_fifo = 1,
},
{ NULL }
}
#define NULL
Definition: coverity.c:32
static int filter_frame_right(AVFilterLink *inlink, AVFrame *frame)
Definition: vf_framepack.c:281
static int filter_frame_left(AVFilterLink *inlink, AVFrame *frame)
Definition: vf_framepack.c:274

Definition at line 386 of file vf_framepack.c.

const AVFilterPad framepack_outputs[]
static
Initial value:
= {
{
.name = "packed",
.config_props = config_output,
.request_frame = request_frame,
},
{ NULL }
}
#define NULL
Definition: coverity.c:32
static int request_frame(AVFilterLink *outlink)
Definition: vf_framepack.c:288
static int config_output(AVFilterLink *outlink)
Definition: vf_framepack.c:80

Definition at line 402 of file vf_framepack.c.

AVFilter ff_vf_framepack
Initial value:
= {
.name = "framepack",
.description = NULL_IF_CONFIG_SMALL("Generate a frame packed stereoscopic video."),
.priv_size = sizeof(FramepackContext),
.priv_class = &framepack_class,
}
static av_cold int uninit(AVCodecContext *avctx)
Definition: crystalhd.c:279
static int query_formats(AVFilterContext *ctx)
Definition: vf_framepack.c:62
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static const AVFilterPad outputs[]
Definition: af_acontrast.c:203
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several inputs
static const AVFilterPad framepack_inputs[]
Definition: vf_framepack.c:386
static av_cold void framepack_uninit(AVFilterContext *ctx)
Definition: vf_framepack.c:71
static const AVFilterPad framepack_outputs[]
Definition: vf_framepack.c:402

Definition at line 412 of file vf_framepack.c.