FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
bprint.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "avassert.h"
#include "avstring.h"
#include "bprint.h"
#include "common.h"
#include "compat/va_copy.h"
#include "error.h"
#include "mem.h"

Go to the source code of this file.

Macros

#define av_bprint_room(buf)   ((buf)->size - FFMIN((buf)->len, (buf)->size))
 
#define av_bprint_is_allocated(buf)   ((buf)->str != (buf)->reserved_internal_buffer)
 
#define WHITESPACES   " \n\t"
 

Functions

static int av_bprint_alloc (AVBPrint *buf, unsigned room)
 
static void av_bprint_grow (AVBPrint *buf, unsigned extra_len)
 
void av_bprint_init (AVBPrint *buf, unsigned size_init, unsigned size_max)
 
void av_bprint_init_for_buffer (AVBPrint *buf, char *buffer, unsigned size)
 Init a print buffer using a pre-existing buffer. More...
 
void av_bprintf (AVBPrint *buf, const char *fmt,...)
 
void av_vbprintf (AVBPrint *buf, const char *fmt, va_list vl_arg)
 Append a formatted string to a print buffer. More...
 
void av_bprint_chars (AVBPrint *buf, char c, unsigned n)
 Append char c n times to a print buffer. More...
 
void av_bprint_append_data (AVBPrint *buf, const char *data, unsigned size)
 Append data to a print buffer. More...
 
void av_bprint_strftime (AVBPrint *buf, const char *fmt, const struct tm *tm)
 Append a formatted date and time to a print buffer. More...
 
void av_bprint_get_buffer (AVBPrint *buf, unsigned size, unsigned char **mem, unsigned *actual_size)
 Allocate bytes in the buffer for external use. More...
 
void av_bprint_clear (AVBPrint *buf)
 Reset the string to "" but keep internal allocated data. More...
 
int av_bprint_finalize (AVBPrint *buf, char **ret_str)
 Finalize a print buffer. More...
 
void av_bprint_escape (AVBPrint *dstbuf, const char *src, const char *special_chars, enum AVEscapeMode mode, int flags)
 Escape the content in src and append it to dstbuf. More...
 

Macro Definition Documentation

#define av_bprint_room (   buf)    ((buf)->size - FFMIN((buf)->len, (buf)->size))
#define av_bprint_is_allocated (   buf)    ((buf)->str != (buf)->reserved_internal_buffer)

Definition at line 34 of file bprint.c.

Referenced by av_bprint_alloc(), and av_bprint_finalize().

#define WHITESPACES   " \n\t"

Definition at line 263 of file bprint.c.

Referenced by av_bprint_escape().

Function Documentation

static int av_bprint_alloc ( AVBPrint *  buf,
unsigned  room 
)
static
static void av_bprint_grow ( AVBPrint *  buf,
unsigned  extra_len 
)
static
void av_bprint_init ( AVBPrint *  buf,
unsigned  size_init,
unsigned  size_max 
)
void av_bprint_init_for_buffer ( AVBPrint *  buf,
char *  buffer,
unsigned  size 
)

Init a print buffer using a pre-existing buffer.

The buffer will not be reallocated.

Parameters
bufbuffer structure to init
bufferbyte buffer to use for the string data
sizesize of buffer

Definition at line 85 of file bprint.c.

Referenced by av_get_channel_layout_string().

void av_bprintf ( AVBPrint *  buf,
const char *  fmt,
  ... 
)

Definition at line 94 of file bprint.c.

Referenced by ass_read_header(), audio_frame_cksum(), av_bprint_channel_layout(), av_bprint_escape(), av_bprint_strftime(), avfilter_graph_dump_to_buf(), bprint_bytes(), c_escape_str(), cat_header(), compact_print_section_header(), config_output(), configure_input_audio_filter(), configure_input_video_filter(), configure_output_audio_filter(), default_print_section_header(), disp_node(), disp_tree(), draw_text(), dvdsub_init(), expand_filename_template(), ff_ass_add_rect_bprint(), ff_ass_bprint_dialog(), ff_ass_bprint_text_event(), ff_subtitles_read_text_chunk(), ff_tadd_bytes_metadata(), ff_tadd_doubles_metadata(), ff_tadd_long_metadata(), ff_tadd_rational_metadata(), ff_tadd_shorts_metadata(), flat_escape_value_str(), flat_print_section_header(), format_line(), ftp_status(), func_eval_expr(), func_eval_expr_int_format(), func_frame_num(), func_metadata(), func_pict_type(), func_pts(), gen_sub_text(), ini_escape_str(), ini_print_section_header(), insert_datetime(), insert_text(), insert_ts(), jacosub_read_header(), jacosub_to_ass(), json_escape_str(), lavfi_read_packet(), make_command_flags_str(), microdvd_close_no_persistent_tags(), microdvd_decode_frame(), microdvd_init(), microdvd_open_tags(), mpl2_event_to_ass(), parse_psfile(), print_link_prop(), print_report(), query_formats(), read_dialogue(), reap_screen(), rt_event_to_ass(), sami_paragraph_to_ass(), sami_read_header(), srt_to_ass(), subviewer_event_to_ass(), subviewer_read_header(), text_to_ass(), validate_string(), video_frame_cksum(), webvtt_event_to_ass(), write_frame(), writer_print_data(), writer_print_integers(), writer_print_rational(), and xml_escape_str().

