47 AVFormatContext *formatContext);
64 VideoFrameEncoder(AVStream *stream,
const Codec &codec, HWAccelUPtr hwAccel,
66 const QMediaEncoderSettings &encoderSettings);
68 static AVStream *createStream(
const SourceParams &sourceParams, AVFormatContext *formatContext);
70 bool updateSourceFormatAndSize(
const AVFrame *frame);
72 void updateConversions();
76 VideoFrameEncoderUPtr encoder;
77 AVPixelFormat targetFormat = AV_PIX_FMT_NONE;
80 static CreationResult create(AVStream *stream,
const Codec &codec, HWAccelUPtr hwAccel,
82 const QMediaEncoderSettings &encoderSettings,
83 const AVPixelFormatSet &prohibitedTargetFormats = {});
85 void initTargetSize();
87 void initCodecFrameRate();
89 bool initTargetFormats(
const AVPixelFormatSet &prohibitedTargetFormats);
93 bool initCodecContext();
97 qint64 estimateDuration(
const AVPacket &packet,
bool isFirstPacket);
100 QMediaEncoderSettings m_settings;
101 AVStream *m_stream =
nullptr;
109 AVCodecContextUPtr m_codecContext;
110 SwsContextUPtr m_scaleContext;
115 bool m_downloadFromHW =
false;
116 bool m_uploadToHW =
false;
118 AVRational m_codecFrameRate = { 0, 1 };
121 int64_t m_packetDtsOffset = 0;