int nb_pass;
SpecifierOpt *passlogfiles;
int nb_passlogfiles;
+ SpecifierOpt *max_muxing_queue_size;
+ int nb_max_muxing_queue_size;
SpecifierOpt *guess_layout_max;
int nb_guess_layout_max;
SpecifierOpt *apad;
double ts_scale;
int saw_first_ts;
- int showed_multi_packet_warning;
AVDictionary *decoder_opts;
AVRational framerate; /* framerate forced with -r */
int top_field_first;
// number of frames/samples retrieved from the decoder
uint64_t frames_decoded;
uint64_t samples_decoded;
+
+ int64_t *dts_buffer;
+ int nb_dts_buffer;
} InputStream;
typedef struct InputFile {
int64_t first_pts;
/* dts of the last packet sent to the muxer */
int64_t last_mux_dts;
- AVBitStreamFilterContext *bitstream_filters;
+
+ int nb_bitstream_filters;
+ uint8_t *bsf_extradata_updated;
+ AVBSFContext **bsf_ctx;
+
AVCodecContext *enc_ctx;
+ AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
AVCodec *enc;
int64_t max_frames;
AVFrame *filtered_frame;
OSTFinished finished; /* no more packets should be written for this stream */
int unavailable; /* true if the steram is unavailable (possibly temporarily) */
int stream_copy;
+
+ // init_output_stream() has been called for this stream
+ // The encoder and the bitstream filters have been initialized and the stream
+ // parameters are set in the AVStream.
+ int initialized;
+
const char *attachment_filename;
int copy_initial_nonkeyframes;
int copy_prior_start;
int keep_pix_fmt;
AVCodecParserContext *parser;
+ AVCodecContext *parser_avctx;
/* stats */
// combined size of all the packets written
/* packet quality factor */
int quality;
+ int max_muxing_queue_size;
+
+ /* the packets are buffered here until the muxer is ready to be initialized */
+ AVFifoBuffer *muxing_queue;
+
/* packet picture type */
int pict_type;
uint64_t limit_filesize; /* filesize limit expressed in bytes */
int shortest;
+
+ int header_written;
} OutputFile;
extern InputStream **input_streams;
int configure_filtergraph(FilterGraph *fg);
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out);
int ist_in_filtergraph(FilterGraph *fg, InputStream *ist);
-FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost);
+int filtergraph_is_simple(FilterGraph *fg);
+int init_simple_filtergraph(InputStream *ist, OutputStream *ost);
int init_complex_filtergraph(FilterGraph *fg);
int ffmpeg_parse_options(int argc, char **argv);