void av_vbprintf ( AVBPrint *  buf,
const char *  fmt,
va_list  vl_arg 
)

Append a formatted string to a print buffer.

Definition at line 117 of file bprint.c.

Referenced by format_line(), srt_print(), and webvtt_print().

void av_bprint_chars ( AVBPrint *  buf,
char  c,
unsigned  n 
)
void av_bprint_append_data ( AVBPrint *  buf,
const char *  data,
unsigned  size 
)

Append data to a print buffer.

param buf bprint buffer to use param data pointer to data param size size of data

Definition at line 158 of file bprint.c.

Referenced by av_dict_get_string(), av_opt_serialize(), avio_read_to_bprint(), gen_sub_text(), srt_text_cb(), validate_string(), and webvtt_text_cb().

void av_bprint_strftime ( AVBPrint *  buf,
const char *  fmt,
const struct tm *  tm 
)

Append a formatted date and time to a print buffer.

param buf bprint buffer to use param fmt date and time format string, see strftime() param tm broken-down time structure to translate

Note
due to poor design of the standard strftime function, it may produce poor results if the format string expands to a very long text and the bprint buffer is near the limit stated by the size_max option.

Definition at line 176 of file bprint.c.

Referenced by draw_text(), and func_strftime().

void av_bprint_get_buffer ( AVBPrint *  buf,
unsigned  size,
unsigned char **  mem,
unsigned *  actual_size 
)

Allocate bytes in the buffer for external use.

Parameters
[in]bufbuffer structure
[in]sizerequired size
[out]mempointer to the memory area
[out]actual_sizesize of the memory area after allocation; can be larger or smaller than size

Definition at line 218 of file bprint.c.

Referenced by decode_zbuf().

void av_bprint_clear ( AVBPrint *  buf)
int av_bprint_finalize ( AVBPrint *  buf,
char **  ret_str 
)

Finalize a print buffer.

The print buffer can no longer be used afterwards, but the len and size fields are still valid.

  • [out] ret_str if not NULL, used to return a permanent copy of the buffer contents, or NULL if memory allocation fails; if NULL, the buffer is discarded and freed
    Returns
    0 for success or error code (probably AVERROR(ENOMEM))

Definition at line 235 of file bprint.c.

Referenced by ass_read_header(), av_dict_get_string(), av_escape(), av_log_default_callback(), av_log_format_line(), av_opt_serialize(), avfilter_graph_dump(), avpriv_bprint_to_extradata(), close_decoder(), compact_print_str(), configure_output_audio_filter(), decode_text_chunk(), decode_zbuf(), disp_tree(), ff_ass_add_rect(), ff_tadd_bytes_metadata(), ff_tadd_doubles_metadata(), ff_tadd_long_metadata(), ff_tadd_rational_metadata(), ff_tadd_shorts_metadata(), ffprobe_show_program_version(), flat_print_str(), ftp_status(), gen_sub_text(), icecast_open(), ini_print_str(), init_report(), jacosub_decode_frame(), json_print_int(), json_print_item_str(), json_print_section_header(), lavfi_read_header(), lavfi_read_packet(), main(), mpsub_read_header(), parse_file(), parse_psfile(), parse_string(), print_report(), realtext_decode_frame(), realtext_read_header(), sami_close(), sami_read_header(), show_frame(), show_packet(), show_stream(), show_subtitle(), srt_encode_close(), srt_read_header(), subviewer_decode_frame(), subviewer_read_header(), uninit(), validate_string(), webvtt_encode_close(), webvtt_read_header(), write_frame(), writer_close(), writer_print_data(), writer_print_integers(), and xml_print_str().

void av_bprint_escape ( AVBPrint *  dstbuf,
const char *  src,
const char *  special_chars,
enum AVEscapeMode  mode,
int  flags 
)

Escape the content in src and append it to dstbuf.

Parameters
dstbufalready inited destination bprint buffer
srcstring containing the text to escape
special_charsstring containing the special characters which need to be escaped, can be NULL
modeescape mode to employ, see AV_ESCAPE_MODE_* macros. Any unknown value for mode will be considered equivalent to AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without notice.
flagsflags which control how to escape, see AV_ESCAPE_FLAG_* macros

Definition at line 265 of file bprint.c.

Referenced by av_dict_get_string(), av_escape(), and av_opt_serialize().