| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- #pragma once
 
- #include <libavutil/opt.h>
 
- #include <libavutil/pixdesc.h>
 
- #include <libavformat/avformat.h>
 
- #include <libswscale/swscale.h>
 
- struct ffmpeg_cfg {
 
- 	const char *url;
 
- 	const char *format_name;
 
- 	const char *format_mime_type;
 
- 	const char *muxer_settings;
 
- 	int gop_size;
 
- 	int video_bitrate;
 
- 	int audio_bitrate;
 
- 	const char *video_encoder;
 
- 	int video_encoder_id;
 
- 	const char *audio_encoder;
 
- 	int audio_encoder_id;
 
- 	const char *video_settings;
 
- 	const char *audio_settings;
 
- 	int audio_mix_count;
 
- 	int audio_tracks;
 
- 	enum AVPixelFormat format;
 
- 	enum AVColorRange color_range;
 
- 	enum AVColorSpace color_space;
 
- 	int scale_width;
 
- 	int scale_height;
 
- 	int width;
 
- 	int height;
 
- };
 
- struct ffmpeg_data {
 
- 	AVStream *video;
 
- 	AVStream **audio_streams;
 
- 	AVCodec *acodec;
 
- 	AVCodec *vcodec;
 
- 	AVFormatContext *output;
 
- 	struct SwsContext *swscale;
 
- 	int64_t total_frames;
 
- 	AVFrame *vframe;
 
- 	int frame_size;
 
- 	uint64_t start_timestamp;
 
- 	int64_t total_samples[MAX_AUDIO_MIXES];
 
- 	uint32_t audio_samplerate;
 
- 	enum audio_format audio_format;
 
- 	size_t audio_planes;
 
- 	size_t audio_size;
 
- 	int num_audio_streams;
 
- 	/* audio_tracks is a bitmask storing the indices of the mixes */
 
- 	int audio_tracks;
 
- 	struct circlebuf excess_frames[MAX_AUDIO_MIXES][MAX_AV_PLANES];
 
- 	uint8_t *samples[MAX_AUDIO_MIXES][MAX_AV_PLANES];
 
- 	AVFrame *aframe[MAX_AUDIO_MIXES];
 
- 	struct ffmpeg_cfg config;
 
- 	bool initialized;
 
- 	char *last_error;
 
- };
 
- bool ffmpeg_data_init(struct ffmpeg_data *data, struct ffmpeg_cfg *config);
 
- void ffmpeg_data_free(struct ffmpeg_data *data);
 
 
  |