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 "filters.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 VF   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_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 activate (AVFilterContext *ctx)
 
 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

Definition at line 42 of file vf_framepack.c.

Referenced by config_output(), framepack_uninit(), and horizontal_frame_pack().

#define OFFSET (   x)    offsetof(FramepackContext, x)

Definition at line 373 of file vf_framepack.c.

Definition at line 374 of file vf_framepack.c.

Function Documentation

static int query_formats ( AVFilterContext ctx)
static

Definition at line 61 of file vf_framepack.c.

static av_cold void framepack_uninit ( AVFilterContext ctx)
static

Definition at line 70 of file vf_framepack.c.

static int config_output ( AVFilterLink outlink)
static

Definition at line 79 of file vf_framepack.c.

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

Definition at line 144 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 209 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 248 of file vf_framepack.c.

Referenced by try_push_frame().

static int try_push_frame ( AVFilterContext ctx)
static

Definition at line 269 of file vf_framepack.c.

Referenced by activate().

static int activate ( AVFilterContext ctx)
static

Definition at line 330 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 54 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 = VF, .unit = "format" },
{ "sbs", "Views are packed next to each other", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_SIDEBYSIDE }, INT_MIN, INT_MAX, .flags = VF, .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 = VF, .unit = "format" },
{ "frameseq", "Views are one after the other", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_FRAMESEQUENCE }, INT_MIN, INT_MAX, .flags = VF, .unit = "format" },
{ "lines", "Views are interleaved by lines", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_LINES }, INT_MIN, INT_MAX, .flags = VF, .unit = "format" },
{ "columns", "Views are interleaved by columns", 0, AV_OPT_TYPE_CONST,
{ .i64 = AV_STEREO3D_COLUMNS }, INT_MIN, INT_MAX, .flags = VF, .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:373
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
#define VF
Definition: vf_framepack.c:374

Definition at line 375 of file vf_framepack.c.

const AVFilterPad framepack_inputs[]
static
Initial value:
= {
{
.name = "left",
},
{
.name = "right",
},
{ NULL }
}
#define NULL
Definition: coverity.c:32

Definition at line 393 of file vf_framepack.c.

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

Definition at line 405 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:61
#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:393
static int activate(AVFilterContext *ctx)
Definition: vf_framepack.c:330
static av_cold void framepack_uninit(AVFilterContext *ctx)
Definition: vf_framepack.c:70
static const AVFilterPad framepack_outputs[]
Definition: vf_framepack.c:405

Definition at line 414 of file vf_framepack.c.