FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
tee.c File Reference
#include "libavutil/avutil.h"
#include "libavutil/avstring.h"
#include "libavutil/opt.h"
#include "internal.h"
#include "avformat.h"
#include "avio_internal.h"
#include "tee_common.h"

Go to the source code of this file.

Data Structures

struct  TeeSlave
 
struct  TeeContext
 

Macros

#define DEFAULT_SLAVE_FAILURE_POLICY   ON_SLAVE_FAILURE_ABORT
 
#define OFFSET(x)   offsetof(TeeContext, x)
 
#define STEAL_OPTION(option, field)
 

Enumerations

enum  SlaveFailurePolicy { ON_SLAVE_FAILURE_ABORT = 1, ON_SLAVE_FAILURE_IGNORE = 2 }
 

Functions

static int parse_slave_failure_policy_option (const char *opt, TeeSlave *tee_slave)
 
static int parse_slave_fifo_options (const char *use_fifo, const char *fifo_options, TeeSlave *tee_slave)
 
static int close_slave (TeeSlave *tee_slave)
 
static void close_slaves (AVFormatContext *avf)
 
static int open_slave (AVFormatContext *avf, char *slave, TeeSlave *tee_slave)
 
static void log_slave (TeeSlave *slave, void *log_ctx, int log_level)
 
static int tee_process_slave_failure (AVFormatContext *avf, unsigned slave_idx, int err_n)
 
static int tee_write_header (AVFormatContext *avf)
 
static int tee_write_trailer (AVFormatContext *avf)
 
static int tee_write_packet (AVFormatContext *avf, AVPacket *pkt)
 

Variables

static const char *const slave_delim = "|"
 
static const char *const slave_bsfs_spec_sep = "/"
 
static const char *const slave_select_sep = ","
 
static const AVOption options []
 
static const AVClass tee_muxer_class
 
AVOutputFormat ff_tee_muxer
 

Macro Definition Documentation

#define DEFAULT_SLAVE_FAILURE_POLICY   ON_SLAVE_FAILURE_ABORT

Definition at line 36 of file tee.c.

Referenced by parse_slave_failure_policy_option().

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

Definition at line 66 of file tee.c.

#define STEAL_OPTION (   option,
  field 
)
Value:
do { \
if ((entry = av_dict_get(options, option, NULL, 0))) { \
field = entry->value; \
entry->value = NULL; /* prevent it from being freed */ \
} \
} while (0)
#define NULL
Definition: coverity.c:32
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
Definition: dict.c:40
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this field
static const AVOption options[]
Definition: tee.c:67
if(ret)
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
Definition: dict.c:70
option
Definition: libkvazaar.c:291

Referenced by open_slave().

Enumeration Type Documentation

Enumerator
ON_SLAVE_FAILURE_ABORT 
ON_SLAVE_FAILURE_IGNORE 

Definition at line 31 of file tee.c.

Function Documentation

static int parse_slave_failure_policy_option ( const char *  opt,
TeeSlave tee_slave 
)
inlinestatic

Definition at line 82 of file tee.c.

Referenced by open_slave().

static int parse_slave_fifo_options ( const char *  use_fifo,
const char *  fifo_options,
TeeSlave tee_slave 
)
static

Definition at line 99 of file tee.c.

Referenced by open_slave().

static int close_slave ( TeeSlave tee_slave)
static

Definition at line 122 of file tee.c.

Referenced by close_slaves(), tee_process_slave_failure(), and tee_write_trailer().

static void close_slaves ( AVFormatContext avf)
static

Definition at line 148 of file tee.c.

Referenced by tee_write_header().

static int open_slave ( AVFormatContext avf,
char *  slave,
TeeSlave tee_slave 
)
static

Definition at line 159 of file tee.c.

Referenced by tee_write_header().

static void log_slave ( TeeSlave slave,
void log_ctx,
int  log_level 
)
static

Definition at line 406 of file tee.c.

Referenced by tee_write_header().

static int tee_process_slave_failure ( AVFormatContext avf,
unsigned  slave_idx,
int  err_n 
)
static

Definition at line 426 of file tee.c.

Referenced by tee_write_header(), tee_write_packet(), and tee_write_trailer().

static int tee_write_header ( AVFormatContext avf)
static

Definition at line 448 of file tee.c.

static int tee_write_trailer ( AVFormatContext avf)
static

Definition at line 520 of file tee.c.

static int tee_write_packet ( AVFormatContext avf,
AVPacket pkt 
)
static

Definition at line 537 of file tee.c.

Variable Documentation

const char* const slave_delim = "|"
static

Definition at line 62 of file tee.c.

Referenced by tee_write_header().

const char* const slave_bsfs_spec_sep = "/"
static

Definition at line 63 of file tee.c.

Referenced by open_slave().

const char* const slave_select_sep = ","
static

Definition at line 64 of file tee.c.

Referenced by open_slave().

const AVOption options[]
static
Initial value:
= {
{"use_fifo", "Use fifo pseudo-muxer to separate actual muxers from encoder",
OFFSET(use_fifo), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
{"fifo_options", "fifo pseudo-muxer options", OFFSET(fifo_options_str),
{NULL}
}
#define NULL
Definition: coverity.c:32
#define AV_OPT_FLAG_ENCODING_PARAM
a generic parameter which can be set by the user for muxing or encoding
Definition: opt.h:276
#define OFFSET(x)
Definition: tee.c:66

Definition at line 67 of file tee.c.

const AVClass tee_muxer_class
static
Initial value:
= {
.class_name = "Tee muxer",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]
Definition: tee.c:67

Definition at line 75 of file tee.c.

AVOutputFormat ff_tee_muxer
Initial value:
= {
.name = "tee",
.long_name = NULL_IF_CONFIG_SMALL("Multiple muxer tee"),
.priv_data_size = sizeof(TeeContext),
.priv_class = &tee_muxer_class,
}
static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
Definition: ffmpeg.c:689
static int tee_write_packet(AVFormatContext *avf, AVPacket *pkt)
Definition: tee.c:537
static int tee_write_trailer(AVFormatContext *avf)
Definition: tee.c:520
#define AVFMT_ALLOW_FLUSH
Format allows flushing.
Definition: avformat.h:476
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static const AVClass tee_muxer_class
Definition: tee.c:75
static int write_trailer(AVFormatContext *s1)
Definition: v4l2enc.c:94
Definition: tee.c:52
#define flags(name, subs,...)
Definition: cbs_av1.c:561
#define AVFMT_NOFILE
Demuxer will use avio_open, no opened file should be provided by the caller.
Definition: avformat.h:463
static void write_header(FFV1Context *f)
Definition: ffv1enc.c:337
static int tee_write_header(AVFormatContext *avf)
Definition: tee.c:448

Definition at line 610 of file tee.c.