17# if defined(_MSC_VER) && !defined(_USE_MATH_DEFINES)
18# define _USE_MATH_DEFINES
23# include <libavcodec/codec_id.h>
24# include <libavformat/avformat.h>
25# include <libavutil/buffer.h>
26# include <libavutil/channel_layout.h>
27# include <libavutil/imgutils.h>
28# include <libavutil/mastering_display_metadata.h>
29# include <libavutil/opt.h>
30# include <libavutil/rational.h>
31# include <libavutil/samplefmt.h>
37# include <AUD_Types.h>
46 AVCodecID ffmpeg_codec = {};
47 AVCodecID ffmpeg_audio_codec = {};
48 int ffmpeg_video_bitrate = 0;
49 int ffmpeg_audio_bitrate = 0;
50 int ffmpeg_gop_size = 0;
51 int ffmpeg_max_b_frames = 0;
52 int ffmpeg_autosplit_count = 0;
53 bool ffmpeg_autosplit =
false;
54 bool ffmpeg_preview =
false;
57 int ffmpeg_preset = 0;
58 int ffmpeg_profile = 0;
60 AVFormatContext *outfile =
nullptr;
61 AVCodecContext *video_codec =
nullptr;
62 AVCodecContext *audio_codec =
nullptr;
63 AVStream *video_stream =
nullptr;
64 AVStream *audio_stream =
nullptr;
65 AVFrame *current_frame =
nullptr;
69 AVFrame *img_convert_frame =
nullptr;
70 SwsContext *img_convert_ctx =
nullptr;
72 uint8_t *audio_input_buffer =
nullptr;
73 uint8_t *audio_deinterleave_buffer =
nullptr;
74 int audio_input_samples = 0;
75 double audio_time = 0.0;
76 double audio_time_total = 0.0;
77 bool audio_deinterleave =
false;
78 int audio_sample_size = 0;
80 StampData *stamp_data =
nullptr;
83 AUD_Device *audio_mixdown_device =
nullptr;
87bool movie_audio_open(MovieWriter *context,
93void movie_audio_close(MovieWriter *context,
bool is_autosplit);
95AVStream *alloc_audio_stream(MovieWriter *context,
102void write_audio_frames(MovieWriter *context,
double to_pts);
static void error(const char *str)