1#ifndef ENGINE_CLIENT_VIDEO_H
2#define ENGINE_CLIENT_VIDEO_H
7#include <libavcodec/avcodec.h>
8#include <libavformat/avformat.h>
14#include <condition_variable>
std::vector< AVFrame * > m_vpFrames
Definition video.h:34
AVCodecContext * m_pCodecContext
Definition video.h:28
int64_t m_SamplesFrameCount
Definition video.h:32
std::vector< struct SwrContext * > m_vpSwrContexts
Definition video.h:38
std::vector< struct SwsContext * > m_vpSwsContexts
Definition video.h:37
std::vector< AVFrame * > m_vpTmpFrames
Definition video.h:35
int64_t m_SamplesCount
Definition video.h:31
AVStream * m_pStream
Definition video.h:27
int16_t m_aBuffer[4096]
Definition video.h:154
std::condition_variable m_Cond
Definition video.h:126
int64_t m_SampleCountStart
Definition video.h:135
bool m_HasAudioFrame
Definition video.h:130
bool m_Started
Definition video.h:128
std::mutex m_Mutex
Definition video.h:125
std::thread m_Thread
Definition video.h:124
bool m_Finished
Definition video.h:129
std::condition_variable m_AudioFillCond
Definition video.h:133
std::mutex m_AudioFillMutex
Definition video.h:132
uint64_t m_AudioFrameToFill
Definition video.h:134
std::vector< uint8_t > m_vBuffer
Definition video.h:148
bool m_Started
Definition video.h:110
std::mutex m_Mutex
Definition video.h:107
bool m_Finished
Definition video.h:111
std::mutex m_VideoFillMutex
Definition video.h:114
uint64_t m_VideoFrameToFill
Definition video.h:116
std::condition_variable m_VideoFillCond
Definition video.h:115
bool m_HasVideoFrame
Definition video.h:112
std::thread m_Thread
Definition video.h:106
std::condition_variable m_Cond
Definition video.h:108
void NextAudioFrame(ISoundMixFunc Mix) override
Definition video.cpp:408
bool OpenVideo()
Definition video.cpp:682
bool m_HasAudio
Definition video.h:143
void NextVideoFrame() override
Definition video.cpp:386
void RunAudioThread(size_t ParentThreadIndex, size_t ThreadIndex) REQUIRES(!m_WriteLock)
Definition video.cpp:468
ISound * m_pSound
Definition video.h:83
void NextAudioFrameTimeline(ISoundMixFunc Mix) override
Definition video.cpp:395
IGraphics * m_pGraphics
Definition video.h:81
std::vector< CVideoBuffer > m_vVideoBuffers
Definition video.h:150
void NextVideoFrameThread() override
Definition video.cpp:335
std::vector< std::unique_ptr< CAudioRecorderThread > > m_vpAudioThreads
Definition video.h:138
CLock m_WriteLock
Definition video.h:97
void WriteFrame(COutputStream *pStream, size_t ThreadIndex) REQUIRES(m_WriteLock)
Definition video.cpp:977
bool m_Recording
Definition video.h:95
bool OpenAudio()
Definition video.cpp:746
size_t m_CurVideoThreadIndex
Definition video.h:99
static void Init()
Definition video.cpp:62
COutputStream m_AudioStream
Definition video.h:159
void UpdateVideoBufferFromGraphics(size_t ThreadIndex)
Definition video.cpp:613
std::atomic< int32_t > m_ProcessingVideoFrame
Definition video.h:140
size_t m_CurAudioThreadIndex
Definition video.h:101
IStorage * m_pStorage
Definition video.h:82
uint64_t m_VideoFrameIndex
Definition video.h:88
bool AddStream(COutputStream *pStream, AVFormatContext *pFormatContext, const AVCodec **ppCodec, enum AVCodecID CodecId) const
Definition video.cpp:855
AVFrame * AllocAudioFrame(enum AVSampleFormat SampleFmt, uint64_t ChannelLayout, int SampleRate, int NbSamples)
Definition video.cpp:649
AVFormatContext * m_pFormatContext
Definition video.h:166
std::vector< CAudioBuffer > m_vAudioBuffers
Definition video.h:156
size_t m_AudioThreads
Definition video.h:100
AVDictionary * m_pOptDict
Definition video.h:164
void CloseStream(COutputStream *pStream)
Definition video.cpp:1070
const AVOutputFormat * m_pFormat
Definition video.h:167
std::atomic< int32_t > m_ProcessingAudioFrame
Definition video.h:141
bool m_Started
Definition video.h:93
size_t m_VideoThreads
Definition video.h:98
char m_aName[256]
Definition video.h:87
static IVideo * Current()
Definition video.h:58
bool IsRecording() override
Definition video.h:50
void FinishFrames(COutputStream *pStream)
Definition video.cpp:1022
uint64_t m_AudioFrameIndex
Definition video.h:89
void FillAudioFrame(size_t ThreadIndex)
Definition video.cpp:513
void FillVideoFrame(size_t ThreadIndex) REQUIRES(!m_WriteLock)
Definition video.cpp:605
~CVideo()
Definition video.cpp:99
COutputStream m_VideoStream
Definition video.h:158
std::vector< std::unique_ptr< CVideoRecorderThread > > m_vpVideoThreads
Definition video.h:119
int m_Height
Definition video.h:86
void Stop() override
Definition video.cpp:271
bool m_Stopped
Definition video.h:94
const AVCodec * m_pAudioCodec
Definition video.h:162
void RunVideoThread(size_t ParentThreadIndex, size_t ThreadIndex) REQUIRES(!m_WriteLock)
Definition video.cpp:557
bool Start() override REQUIRES(!m_WriteLock)
Definition video.cpp:104
void Pause(bool Pause) override
Definition video.cpp:265
AVFrame * AllocPicture(enum AVPixelFormat PixFmt, int Width, int Height)
Definition video.cpp:623
const AVCodec * m_pVideoCodec
Definition video.h:161
int m_FPS
Definition video.h:91
int m_Width
Definition video.h:85
Definition graphics.h:188
static IVideo * ms_pCurrentVideo
Definition video.h:34
#define REQUIRES(...)
Definition lock.h:34
std::function< void(short *pFinalOut, unsigned Frames)> ISoundMixFunc
Definition video.h:8