X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffmpeg.h;h=e1d4593b279f682aabf7c84501565d938bf3c49e;hb=1a9513bfbc6026cf578865c014961492ae3fb60b;hp=f09d33bdcf0ca2ee1ae8f7d90ed0a8986bb1789b;hpb=1ad3ffadd9102b4a752c634e401a1438eba9d416;p=ffmpeg diff --git a/ffmpeg.h b/ffmpeg.h index f09d33bdcf0..e1d4593b279 100644 --- a/ffmpeg.h +++ b/ffmpeg.h @@ -212,6 +212,8 @@ typedef struct OptionsContext { 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; @@ -287,7 +289,6 @@ typedef struct InputStream { 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; @@ -349,6 +350,9 @@ typedef struct InputStream { // 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 { @@ -416,8 +420,13 @@ typedef struct OutputStream { 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; @@ -464,6 +473,12 @@ typedef struct OutputStream { 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; @@ -472,6 +487,7 @@ typedef struct OutputStream { int keep_pix_fmt; AVCodecParserContext *parser; + AVCodecContext *parser_avctx; /* stats */ // combined size of all the packets written @@ -485,6 +501,11 @@ typedef struct OutputStream { /* 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; @@ -501,6 +522,8 @@ typedef struct OutputFile { uint64_t limit_filesize; /* filesize limit expressed in bytes */ int shortest; + + int header_written; } OutputFile; extern InputStream **input_streams; @@ -573,7 +596,8 @@ void choose_sample_fmt(AVStream *st, AVCodec *codec); 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);