@ -163,48 +163,48 @@ typedef struct {
} DrawTextContext ;
# define OFFSET(x) offsetof(DrawTextContext, x)
# define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
static const AVOption drawtext_options [ ] = {
{ " fontfile " , " set font file " , OFFSET ( fontfile ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX } ,
{ " text " , " set text " , OFFSET ( text ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX } ,
{ " textfile " , " set text file " , OFFSET ( textfile ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX } ,
{ " fontcolor " , " set foreground color " , OFFSET ( fontcolor_string ) , AV_OPT_TYPE_STRING , { . str = " black " } , CHAR_MIN , CHAR_MAX } ,
{ " boxcolor " , " set box color " , OFFSET ( boxcolor_string ) , AV_OPT_TYPE_STRING , { . str = " white " } , CHAR_MIN , CHAR_MAX } ,
{ " shadowcolor " , " set shadow color " , OFFSET ( shadowcolor_string ) , AV_OPT_TYPE_STRING , { . str = " black " } , CHAR_MIN , CHAR_MAX } ,
{ " box " , " set box " , OFFSET ( draw_box ) , AV_OPT_TYPE_INT , { . dbl = 0 } , 0 , 1 } ,
{ " fontsize " , " set font size " , OFFSET ( fontsize ) , AV_OPT_TYPE_INT , { . dbl = 0 } , 0 , INT_MAX } ,
{ " x " , " set x expression " , OFFSET ( x_expr ) , AV_OPT_TYPE_STRING , { . str = " 0 " } , CHAR_MIN , CHAR_MAX } ,
{ " y " , " set y expression " , OFFSET ( y_expr ) , AV_OPT_TYPE_STRING , { . str = " 0 " } , CHAR_MIN , CHAR_MAX } ,
{ " shadowx " , " set x " , OFFSET ( shadowx ) , AV_OPT_TYPE_INT , { . dbl = 0 } , INT_MIN , INT_MAX } ,
{ " shadowy " , " set y " , OFFSET ( shadowy ) , AV_OPT_TYPE_INT , { . dbl = 0 } , INT_MIN , INT_MAX } ,
{ " tabsize " , " set tab size " , OFFSET ( tabsize ) , AV_OPT_TYPE_INT , { . dbl = 4 } , 0 , INT_MAX } ,
{ " basetime " , " set base time " , OFFSET ( basetime ) , AV_OPT_TYPE_INT64 , { . dbl = AV_NOPTS_VALUE } , INT64_MIN , INT64_MAX } ,
{ " draw " , " if false do not draw " , OFFSET ( draw_expr ) , AV_OPT_TYPE_STRING , { . str = " 1 " } , CHAR_MIN , CHAR_MAX } ,
{ " timecode " , " set initial timecode " , OFFSET ( tc_opt_string ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX } ,
{ " tc24hmax " , " set 24 hours max (timecode only) " , OFFSET ( tc24hmax ) , AV_OPT_TYPE_INT , { . dbl = 0 } , 0 , 1 } ,
{ " timecode_rate " , " set rate (timecode only) " , OFFSET ( tc_rate ) , AV_OPT_TYPE_RATIONAL , { . dbl = 0 } , 0 , INT_MAX } ,
{ " r " , " set rate (timecode only) " , OFFSET ( tc_rate ) , AV_OPT_TYPE_RATIONAL , { . dbl = 0 } , 0 , INT_MAX } ,
{ " rate " , " set rate (timecode only) " , OFFSET ( tc_rate ) , AV_OPT_TYPE_RATIONAL , { . dbl = 0 } , 0 , INT_MAX } ,
{ " fix_bounds " , " if true, check and fix text coords to avoid clipping " ,
OFFSET ( fix_bounds ) , AV_OPT_TYPE_INT , { . dbl = 1 } , 0 , 1 } ,
{ " fontfile " , " set font file " , OFFSET ( fontfile ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " text " , " set text " , OFFSET ( text ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " textfile " , " set text file " , OFFSET ( textfile ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " fontcolor " , " set foreground color " , OFFSET ( fontcolor_string ) , AV_OPT_TYPE_STRING , { . str = " black " } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " boxcolor " , " set box color " , OFFSET ( boxcolor_string ) , AV_OPT_TYPE_STRING , { . str = " white " } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " shadowcolor " , " set shadow color " , OFFSET ( shadowcolor_string ) , AV_OPT_TYPE_STRING , { . str = " black " } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " box " , " set box " , OFFSET ( draw_box ) , AV_OPT_TYPE_INT , { . dbl = 0 } , 0 , 1 , FLAGS } ,
{ " fontsize " , " set font size " , OFFSET ( fontsize ) , AV_OPT_TYPE_INT , { . dbl = 0 } , 0 , INT_MAX , FLAGS } ,
{ " x " , " set x expression " , OFFSET ( x_expr ) , AV_OPT_TYPE_STRING , { . str = " 0 " } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " y " , " set y expression " , OFFSET ( y_expr ) , AV_OPT_TYPE_STRING , { . str = " 0 " } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " shadowx " , " set x " , OFFSET ( shadowx ) , AV_OPT_TYPE_INT , { . dbl = 0 } , INT_MIN , INT_MAX , FLAGS } ,
{ " shadowy " , " set y " , OFFSET ( shadowy ) , AV_OPT_TYPE_INT , { . dbl = 0 } , INT_MIN , INT_MAX , FLAGS } ,
{ " tabsize " , " set tab size " , OFFSET ( tabsize ) , AV_OPT_TYPE_INT , { . dbl = 4 } , 0 , INT_MAX , FLAGS } ,
{ " basetime " , " set base time " , OFFSET ( basetime ) , AV_OPT_TYPE_INT64 , { . dbl = AV_NOPTS_VALUE } , INT64_MIN , INT64_MAX , FLAGS } ,
{ " draw " , " if false do not draw " , OFFSET ( draw_expr ) , AV_OPT_TYPE_STRING , { . str = " 1 " } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " timecode " , " set initial timecode " , OFFSET ( tc_opt_string ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , FLAGS } ,
{ " tc24hmax " , " set 24 hours max (timecode only) " , OFFSET ( tc24hmax ) , AV_OPT_TYPE_INT , { . dbl = 0 } , 0 , 1 , FLAGS } ,
{ " timecode_rate " , " set rate (timecode only) " , OFFSET ( tc_rate ) , AV_OPT_TYPE_RATIONAL , { . dbl = 0 } , 0 , INT_MAX , FLAGS } ,
{ " r " , " set rate (timecode only) " , OFFSET ( tc_rate ) , AV_OPT_TYPE_RATIONAL , { . dbl = 0 } , 0 , INT_MAX , FLAGS } ,
{ " rate " , " set rate (timecode only) " , OFFSET ( tc_rate ) , AV_OPT_TYPE_RATIONAL , { . dbl = 0 } , 0 , INT_MAX , FLAGS } ,
{ " fix_bounds " , " if true, check and fix text coords to avoid clipping " , OFFSET ( fix_bounds ) , AV_OPT_TYPE_INT , { . dbl = 1 } , 0 , 1 , FLAGS } ,
/* FT_LOAD_* flags */
{ " ft_load_flags " , " set font loading flags for libfreetype " , OFFSET ( ft_load_flags ) , AV_OPT_TYPE_FLAGS , { . dbl = FT_LOAD_DEFAULT | FT_LOAD_RENDER } , 0 , INT_MAX , 0 , " ft_load_flags " } ,
{ " default " , " set default " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_DEFAULT } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " no_scale " , " set no_scale " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_SCALE } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " no_hinting " , " set no_hinting " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_HINTING } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " render " , " set render " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_RENDER } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " no_bitmap " , " set no_bitmap " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_BITMAP } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " vertical_layout " , " set vertical_layout " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_VERTICAL_LAYOUT } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " force_autohint " , " set force_autohint " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_FORCE_AUTOHINT } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " crop_bitmap " , " set crop_bitmap " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_CROP_BITMAP } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " pedantic " , " set pedantic " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_PEDANTIC } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " ignore_global_advance_width " , " set ignore_global_advance_width " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " no_recurse " , " set no_recurse " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_RECURSE } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " ignore_transform " , " set ignore_transform " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_IGNORE_TRANSFORM } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " monochrome " , " set monochrome " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_MONOCHROME } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " linear_design " , " set linear_design " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_LINEAR_DESIGN } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " no_autohint " , " set no_autohint " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_AUTOHINT } , INT_MIN , INT_MAX , 0 , " ft_load_flags " } ,
{ " ft_load_flags " , " set font loading flags for libfreetype " , OFFSET ( ft_load_flags ) , AV_OPT_TYPE_FLAGS , { . dbl = FT_LOAD_DEFAULT | FT_LOAD_RENDER } , 0 , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " default " , " set default " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_DEFAULT } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " no_scale " , " set no_scale " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_SCALE } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " no_hinting " , " set no_hinting " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_HINTING } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " render " , " set render " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_RENDER } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " no_bitmap " , " set no_bitmap " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_BITMAP } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " vertical_layout " , " set vertical_layout " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_VERTICAL_LAYOUT } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " force_autohint " , " set force_autohint " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_FORCE_AUTOHINT } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " crop_bitmap " , " set crop_bitmap " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_CROP_BITMAP } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " pedantic " , " set pedantic " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_PEDANTIC } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " ignore_global_advance_width " , " set ignore_global_advance_width " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " no_recurse " , " set no_recurse " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_RECURSE } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " ignore_transform " , " set ignore_transform " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_IGNORE_TRANSFORM } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " monochrome " , " set monochrome " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_MONOCHROME } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " linear_design " , " set linear_design " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_LINEAR_DESIGN } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ " no_autohint " , " set no_autohint " , 0 , AV_OPT_TYPE_CONST , { . dbl = FT_LOAD_NO_AUTOHINT } , INT_MIN , INT_MAX , FLAGS , " ft_load_flags " } ,
{ NULL } ,
} ;
@ -832,4 +832,5 @@ AVFilter avfilter_vf_drawtext = {
. type = AVMEDIA_TYPE_VIDEO , } ,
{ . name = NULL } } ,
. process_command = command ,
. priv_class = & drawtext_class ,
} ;