33 struct Data : QSharedData
35 Data(AVCodecContextUPtr context, AVStream *avStream, AVFormatContext *formatContext,
36 std::unique_ptr<QFFmpeg::HWAccel> hwAccel);
37 AVCodecContextUPtr context;
38 AVStream *stream =
nullptr;
39 AVFormatContext *formatContext =
nullptr;
40 AVRational pixelAspectRatio = { 0, 1 };
41 std::unique_ptr<QFFmpeg::HWAccel> hwAccel;
56 return QFFmpeg::toTrackDuration(duration, d->stream);
61 return QFFmpeg::toTrackPosition(streamPosition, d->stream, d->formatContext);
65 enum VideoCodecCreationPolicy {
70 static q23::expected<CodecContext, QString> create(AVStream *stream, AVFormatContext *formatContext,
72 VideoCodecCreationPolicy videoCodecPolicy);
73 CodecContext(Data *data) : d(data) { }
74 QExplicitlySharedDataPointer<Data> d;
TrackDuration toTrackDuration(AVStreamDuration duration) const
TrackPosition toTrackPosition(AVStreamPosition streamPosition) const
AVCodecContext * context() const
HWAccel * hwAccel() const
AVStream * stream() const
static q23::expected< CodecContext, QString > create(AVStream *stream, AVFormatContext *formatContext, const QPlaybackOptions &options)
AVRational pixelAspectRatio(AVFrame *frame) const