From patchwork Wed Feb 14 18:24:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 46279 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:b819:b0:19e:cdac:8cce with SMTP id fi25csp114991pzb; Wed, 14 Feb 2024 10:25:42 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUA8WQtxd2hv0uoj6nxXcjkHX9No6E+EXusYI61mfh69OP2SZbyEhBIG9t9CsPEaxFtL/drDvgCoeABglDfkz+MH2TgNZvLt2ABGQ== X-Google-Smtp-Source: AGHT+IFREI6EcNC1vTl3qXjrJoGVLgMUVFwX06IGLi3sa6qnh/1JiaxroozK6CGVD4t/NyGp2Iep X-Received: by 2002:aa7:d8da:0:b0:562:e37:450f with SMTP id k26-20020aa7d8da000000b005620e37450fmr2589462eds.31.1707935142070; Wed, 14 Feb 2024 10:25:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707935142; cv=none; d=google.com; s=arc-20160816; b=y2SQBggNiaLKpK11IOUQFMz8B+UV7SViWzh/PMPdaVPCaGOmzaqU0fEAHRj9vwmNZs XdKf2vby8n6Rsg5hzQVcXKb94dYwP55OtgL+hJ184etdN7LJWQGYfF26iAvs/TcPu3Y/ GAvUYjU12RbaOyS1zRrt/0G08F0KHoyqCph3bn4fSYvxvogKZRfZRUSFD1kzlzujxI3L h/uxzMhBpt1ipRBqDb3bGbGZrEg88inq4hdZX2C0mwYGC7Z6cjaWrv8ipkfNqGD3WUxF C1U6yYwNnZ7jy8V8cIn1bAkfD3XRxAOtKTJyYeThtODkrnMF5sIZJR+BqhvNEQkTebyp GMZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Ey492yzpQmZyubFHRFW1QCZdXxUjtxc/zVMMxb/SYEI=; fh=ud+8ho+7H/Dv1mGA6PIoEdn4QPQzZNXOvh8s0Jha73U=; b=wnbTLUMfF+qSDASx+o14mxWpjYTGp54zBbPblTsvEYxR1/6PbCBAnEHwpea4MtfaHP ZuYrFVzXs6i9mGXMY6kyV4CzWYSZPBMkMuEjwasXjwN7Qsiib2/+Vegwj1ekWqY+cGSn iyY15Ph4IBjbkqKUOL8dWMqZN5hR94h/Zw0yHkcD5eqtaLz3fWyIPDrCDRvaTMWroHj5 CNB9DZOmKwALnIzYidFAK61xEKIpzi5Ck1uW6zimHede+8rG2glDmim6c2La4RDhEZVY zvffV6BDCrLHeMA+3NRtnq5RxYmL9Kp14g851zDw9F82DDcaKlS9sUX/JkA8fc5QOH3w /8DQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=W2WezvEk; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org X-Forwarded-Encrypted: i=1; AJvYcCU3zgOpBLU+MyaEmrcMmhWKeTxbSfqmzZr/xEW71UGbSncfF0M3fvbN2UOu2opIOazBHws1qSycpjvdUfJnryZoNx23VQ+sCmrUCjxkivkPCzkEfHS59p6FqjfFGWXt7Ln6V2Nv8tLM5F44zLEgLpFufaM/Gc8FYKBJoeYklLK5Wj5S3yOM7h7+BsIpjLBs5gbILk3Jcg+2+stmDwTb/sRelID1BrxbvpDfg86pccK7fU0lOCbr6L6m5scqC8ML+6EhnkrePTkiwbhuNUzq7EIXCwx/4JHNI+6SECgGRvVCNE0TzocLheDPrTiDoxJ0JWNDzufYgvjsJCDoJBGKH7V8Gd2ZCbk6kKe/TsdFT37OrhffjwMSk9n8aHbuxZWBAntMncMxlCA/QH30MDy/JVYTqSQaepWv06AUdLSMyGV3i9TW6aGtu2fKxvqwba0qcogFXXP67al/yNnaj7bafRRtqAbW/OrklN7HGXb6t8NIhPh6sJlcy1mEXvhf8BDTBKUf9lSI5m1nQMPLs4m1aMHxq/xMUfGXFjCaS+dmca1McLJxo0ldOa06w1T5bIhWeIKWwuOTuZCymrMHHKMWppeLxwYaHPp6oi9G6Pz2qklcWAcLmpDQvogoSzNhbby9PmBs0fTUdrDzSiLqf0NWdBLoJxu3l2Ok76jO0DOvqXUAklZ7YLVpY0GsFAesb/jFx1PUohIiRQIAeox8UixY+iclqPL0KevnXIC/4ZTGNhYBQnHf21p8jQ+mKKvjAXxlwGDh0KenDYWHPG+vbOvFdKGUKLyfYYvlqQMkoag+y3HT6A+5NEevOq4otnpNUjqq1guvgHDVn0gV7qZqF985j66ntPkumONS/ms41p41dheIa1EJarCxMJAH21ObKWqHuxO9Y65Z7ZnECVcPzrnwo2V8bGGZ44JGx43fUfhlKu+GbqPIYASc232PMUNpAluo1pAaEW I04Pcjqjup5UqWoaFq5kZ3K2IhskQ3k4MBNP+ymjiYB1SuIuPFLQmNrYWtiuq4bkk410RnndfRaS/INrf3KrqHlKSBNM/ng/UGbyjfL9wUlgtQ2Jmfwx3y81UXWCyhKyI8xE6ARj635cN31+muBMVps5gkZ+OK7uBHTYn+nYWoFSZcBsokb83bFl1kwFHzVpS416XE5bxPm8YjvJF4j2vUFoTRH4IkJAT/7df8bb+iOltL6tfNMUvZaAFfV1PThD8w2o0EZ2V3ME5Hq29f0WKMpktKKSH4tdZ18fr4N85X/NCKQBTaMDZLIkExvRRv+qh5tOQKlQrDRdwla4G5/V3yJndCQxIlCy92CSBbbIpVhFTdnpJXp6ev9ZoWoSzFwqAHg4hRrHUxHAqiXUg9NxLzVDive4ZKociTeoL7/Rty3f6EZCjHibngLPElYAMd2zRPEpBYXx8ZIp2YBj9O6ulhzrBPhzMKnsFJYgrCqCIDbdWqJMV96RheBjX/mGnEgHByy44QYzZgfKb79Xm9+THi7XJaXNoYjTUQffXVuIXRlCJJgzJc1zImNID23r/KKKJpHw/Uo6wnZNQQL3b/IOyfeogxZ67HNGje4jFj Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id df15-20020a05640230af00b005638509c353si590091edb.303.2024.02.14.10.25.41; Wed, 14 Feb 2024 10:25:42 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=W2WezvEk; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C781D68D232; Wed, 14 Feb 2024 20:24:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5324968D20C for ; Wed, 14 Feb 2024 20:24:47 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=W2WezvEk; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 564F1449E for ; Wed, 14 Feb 2024 19:24:43 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 1QifoN94l0MJ for ; Wed, 14 Feb 2024 19:24:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1707935078; bh=hLYxGzWIGSN4TRu7mb9Ii16T3yjR/fqlmQhZ1Axombg=; h=From:To:Subject:Date:In-Reply-To:References:From; b=W2WezvEkG3fsOuaRPt8aw0EaGUA3ZYtgdAhB2+4Em9c3Hx0A8aDq5wJ/b4f3FptAZ tnXKBa1Bc2rtmvNbPK5UkNXWqH8uWXqkpX5DzSSIBthOKjuh7X5XUStCssqdP7c22N mlT/sL0flxPNHq4+c6YLKIvAmsSsJLSth32hoZZrgYGhim44KtTiFJCXmQMfBIXHJN LiTolS+o2RDQvm851FbCFKBvD+cwWPXTdA1wklXn67YvGMk+l319r3SbVsLuoykkIh aGCj/+79vweYZWfz2y/JO9EjMsh/O+ysnh5YeIk5DmiF9kub1N2vJY17+hWLXHz21s zqN54ToUe5DcA== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id C44DF4D3D for ; Wed, 14 Feb 2024 19:24:38 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id B81CB3A218D for ; Wed, 14 Feb 2024 19:24:38 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Feb 2024 19:24:35 +0100 Message-ID: <20240214182435.31380-10-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240214182435.31380-1-anton@khirnov.net> References: <20240214182435.31380-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/10] fftools/ffmpeg: cosmetics, vertically align structs X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: swXQK8s1LW6f --- fftools/ffmpeg_dec.c | 38 ++++++------- fftools/ffmpeg_demux.c | 68 +++++++++++------------ fftools/ffmpeg_filter.c | 120 ++++++++++++++++++++-------------------- fftools/ffmpeg_mux.h | 66 +++++++++++----------- 4 files changed, 146 insertions(+), 146 deletions(-) diff --git a/fftools/ffmpeg_dec.c b/fftools/ffmpeg_dec.c index 1cfa15b943..769ae36296 100644 --- a/fftools/ffmpeg_dec.c +++ b/fftools/ffmpeg_dec.c @@ -35,20 +35,20 @@ #include "thread_queue.h" typedef struct DecoderPriv { - Decoder dec; + Decoder dec; - AVCodecContext *dec_ctx; + AVCodecContext *dec_ctx; - AVFrame *frame; - AVPacket *pkt; + AVFrame *frame; + AVPacket *pkt; // override output video sample aspect ratio with this value - AVRational sar_override; + AVRational sar_override; - AVRational framerate_in; + AVRational framerate_in; // a combination of DECODER_FLAG_*, provided to dec_open() - int flags; + int flags; enum AVPixelFormat hwaccel_pix_fmt; enum HWAccelID hwaccel_id; @@ -58,22 +58,22 @@ typedef struct DecoderPriv { // pts/estimated duration of the last decoded frame // * in decoder timebase for video, // * in last_frame_tb (may change during decoding) for audio - int64_t last_frame_pts; - int64_t last_frame_duration_est; - AVRational last_frame_tb; - int64_t last_filter_in_rescale_delta; - int last_frame_sample_rate; + int64_t last_frame_pts; + int64_t last_frame_duration_est; + AVRational last_frame_tb; + int64_t last_filter_in_rescale_delta; + int last_frame_sample_rate; /* previous decoded subtitles */ - AVFrame *sub_prev[2]; - AVFrame *sub_heartbeat; + AVFrame *sub_prev[2]; + AVFrame *sub_heartbeat; - Scheduler *sch; - unsigned sch_idx; + Scheduler *sch; + unsigned sch_idx; - void *log_parent; - char log_name[32]; - char *parent_name; + void *log_parent; + char log_name[32]; + char *parent_name; } DecoderPriv; static DecoderPriv *dp_from_dec(Decoder *d) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index e543c4215c..d5a3dbc1d2 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -40,41 +40,41 @@ #include "libavformat/avformat.h" typedef struct DemuxStream { - InputStream ist; + InputStream ist; // name used for logging - char log_name[32]; + char log_name[32]; - int sch_idx_stream; - int sch_idx_dec; + int sch_idx_stream; + int sch_idx_dec; - double ts_scale; + double ts_scale; /* non zero if the packets must be decoded in 'raw_fifo', see DECODING_FOR_* */ - int decoding_needed; + int decoding_needed; #define DECODING_FOR_OST 1 #define DECODING_FOR_FILTER 2 /* true if stream data should be discarded */ - int discard; + int discard; // scheduler returned EOF for this stream - int finished; + int finished; - int streamcopy_needed; - int have_sub2video; - int reinit_filters; + int streamcopy_needed; + int have_sub2video; + int reinit_filters; - int wrap_correction_done; - int saw_first_ts; + int wrap_correction_done; + int saw_first_ts; ///< dts of the first packet read for this stream (in AV_TIME_BASE units) - int64_t first_dts; + int64_t first_dts; /* predicted dts of the next packet read for this stream or (when there are * several frames in a packet) of the next frame in current packet (in AV_TIME_BASE units) */ - int64_t next_dts; + int64_t next_dts; ///< dts of the last packet read for this stream (in AV_TIME_BASE units) - int64_t dts; + int64_t dts; const AVCodecDescriptor *codec_desc; @@ -82,45 +82,45 @@ typedef struct DemuxStream { DecoderOpts dec_opts; char dec_name[16]; - AVBSFContext *bsf; + AVBSFContext *bsf; /* number of packets successfully read for this stream */ - uint64_t nb_packets; + uint64_t nb_packets; // combined size of all the packets read - uint64_t data_size; + uint64_t data_size; } DemuxStream; typedef struct Demuxer { - InputFile f; + InputFile f; // name used for logging - char log_name[32]; + char log_name[32]; - int64_t wallclock_start; + int64_t wallclock_start; /** * Extra timestamp offset added by discontinuity handling. */ - int64_t ts_offset_discont; - int64_t last_ts; + int64_t ts_offset_discont; + int64_t last_ts; - int64_t recording_time; - int accurate_seek; + int64_t recording_time; + int accurate_seek; /* number of times input stream should be looped */ - int loop; - int have_audio_dec; + int loop; + int have_audio_dec; /* duration of the looped segment of the input file */ - Timestamp duration; + Timestamp duration; /* pts with the smallest/largest values ever seen */ - Timestamp min_pts; - Timestamp max_pts; + Timestamp min_pts; + Timestamp max_pts; /* number of streams that the user was warned of */ - int nb_streams_warn; + int nb_streams_warn; - float readrate; - double readrate_initial_burst; + float readrate; + double readrate_initial_burst; Scheduler *sch; diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index dcd08dbc36..27fafc6704 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -43,27 +43,27 @@ #include "libavcodec/mathops.h" typedef struct FilterGraphPriv { - FilterGraph fg; + FilterGraph fg; // name used for logging - char log_name[32]; + char log_name[32]; - int is_simple; + int is_simple; // true when the filtergraph contains only meta filters // that do not modify the frame data - int is_meta; + int is_meta; // source filters are present in the graph - int have_sources; - int disable_conversions; + int have_sources; + int disable_conversions; - unsigned nb_outputs_done; + unsigned nb_outputs_done; - const char *graph_desc; + const char *graph_desc; // frame for temporarily holding output from the filtergraph - AVFrame *frame; + AVFrame *frame; // frame for sending output to the encoder - AVFrame *frame_enc; + AVFrame *frame_enc; Scheduler *sch; unsigned sch_idx; @@ -81,69 +81,69 @@ static const FilterGraphPriv *cfgp_from_cfg(const FilterGraph *fg) // data that is local to the filter thread and not visible outside of it typedef struct FilterGraphThread { - AVFilterGraph *graph; + AVFilterGraph *graph; - AVFrame *frame; + AVFrame *frame; // Temporary buffer for output frames, since on filtergraph reset // we cannot send them to encoders immediately. // The output index is stored in frame opaque. - AVFifo *frame_queue_out; + AVFifo *frame_queue_out; // index of the next input to request from the scheduler - unsigned next_in; + unsigned next_in; // set to 1 after at least one frame passed through this output - int got_frame; + int got_frame; // EOF status of each input/output, as received by the thread - uint8_t *eof_in; - uint8_t *eof_out; + uint8_t *eof_in; + uint8_t *eof_out; } FilterGraphThread; typedef struct InputFilterPriv { - InputFilter ifilter; + InputFilter ifilter; - InputFilterOptions opts; + InputFilterOptions opts; - int index; + int index; - AVFilterContext *filter; + AVFilterContext *filter; // used to hold submitted input - AVFrame *frame; + AVFrame *frame; /* for filters that are not yet bound to an input stream, * this stores the input linklabel, if any */ - uint8_t *linklabel; + uint8_t *linklabel; // filter data type - enum AVMediaType type; + enum AVMediaType type; // source data type: AVMEDIA_TYPE_SUBTITLE for sub2video, // same as type otherwise - enum AVMediaType type_src; + enum AVMediaType type_src; - int bound; - int eof; + int bound; + int eof; // parameters configured for this input - int format; + int format; - int width, height; - AVRational sample_aspect_ratio; - enum AVColorSpace color_space; - enum AVColorRange color_range; + int width, height; + AVRational sample_aspect_ratio; + enum AVColorSpace color_space; + enum AVColorRange color_range; - int sample_rate; - AVChannelLayout ch_layout; + int sample_rate; + AVChannelLayout ch_layout; - AVRational time_base; + AVRational time_base; - AVFifo *frame_queue; + AVFifo *frame_queue; - AVBufferRef *hw_frames_ctx; + AVBufferRef *hw_frames_ctx; - int displaymatrix_present; - int32_t displaymatrix[9]; + int displaymatrix_present; + int32_t displaymatrix[9]; // fallback parameters to use when no input is ever sent struct { @@ -178,15 +178,15 @@ static InputFilterPriv *ifp_from_ifilter(InputFilter *ifilter) } typedef struct FPSConvContext { - AVFrame *last_frame; + AVFrame *last_frame; /* number of frames emitted by the video-encoding sync code */ - int64_t frame_number; + int64_t frame_number; /* history of nb_frames_prev, i.e. the number of times the * previous frame was duplicated by vsync code in recent * do_video_out() calls */ - int64_t frames_prev_hist[3]; + int64_t frames_prev_hist[3]; - uint64_t dup_warning; + uint64_t dup_warning; int last_dropped; int dropped_keyframe; @@ -198,38 +198,38 @@ typedef struct FPSConvContext { } FPSConvContext; typedef struct OutputFilterPriv { - OutputFilter ofilter; + OutputFilter ofilter; - int index; + int index; - AVFilterContext *filter; + AVFilterContext *filter; /* desired output stream properties */ - int format; - int width, height; - int sample_rate; - AVChannelLayout ch_layout; + int format; + int width, height; + int sample_rate; + AVChannelLayout ch_layout; // time base in which the output is sent to our downstream // does not need to match the filtersink's timebase - AVRational tb_out; + AVRational tb_out; // at least one frame with the above timebase was sent // to our downstream, so it cannot change anymore - int tb_out_locked; + int tb_out_locked; - AVRational sample_aspect_ratio; + AVRational sample_aspect_ratio; // those are only set if no format is specified and the encoder gives us multiple options // They point directly to the relevant lists of the encoder. - const int *formats; - const AVChannelLayout *ch_layouts; - const int *sample_rates; + const int *formats; + const AVChannelLayout *ch_layouts; + const int *sample_rates; - AVRational enc_timebase; + AVRational enc_timebase; // offset for output timestamps, in AV_TIME_BASE_Q - int64_t ts_offset; - int64_t next_pts; - FPSConvContext fps; + int64_t ts_offset; + int64_t next_pts; + FPSConvContext fps; } OutputFilterPriv; static OutputFilterPriv *ofp_from_ofilter(OutputFilter *ofilter) diff --git a/fftools/ffmpeg_mux.h b/fftools/ffmpeg_mux.h index e1b44142cf..16af6d38ba 100644 --- a/fftools/ffmpeg_mux.h +++ b/fftools/ffmpeg_mux.h @@ -34,73 +34,73 @@ #include "libavutil/fifo.h" typedef struct MuxStream { - OutputStream ost; + OutputStream ost; // name used for logging - char log_name[32]; + char log_name[32]; - AVBSFContext *bsf_ctx; - AVPacket *bsf_pkt; + AVBSFContext *bsf_ctx; + AVPacket *bsf_pkt; - AVPacket *pkt; + AVPacket *pkt; - EncStats stats; + EncStats stats; - int sch_idx; - int sch_idx_enc; - int sch_idx_src; + int sch_idx; + int sch_idx_enc; + int sch_idx_src; - int sq_idx_mux; + int sq_idx_mux; - int64_t max_frames; + int64_t max_frames; // timestamp from which the streamcopied streams should start, // in AV_TIME_BASE_Q; // everything before it should be discarded - int64_t ts_copy_start; + int64_t ts_copy_start; /* dts of the last packet sent to the muxer, in the stream timebase * used for making up missing dts values */ - int64_t last_mux_dts; + int64_t last_mux_dts; - int64_t stream_duration; - AVRational stream_duration_tb; + int64_t stream_duration; + AVRational stream_duration_tb; // state for av_rescale_delta() call for audio in write_packet() - int64_t ts_rescale_delta_last; + int64_t ts_rescale_delta_last; // combined size of all the packets sent to the muxer - uint64_t data_size_mux; + uint64_t data_size_mux; - int copy_initial_nonkeyframes; - int copy_prior_start; - int streamcopy_started; + int copy_initial_nonkeyframes; + int copy_prior_start; + int streamcopy_started; } MuxStream; typedef struct Muxer { - OutputFile of; + OutputFile of; // name used for logging - char log_name[32]; + char log_name[32]; - AVFormatContext *fc; + AVFormatContext *fc; - Scheduler *sch; - unsigned sch_idx; + Scheduler *sch; + unsigned sch_idx; // OutputStream indices indexed by scheduler stream indices - int *sch_stream_idx; - int nb_sch_stream_idx; + int *sch_stream_idx; + int nb_sch_stream_idx; - AVDictionary *opts; + AVDictionary *opts; /* filesize limit expressed in bytes */ - int64_t limit_filesize; - atomic_int_least64_t last_filesize; - int header_written; + int64_t limit_filesize; + atomic_int_least64_t last_filesize; + int header_written; - SyncQueue *sq_mux; - AVPacket *sq_pkt; + SyncQueue *sq_mux; + AVPacket *sq_pkt; } Muxer; int mux_check_init(void *arg);