FFmpeg
Loading...
Searching...
No Matches
qrencode.c File Reference
#include "config_components.h"
#include "libavutil/internal.h"
#include "libavutil/imgutils.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/lfg.h"
#include "libavutil/random_seed.h"
#include "avfilter.h"
#include "drawutils.h"
#include "filters.h"
#include "formats.h"
#include "textutils.h"

Go to the source code of this file.

Data Structures

struct  QREncodeContext
 

Enumerations

enum  var_name {
  VAR_dar , VAR_duration , VAR_hsub , VAR_vsub ,
  VAR_main_h , VAR_H , VAR_main_w , VAR_W ,
  VAR_n , VAR_pict_type , VAR_qr_w , VAR_w ,
  VAR_rendered_padded_qr_w , VAR_Q , VAR_rendered_qr_w , VAR_q ,
  VAR_sar , VAR_t , VAR_x , VAR_y ,
  VAR_VARS_NB
}
 
enum  Expansion { EXPANSION_NONE , EXPANSION_NORMAL }
 

Functions

static double drand (void *opaque, double min, double max)
 
static int func_pts (void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
 
static int func_frame_num (void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
 
static int func_strftime (void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
 
static int func_frame_metadata (void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
 
static int func_eval_expr (void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
 
static int func_eval_expr_formatted (void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
 
static av_cold int init (AVFilterContext *ctx)
 
static av_cold void uninit (AVFilterContext *ctx)
 
static void show_qrcode (AVFilterContext *ctx, const QRcode *qrcode)
 
static int draw_qrcode (AVFilterContext *ctx, AVFrame *frame)
 
 AVFILTER_DEFINE_CLASS (qrencodesrc)
 
static int qrencodesrc_config_props (AVFilterLink *outlink)
 
static int request_frame (AVFilterLink *outlink)
 
static int qrencodesrc_query_formats (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
 AVFILTER_DEFINE_CLASS (qrencode)
 
static int qrencode_config_input (AVFilterLink *inlink)
 
static int qrencode_query_formats (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
static int filter_frame (AVFilterLink *inlink, AVFrame *frame)
 

Variables

static const char *const var_names []
 
static const char *const fun2_names []
 
static const ff_eval_func2 fun2 []
 
static const FFExpandTextFunction expand_text_functions []
 
static const AVOption qrencodesrc_options []
 
static const AVFilterPad qrencodesrc_outputs []
 
const FFFilter ff_vsrc_qrencodesrc
 
static const AVOption qrencode_options []
 
static const AVFilterPad avfilter_vf_qrencode_inputs []
 
const FFFilter ff_vf_qrencode
 

Enumeration Type Documentation

◆ var_name

enum var_name
Enumerator
VAR_dar 
VAR_duration 
VAR_hsub 
VAR_vsub 
VAR_main_h 
VAR_H 
VAR_main_w 
VAR_W 
VAR_n 
VAR_pict_type 
VAR_qr_w 
VAR_w 
VAR_rendered_padded_qr_w 
VAR_Q 
VAR_rendered_qr_w 
VAR_q 
VAR_sar 
VAR_t 
VAR_x 
VAR_y 
VAR_VARS_NB 

Definition at line 51 of file qrencode.c.

◆ Expansion

enum Expansion
Enumerator
EXPANSION_NONE 
EXPANSION_NORMAL 

Definition at line 89 of file qrencode.c.

Function Documentation

◆ drand()

static double drand ( void * opaque,
double min,
double max )
static

Definition at line 185 of file qrencode.c.

◆ func_pts()

static int func_pts ( void * ctx,
AVBPrint * bp,
const char * function_name,
unsigned argc,
char ** argv )
static

Definition at line 195 of file qrencode.c.

◆ func_frame_num()

static int func_frame_num ( void * ctx,
AVBPrint * bp,
const char * function_name,
unsigned argc,
char ** argv )
static

Definition at line 217 of file qrencode.c.

◆ func_strftime()

static int func_strftime ( void * ctx,
AVBPrint * bp,
const char * function_name,
unsigned argc,
char ** argv )
static

Definition at line 226 of file qrencode.c.

◆ func_frame_metadata()

static int func_frame_metadata ( void * ctx,
AVBPrint * bp,
const char * function_name,
unsigned argc,
char ** argv )
static

Definition at line 234 of file qrencode.c.

◆ func_eval_expr()

static int func_eval_expr ( void * ctx,
AVBPrint * bp,
const char * function_name,
unsigned argc,
char ** argv )
static

Definition at line 248 of file qrencode.c.

◆ func_eval_expr_formatted()

static int func_eval_expr_formatted ( void * ctx,
AVBPrint * bp,
const char * function_name,
unsigned argc,
char ** argv )
static

Definition at line 258 of file qrencode.c.

◆ init()

static av_cold int init ( AVFilterContext * ctx)
static

Definition at line 300 of file qrencode.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext * ctx)
static

Definition at line 331 of file qrencode.c.

◆ show_qrcode()

static void show_qrcode ( AVFilterContext * ctx,
const QRcode * qrcode )
static

Definition at line 346 of file qrencode.c.

Referenced by draw_qrcode().

◆ draw_qrcode()

static int draw_qrcode ( AVFilterContext * ctx,
AVFrame * frame )
static

Definition at line 364 of file qrencode.c.

Referenced by filter_frame(), and request_frame().

◆ AVFILTER_DEFINE_CLASS() [1/2]

AVFILTER_DEFINE_CLASS ( qrencodesrc )

◆ qrencodesrc_config_props()

static int qrencodesrc_config_props ( AVFilterLink * outlink)
static

Definition at line 587 of file qrencode.c.

◆ request_frame()

static int request_frame ( AVFilterLink * outlink)
static

Definition at line 663 of file qrencode.c.

◆ qrencodesrc_query_formats()

static int qrencodesrc_query_formats ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )
static

Definition at line 683 of file qrencode.c.

◆ AVFILTER_DEFINE_CLASS() [2/2]

AVFILTER_DEFINE_CLASS ( qrencode )

◆ qrencode_config_input()

static int qrencode_config_input ( AVFilterLink * inlink)
static

Definition at line 737 of file qrencode.c.

◆ qrencode_query_formats()

static int qrencode_query_formats ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )
static

Definition at line 792 of file qrencode.c.

◆ filter_frame()

static int filter_frame ( AVFilterLink * inlink,
AVFrame * frame )
static

Definition at line 799 of file qrencode.c.

Variable Documentation

◆ var_names

const char* const var_names[]
static
Initial value:
= {
"dar",
"duration",
"hsub", "vsub",
"main_h", "H",
"main_w", "W",
"n",
"pict_type",
"qr_w", "w",
"rendered_padded_qr_w", "Q",
"rendered_qr_w", "q",
"sar",
"t",
"x",
"y",
}
#define NULL
Definition coverity.c:32

Definition at line 69 of file qrencode.c.

◆ fun2_names

const char* const fun2_names[]
static
Initial value:
= {
"rand"
}

Definition at line 181 of file qrencode.c.

Referenced by config_input(), func_eval_expr(), and func_eval_expr_formatted().

◆ fun2

const ff_eval_func2 fun2[]
static
Initial value:
= {
}
static double drand(void *opaque, double min, double max)
Definition qrencode.c:185

Definition at line 190 of file qrencode.c.

Referenced by config_input(), func_eval_expr(), and func_eval_expr_formatted().

◆ expand_text_functions

const FFExpandTextFunction expand_text_functions[]
static
Initial value:
= {
{ "expr", 1, 1, func_eval_expr },
{ "e", 1, 1, func_eval_expr },
{ "expr_formatted", 2, 3, func_eval_expr_formatted },
{ "ef", 2, 3, func_eval_expr_formatted },
{ "metadata", 1, 2, func_frame_metadata },
{ "frame_num", 0, 0, func_frame_num },
{ "n", 0, 0, func_frame_num },
{ "gmtime", 0, 1, func_strftime },
{ "localtime", 0, 1, func_strftime },
{ "pts", 0, 3, func_pts }
}
static int func_eval_expr(void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
Definition qrencode.c:248
static int func_strftime(void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
Definition qrencode.c:226
static int func_pts(void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
Definition qrencode.c:195
static int func_frame_num(void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
Definition qrencode.c:217
static int func_eval_expr_formatted(void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
Definition qrencode.c:258
static int func_frame_metadata(void *ctx, AVBPrint *bp, const char *function_name, unsigned argc, char **argv)
Definition qrencode.c:234

Definition at line 287 of file qrencode.c.

Referenced by init(), and init().

◆ qrencodesrc_options

const AVOption qrencodesrc_options[]
static
Initial value:
= {
{ "rate", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, FLAGS },
{ "r", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, FLAGS },
{ NULL }
}
#define FLAGS
Definition cmdutils.c:598
#define OFFSET(x)
@ AV_OPT_TYPE_VIDEO_RATE
Underlying C type is AVRational.
Definition opt.h:314
#define COMMON_OPTIONS
Definition libvpxenc.c:1986

Definition at line 578 of file qrencode.c.

◆ qrencodesrc_outputs

const AVFilterPad qrencodesrc_outputs[]
static
Initial value:
= {
{
.name = "default",
.request_frame = request_frame,
.config_props = qrencodesrc_config_props,
}
}
static int request_frame(AVFilterLink *outlink)
Definition af_aecho.c:272
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
static int qrencodesrc_config_props(AVFilterLink *outlink)
Definition qrencode.c:587

Definition at line 703 of file qrencode.c.

◆ ff_vsrc_qrencodesrc

const FFFilter ff_vsrc_qrencodesrc
Initial value:
= {
.p.name = "qrencodesrc",
.p.description = NULL_IF_CONFIG_SMALL("Generate a QR code."),
.p.priv_class = &qrencodesrc_class,
.p.inputs = NULL,
.priv_size = sizeof(QREncodeContext),
.init = init,
}
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
static av_cold void uninit(AVBitStreamFilterContext *ctx)
#define FILTER_OUTPUTS(array)
Definition filters.h:265
#define FILTER_QUERY_FUNC2(func)
Definition filters.h:241
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88
static const AVFilterPad qrencodesrc_outputs[]
Definition qrencode.c:703
static int qrencodesrc_query_formats(const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
Definition qrencode.c:683

Definition at line 712 of file qrencode.c.

◆ qrencode_options

const AVOption qrencode_options[]
static
Initial value:
= {
{"x", "set x expression", OFFSET(x_expr), AV_OPT_TYPE_STRING, {.str="0"}, 0, 0, TFLAGS},
{"y", "set y expression", OFFSET(y_expr), AV_OPT_TYPE_STRING, {.str="0"}, 0, 0, TFLAGS},
{ NULL }
}
#define TFLAGS
Definition af_afade.c:66
@ AV_OPT_TYPE_STRING
Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_mal...
Definition opt.h:275

Definition at line 728 of file qrencode.c.

◆ avfilter_vf_qrencode_inputs

const AVFilterPad avfilter_vf_qrencode_inputs[]
static
Initial value:
= {
{
.name = "default",
.filter_frame = filter_frame,
.config_props = qrencode_config_input,
},
}
static int filter_frame(DBEDecodeContext *s, AVFrame *frame)
Definition dolby_e.c:1067
#define AVFILTERPAD_FLAG_NEEDS_WRITABLE
The filter expects writable frames from its input link, duplicating data buffers if needed.
Definition filters.h:59
static int qrencode_config_input(AVFilterLink *inlink)
Definition qrencode.c:737

Definition at line 821 of file qrencode.c.

◆ ff_vf_qrencode

const FFFilter ff_vf_qrencode
Initial value:
= {
.p.name = "qrencode",
.p.description = NULL_IF_CONFIG_SMALL("Draw a QR code on top of video frames."),
.p.priv_class = &qrencode_class,
.priv_size = sizeof(QREncodeContext),
.init = init,
}
#define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC
Some filters support a generic "enable" expression option that can be used to enable or disable a fil...
Definition avfilter.h:196
#define FILTER_INPUTS(array)
Definition filters.h:264
static int qrencode_query_formats(const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
Definition qrencode.c:792
static const AVFilterPad avfilter_vf_qrencode_inputs[]
Definition qrencode.c:821
const AVFilterPad ff_video_default_filterpad[1]
An AVFilterPad array whose only entry has name "default" and is of type AVMEDIA_TYPE_VIDEO.
Definition video.c:37

Definition at line 831 of file qrencode.c.