FFmpeg
Loading...
Searching...
No Matches
ffmpeg_mux.h
Go to the documentation of this file.
1/*
2 * Muxer internal APIs - should not be included outside of ffmpeg_mux*
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef FFTOOLS_FFMPEG_MUX_H
22#define FFTOOLS_FFMPEG_MUX_H
23
24#include <stdatomic.h>
25#include <stdint.h>
26
27#include "ffmpeg_sched.h"
28
30
31#include "libavcodec/packet.h"
32
33#include "libavutil/dict.h"
34#include "libavutil/fifo.h"
35
36typedef struct MuxStream {
38
39 /**
40 * Codec parameters for packets submitted to the muxer (i.e. before
41 * bitstream filtering, if any).
42 */
44
45 // name used for logging
46 char log_name[32];
47
50
52
54
58
60
62
63 // timestamp from which the streamcopied streams should start,
64 // in AV_TIME_BASE_Q;
65 // everything before it should be discarded
67
68 /* dts of the last packet sent to the muxer, in the stream timebase
69 * used for making up missing dts values */
71
74
75 // state for av_rescale_delta() call for audio in write_packet()
77
78 // combined size of all the packets sent to the muxer
79 uint64_t data_size_mux;
80
84
88
89 const char *apad;
90} MuxStream;
91
92typedef struct Muxer {
94
95 // name used for logging
96 char log_name[32];
97
99
101 unsigned sch_idx;
102
103 // OutputStream indices indexed by scheduler stream indices
106
108
109 // used to validate that all encoder avoptions have been actually used
111
112 /* filesize limit expressed in bytes */
116
119} Muxer;
120
121int mux_check_init(void *arg);
122
124{
125 return (MuxStream*)ost;
126}
127
128#endif /* FFTOOLS_FFMPEG_MUX_H */
Main libavformat public API header.
long long int64_t
Definition coverity.c:34
Public dictionary API.
intptr_t atomic_int_least64_t
Definition stdatomic.h:68
static MuxStream * ms_from_ost(OutputStream *ost)
Definition ffmpeg_mux.h:123
int mux_check_init(void *arg)
Definition ffmpeg_mux.c:550
A generic FIFO API.
const char * arg
Definition jacosubdec.c:65
The bitstream filter state.
Definition bsf.h:68
This struct describes the properties of an encoded stream.
Definition codec_par.h:49
Format I/O context.
Definition avformat.h:1333
This structure stores compressed data.
Definition packet.h:580
Rational number (pair of numerator and denominator).
Definition rational.h:58
OutputStream ost
Definition ffmpeg_mux.h:37
const char * apad
Definition ffmpeg_mux.h:89
char log_name[32]
Definition ffmpeg_mux.h:46
int copy_prior_start
Definition ffmpeg_mux.h:82
AVPacket * pkt
Definition ffmpeg_mux.h:51
int sq_idx_mux
Definition ffmpeg_mux.h:59
AVBSFContext * bsf_ctx
Definition ffmpeg_mux.h:48
int64_t max_frames
Definition ffmpeg_mux.h:61
AVCodecParameters * par_in
Codec parameters for packets submitted to the muxer (i.e.
Definition ffmpeg_mux.h:43
int sch_idx_enc
Definition ffmpeg_mux.h:56
AVPacket * bsf_pkt
Definition ffmpeg_mux.h:49
uint64_t data_size_mux
Definition ffmpeg_mux.h:79
int copy_initial_nonkeyframes
Definition ffmpeg_mux.h:81
int sch_idx_src
Definition ffmpeg_mux.h:57
int64_t ts_rescale_delta_last
Definition ffmpeg_mux.h:76
int64_t ts_copy_start
Definition ffmpeg_mux.h:66
int64_t stream_duration
Definition ffmpeg_mux.h:72
AVRational stream_duration_tb
Definition ffmpeg_mux.h:73
int force_fps
Definition ffmpeg_mux.h:87
int64_t last_mux_dts
Definition ffmpeg_mux.h:70
EncStats stats
Definition ffmpeg_mux.h:53
int sch_idx
Definition ffmpeg_mux.h:55
AVRational max_frame_rate
Definition ffmpeg_mux.h:86
int streamcopy_started
Definition ffmpeg_mux.h:83
AVRational frame_rate
Definition ffmpeg_mux.h:85
AVDictionary * opts
Definition ffmpeg_mux.h:107
AVDictionary * enc_opts_used
Definition ffmpeg_mux.h:110
OutputFile of
Definition ffmpeg_mux.h:93
atomic_int_least64_t last_filesize
Definition ffmpeg_mux.h:114
AVPacket * sq_pkt
Definition ffmpeg_mux.h:118
int nb_sch_stream_idx
Definition ffmpeg_mux.h:105
int header_written
Definition ffmpeg_mux.h:115
Scheduler * sch
Definition ffmpeg_mux.h:100
char log_name[32]
Definition ffmpeg_mux.h:96
SyncQueue * sq_mux
Definition ffmpeg_mux.h:117
AVFormatContext * fc
Definition ffmpeg_mux.h:98
unsigned sch_idx
Definition ffmpeg_mux.h:101
int * sch_stream_idx
Definition ffmpeg_mux.h:104
int64_t limit_filesize
Definition ffmpeg_mux.h:113
A sync queue provides timestamp synchronization between multiple streams.
Definition sync_queue.c:90
static AVStream * ost