8 #include <QRecursiveMutex>
13 #include "libavcodec/avcodec.h"
15 #include "libavutil/buffer.h"
25 struct AVCodecContext;
32 AVCodecContext* GetCodecContext(
const AVStream* Stream,
33 const AVCodec* Codec =
nullptr,
34 bool NullCodec =
false);
35 AVCodecContext* FindCodecContext(
const AVStream* Stream);
36 void FreeCodecContext(
const AVStream* Stream);
37 void FreeAllContexts();
50 AVPixelFormat Fmt = AV_PIX_FMT_YUV420P);
51 int Copy(
AVFrame* To, AVPixelFormat ToFmt,
const AVFrame* From, AVPixelFormat FromFmt,
52 int Width,
int Height);
56 int SizeData(
int Width,
int Height, AVPixelFormat Fmt);
58 AVPixelFormat m_format { AV_PIX_FMT_NONE };
59 SwsContext* m_swsctx {
nullptr };
78 char m_codecType {
' '};
80 int64_t m_duration {0};
84 float m_SampleAspectRatio {0.0};
89 QString m_fieldOrder {
"UN"};
90 float m_frameRate {0.0};
91 float m_avgFrameRate {0.0};
145 swap(a.m_buffer, b.m_buffer);
150 const uint8_t*
data() {
return m_buffer->data; }
151 size_t size() {
return m_buffer->size; }
153 static AVBufferRef*
ref(
const AVBufferRef* buf)
159 AVBufferRef* reference = av_buffer_ref(buf);
160 if (reference ==
nullptr)
162 LOG(VB_GENERAL, LOG_ERR,
"av_buffer_ref() failed to allocate memory.");
166 void unref() { av_buffer_unref(&m_buffer); }
168 AVBufferRef* m_buffer {
nullptr};