Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QFFmpeg Namespace Reference

Classes

class  AudioDecoder
 
class  AudioEncoder
 
class  AudioRenderer
 
class  AudioSourceIO
 
struct  AVAudioFormat
 
struct  AVDeleter
 
struct  AVDictionaryHolder
 
class  CancelToken
 
class  Codec
 
class  ConsumerThread
 FFmpeg thread that is used to implement a consumer pattern. More...
 
class  D3D11TextureConverter
 
class  D3D11TextureSet
 
class  Demuxer
 
class  EncoderThread
 
class  EncodingFormatContext
 
class  EncodingInitializer
 
struct  Frame
 
class  HWAccel
 
struct  ICancelToken
 
struct  LoopOffset
 
class  MediaCodecTextureConverter
 
class  MediaCodecTextureSet
 
class  MediaDataHolder
 
class  Muxer
 
struct  Packet
 
class  PlaybackEngine
 
class  PlaybackEngineObject
 
struct  PositionWithOffset
 
struct  QVideoFrameHolder
 
class  RecordingEngine
 
class  Renderer
 
struct  SharedTextureHandleTraits
 
class  SteppingAudioRenderer
 
class  StreamDecoder
 
class  SubtitleRenderer
 
class  TextureBridge
 
class  TextureConverter
 
class  TextureConverterBackend
 
class  TextureSet
 
class  TimeController
 
class  VAAPITextureConverter
 
class  VAAPITextureSet
 
class  VideoEncoder
 
class  VideoFrameEncoder
 
class  VideoRenderer
 
class  VideoToolBoxTextureSet
 

Typedefs

using AVFormatContextUPtr = std::unique_ptr<AVFormatContext, AVDeleter<decltype(&avformat_close_input), &avformat_close_input>>
 
using AvioWriteBufferType
 
using HWAccelUPtr = std::unique_ptr<HWAccel>
 
using AVFrameUPtr = std::unique_ptr<AVFrame, AVDeleter<decltype(&av_frame_free), &av_frame_free>>
 
using AVPacketUPtr
 
using AVCodecContextUPtr
 
using AVBufferUPtr
 
using AVHWFramesConstraintsUPtr
 
using SwrContextUPtr = std::unique_ptr<SwrContext, AVDeleter<decltype(&swr_free), &swr_free>>
 
using SwsContextUPtr
 
using StreamIndexes = std::array<int, 3>
 
using SharedTextureHandle = QUniqueHandle<SharedTextureHandleTraits>
 
template<typename T >
using ConsumerThreadUPtr = std::unique_ptr<T, ConsumerThread::Deleter>
 
using ApplyOptions = void (*)(const QMediaEncoderSettings &settings, AVCodecContext *codec, AVDictionary **opts)
 
using VideoFrameEncoderUPtr = std::unique_ptr<VideoFrameEncoder>
 

Functions

bool findAndOpenAVDecoder (AVCodecID codecId, const std::function< AVScore(const AVCodec *)> &scoresGetter, const std::function< bool(const AVCodec *)> &codecOpener)
 
bool findAndOpenAVEncoder (AVCodecID codecId, const std::function< AVScore(const AVCodec *)> &scoresGetter, const std::function< bool(const AVCodec *)> &codecOpener)
 
const AVCodec * findAVDecoder (AVCodecID codecId, const std::optional< PixelOrSampleFormat > &format={})
 
const AVCodec * findAVEncoder (AVCodecID codecId, const std::optional< PixelOrSampleFormat > &format={})
 
const AVCodec * findAVEncoder (AVCodecID codecId, const std::function< AVScore(const AVCodec *)> &scoresGetter)
 
 Q_STATIC_LOGGING_CATEGORY (qLcDemuxer, "qt.multimedia.ffmpeg.demuxer")
 
static qint64 streamTimeToUs (const AVStream *stream, qint64 time)
 
static qint64 packetEndPos (const AVStream *stream, const Packet &packet)
 
static bool isPacketWithinStreamDuration (const AVFormatContext *context, const Packet &packet)
 
static std::optional< qint64streamDuration (const AVStream &stream)
 
static QTransform displayMatrixToTransform (const int32_t *displayMatrix)
 
static VideoTransformation streamTransformation (const AVStream *stream)
 
static bool colorTransferSupportsHdr (const AVStream *stream)
 
static void insertMediaData (QMediaMetaData &metaData, QPlatformMediaPlayer::TrackType trackType, const AVStream *stream)
 
int readQIODevice (void *opaque, uint8_t *buf, int buf_size)
 
int writeQIODevice (void *opaque, AvioWriteBufferType buf, int buf_size)
 
int64_t seekQIODevice (void *opaque, int64_t offset, int whence)
 
 Q_STATIC_LOGGING_CATEGORY (qLcRenderer, "qt.multimedia.ffmpeg.renderer")
 
enum AVPixelFormat getFormat (struct AVCodecContext *s, const enum AVPixelFormat *fmt)
 
AVFrameUPtr copyFromHwPool (AVFrameUPtr frame)
 
bool isAVFormatSupported (const AVCodec *codec, PixelOrSampleFormat format)
 
bool isHwPixelFormat (AVPixelFormat format)
 
bool isAVCodecExperimental (const AVCodec *codec)
 
void applyExperimentalCodecOptions (const AVCodec *codec, AVDictionary **opts)
 
AVPixelFormat pixelFormatForHwDevice (AVHWDeviceType deviceType)
 
AVPacketSideData * addStreamSideData (AVStream *stream, AVPacketSideData sideData)
 
const AVPacketSideData * streamSideData (const AVStream *stream, AVPacketSideDataType type)
 
SwrContextUPtr createResampleContext (const AVAudioFormat &inputFormat, const AVAudioFormat &outputFormat)
 
QVideoFrameFormat::ColorTransfer fromAvColorTransfer (AVColorTransferCharacteristic colorTrc)
 
AVColorTransferCharacteristic toAvColorTransfer (QVideoFrameFormat::ColorTransfer colorTrc)
 
QVideoFrameFormat::ColorSpace fromAvColorSpace (AVColorSpace colorSpace)
 
AVColorSpace toAvColorSpace (QVideoFrameFormat::ColorSpace colorSpace)
 
QVideoFrameFormat::ColorRange fromAvColorRange (AVColorRange colorRange)
 
AVColorRange toAvColorRange (QVideoFrameFormat::ColorRange colorRange)
 
AVHWDeviceContext * avFrameDeviceContext (const AVFrame *frame)
 
SwsContextUPtr createSwsContext (const QSize &srcSize, AVPixelFormat srcPixFmt, const QSize &dstSize, AVPixelFormat dstPixFmt, int conversionType)
 
void logGetCodecConfigError (const AVCodec *codec, AVCodecConfig config, int error)
 
std::optional< qint64mul (qint64 a, AVRational b)
 
std::optional< qrealmul (qreal a, AVRational b)
 
std::optional< qint64timeStampMs (qint64 ts, AVRational base)
 
std::optional< qint64timeStampUs (qint64 ts, AVRational base)
 
std::optional< float > toFloat (AVRational r)
 
QString err2str (int errnum)
 
void setAVFrameTime (AVFrame &frame, int64_t pts, const AVRational &timeBase)
 
void getAVFrameTime (const AVFrame &frame, int64_t &pts, AVRational &timeBase)
 
int64_t getAVFrameDuration (const AVFrame &frame)
 
template<typename T >
const T * getCodecConfig (const AVCodec *codec, AVCodecConfig config)
 
const AVPixelFormat * getCodecPixelFormats (const AVCodec *codec)
 
const AVSampleFormat * getCodecSampleFormats (const AVCodec *codec)
 
const int * getCodecSampleRates (const AVCodec *codec)
 
const AVChannelLayout * getCodecChannelLayouts (const AVCodec *codec)
 
const AVRational * getCodecFrameRates (const AVCodec *codec)
 
AVFrameUPtr makeAVFrame ()
 
template<typename Format >
bool hasAVValue (const Format *fmts, Format format)
 
template<typename AVValue , typename Predicate >
AVValue findAVValue (const AVValue *fmts, const Predicate &predicate)
 
template<typename Predicate >
const AVCodecHWConfig * findHwConfig (const AVCodec *codec, const Predicate &predicate)
 
template<typename Predicate >
AVPixelFormat findAVPixelFormat (const AVCodec *codec, const Predicate &predicate)
 
template<typename Value , typename CalculateScore >
auto findBestAVValue (const Value *values, const CalculateScore &calculateScore)
 
bool isSwPixelFormat (AVPixelFormat format)
 
bool operator== (const AVAudioFormat &lhs, const AVAudioFormat &rhs)
 
QDebug operator<< (QDebug dbg, const AVAudioFormat &format)
 
bool operator!= (const AVAudioFormat &lhs, const AVAudioFormat &rhs)
 
 Q_STATIC_LOGGING_CATEGORY (qLcEncodingFormatContext, "qt.multimedia.ffmpeg.encodingformatcontext")
 
static AVBufferUPtr loadHWContext (AVHWDeviceType type)
 
static bool precheckDriver (AVHWDeviceType type)
 
static bool checkHwType (AVHWDeviceType type)
 
static const std::vector< AVHWDeviceType > & deviceTypes ()
 
static std::vector< AVHWDeviceType > deviceTypes (const char *envVarName)
 
template<typename CodecFinder >
std::pair< const AVCodec *, HWAccelUPtrfindCodecWithHwAccel (AVCodecID id, const std::vector< AVHWDeviceType > &deviceTypes, CodecFinder codecFinder, const std::function< bool(const HWAccel &)> &hwAccelPredicate)
 
static bool isNoConversionFormat (AVPixelFormat f)
 
AVPixelFormat getFormat (AVCodecContext *codecContext, const AVPixelFormat *suggestedFormats)
 
AVFrameUPtr copyFromHwPoolD3D11 (AVFrameUPtr src)
 
static const quint32fourccFromPixelFormat (const QVideoFrameFormat::PixelFormat format)
 
static CVMetalTextureCacheRef & mtc (void *&cache)
 
static MTLPixelFormat rhiTextureFormatToMetalFormat (QRhiTexture::Format f)
 
 Q_STATIC_LOGGING_CATEGORY (qLcPlaybackEngine, "qt.multimedia.ffmpeg.playbackengine")
 
template<typename Array >
Array defaultObjectsArray ()
 
 Q_STATIC_LOGGING_CATEGORY (qLcFFmpegAudioEncoder, "qt.multimedia.ffmpeg.audioencoder")
 
template<typename T >
dequeueIfPossible (std::queue< T > &queue)
 
void setEncoderInterface (QObject *source, QMediaInputEncoderInterface *)
 
void setEncoderUpdateConnection (QObject *source, EncoderThread *encoder)
 
template<typename Encoder , typename Source >
void connectEncoderToSource (Encoder *encoder, Source *source)
 
void disconnectEncoderFromSource (EncoderThread *encoder)
 
void applyVideoEncoderOptions (const QMediaEncoderSettings &settings, const QByteArray &codecName, AVCodecContext *codec, AVDictionary **opts)
 
void applyAudioEncoderOptions (const QMediaEncoderSettings &settings, const QByteArray &codecName, AVCodecContext *codec, AVDictionary **opts)
 
AVSampleFormat adjustSampleFormat (const AVSampleFormat *supportedFormats, AVSampleFormat requested)
 
int adjustSampleRate (const int *supportedRates, int requested)
 
static AVScore calculateScoreByChannelsCount (int supportedChannelsNumber, int requestedChannelsNumber)
 
static AVScore calculateScoreByChannelsMask (int supportedChannelsNumber, uint64_t supportedMask, int requestedChannelsNumber, uint64_t requestedMask)
 
uint64_t adjustChannelLayout (const uint64_t *supportedMasks, uint64_t requested)
 
 Q_STATIC_LOGGING_CATEGORY (qLcFFmpegMuxer, "qt.multimedia.ffmpeg.muxer")
 
template<typename F >
void doWithMediaFrameInput (QObject *source, F &&f)
 
 Q_STATIC_LOGGING_CATEGORY (qLcFFmpegVideoEncoder, "qt.multimedia.ffmpeg.videoencoder")
 
static void freeQVideoFrame (void *opaque, uint8_t *)
 
static AVScore calculateTargetSwFormatScore (const AVPixFmtDescriptor *sourceSwFormatDesc, AVPixelFormat fmt, const AVPixelFormatSet &prohibitedFormats)
 
static auto targetSwFormatScoreCalculator (AVPixelFormat sourceFormat, std::reference_wrapper< const AVPixelFormatSet > prohibitedFormats)
 
static bool isHwFormatAcceptedByCodec (AVPixelFormat pixFormat)
 
AVPixelFormat findTargetSWFormat (AVPixelFormat sourceSWFormat, const AVCodec *codec, const HWAccel &accel, const AVPixelFormatSet &prohibitedFormats)
 
AVPixelFormat findTargetFormat (AVPixelFormat sourceFormat, AVPixelFormat sourceSWFormat, const AVCodec *codec, const HWAccel *accel, const AVPixelFormatSet &prohibitedFormats)
 
std::pair< const AVCodec *, HWAccelUPtrfindHwEncoder (AVCodecID codecID, const QSize &resolution)
 
AVScore findSWFormatScores (const AVCodec *codec, AVPixelFormat sourceSWFormat)
 
const AVCodec * findSwEncoder (AVCodecID codecID, AVPixelFormat sourceSWFormat)
 
AVRational adjustFrameRate (const AVRational *supportedRates, qreal requestedRate)
 adjustFrameRate get a rational frame rate be requested qreal rate. If the codec supports fixed frame rate (non-null supportedRates), the function selects the most suitable one, otherwise just makes AVRational from qreal.
 
AVRational adjustFrameTimeBase (const AVRational *supportedRates, AVRational frameRate)
 adjustFrameTimeBase gets adjusted timebase by a list of supported frame rates and an already adjusted frame rate.
 
QSize adjustVideoResolution (const AVCodec *codec, QSize requestedResolution)
 

Variables

static QAtomicInteger< PlaybackEngineObject::IdPersistentId = 0
 
template<typename T >
constexpr auto InvalidAvValue = T{}
 
template<>
constexpr auto InvalidAvValue< AVSampleFormat > = AV_SAMPLE_FMT_NONE
 
template<>
constexpr auto InvalidAvValue< AVPixelFormat > = AV_PIX_FMT_NONE
 
static const std::initializer_list< AVHWDeviceType > preferredHardwareAccelerators
 
static constexpr bool shouldPauseStreams = false
 
constexpr qint64 VideoFrameTimeBase = 1000000
 
struct { 
 
   const char *   QFFmpeg::name 
 
   ApplyOptions   QFFmpeg::apply 
 
videoCodecOptionTable [] 
 
struct { 
 
   const char *   QFFmpeg::name 
 
   ApplyOptions   QFFmpeg::apply 
 
audioCodecOptionTable [] 
 

Typedef Documentation

◆ ApplyOptions

typedef void(* QFFmpeg::ApplyOptions)(const QMediaEncoderSettings &settings, AVCodecContext *codec, AVDictionary **opts) = void (*)(const QMediaEncoderSettings &settings, AVCodecContext *codec, AVDictionary **opts)

Definition at line 283 of file qffmpegencoderoptions.cpp.

◆ AVBufferUPtr

Initial value:
std::unique_ptr<AVBufferRef, AVDeleter<decltype(&av_buffer_unref), &av_buffer_unref>>

Definition at line 227 of file qffmpeg_p.h.

◆ AVCodecContextUPtr

Initial value:
std::unique_ptr<AVCodecContext,
AVDeleter<decltype(&avcodec_free_context), &avcodec_free_context>>

Definition at line 223 of file qffmpeg_p.h.

◆ AVFormatContextUPtr

using QFFmpeg::AVFormatContextUPtr = std::unique_ptr<AVFormatContext, AVDeleter<decltype(&avformat_close_input), &avformat_close_input>>

Definition at line 37 of file qffmpegmediadataholder_p.h.

◆ AVFrameUPtr

using QFFmpeg::AVFrameUPtr = std::unique_ptr<AVFrame, AVDeleter<decltype(&av_frame_free), &av_frame_free>>

Definition at line 213 of file qffmpeg_p.h.

◆ AVHWFramesConstraintsUPtr

Initial value:
std::unique_ptr<
AVHWFramesConstraints,
AVDeleter<decltype(&av_hwframe_constraints_free), &av_hwframe_constraints_free>>

Definition at line 230 of file qffmpeg_p.h.

◆ AvioWriteBufferType

Initial value:
std::conditional_t<QT_FFMPEG_AVIO_WRITE_CONST, const uint8_t *, uint8_t *>

Definition at line 29 of file qffmpegioutils_p.h.

◆ AVPacketUPtr

Initial value:
std::unique_ptr<AVPacket, AVDeleter<decltype(&av_packet_free), &av_packet_free>>

Definition at line 220 of file qffmpeg_p.h.

◆ ConsumerThreadUPtr

template<typename T >
using QFFmpeg::ConsumerThreadUPtr = std::unique_ptr<T, ConsumerThread::Deleter>

Definition at line 97 of file qffmpegthread_p.h.

◆ HWAccelUPtr

using QFFmpeg::HWAccelUPtr = std::unique_ptr<HWAccel>

Definition at line 86 of file qffmpeghwaccel_p.h.

◆ SharedTextureHandle

◆ StreamIndexes

using QFFmpeg::StreamIndexes = std::array<int, 3>

Definition at line 31 of file qffmpegplaybackenginedefs_p.h.

◆ SwrContextUPtr

using QFFmpeg::SwrContextUPtr = std::unique_ptr<SwrContext, AVDeleter<decltype(&swr_free), &swr_free>>

Definition at line 234 of file qffmpeg_p.h.

◆ SwsContextUPtr

Initial value:
std::unique_ptr<SwsContext, AVDeleter<decltype(&sws_freeContext), &sws_freeContext>>

Definition at line 236 of file qffmpeg_p.h.

◆ VideoFrameEncoderUPtr

Definition at line 30 of file qffmpegvideoframeencoder_p.h.

Function Documentation

◆ addStreamSideData()

AVPacketSideData * QFFmpeg::addStreamSideData ( AVStream * stream,
AVPacketSideData sideData )

Definition at line 95 of file qffmpeg.cpp.

◆ adjustChannelLayout()

uint64_t QFFmpeg::adjustChannelLayout ( const uint64_t * supportedMasks,
uint64_t requested )

Definition at line 100 of file qffmpegaudioencoderutils.cpp.

◆ adjustFrameRate()

AVRational QFFmpeg::adjustFrameRate ( const AVRational * supportedRates,
qreal requestedRate )

adjustFrameRate get a rational frame rate be requested qreal rate. If the codec supports fixed frame rate (non-null supportedRates), the function selects the most suitable one, otherwise just makes AVRational from qreal.

Definition at line 186 of file qffmpegvideoencoderutils.cpp.

◆ adjustFrameTimeBase()

AVRational QFFmpeg::adjustFrameTimeBase ( const AVRational * supportedRates,
AVRational frameRate )

adjustFrameTimeBase gets adjusted timebase by a list of supported frame rates and an already adjusted frame rate.

Timebase is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented. For fixed-fps content (non-null supportedRates), timebase should be 1/framerate.

For more information, see AVStream::time_base and AVCodecContext::time_base.

The adjusted time base is supposed to be set to stream and codec context.

Definition at line 202 of file qffmpegvideoencoderutils.cpp.

◆ adjustSampleFormat()

AVSampleFormat QFFmpeg::adjustSampleFormat ( const AVSampleFormat * supportedFormats,
AVSampleFormat requested )

Definition at line 11 of file qffmpegaudioencoderutils.cpp.

References BestAVScore, and DefaultAVScore.

◆ adjustSampleRate()

int QFFmpeg::adjustSampleRate ( const int * supportedRates,
int requested )

Definition at line 33 of file qffmpegaudioencoderutils.cpp.

References BestAVScore, and DefaultAVScore.

◆ adjustVideoResolution()

QSize QFFmpeg::adjustVideoResolution ( const AVCodec * codec,
QSize requestedResolution )

Definition at line 223 of file qffmpegvideoencoderutils.cpp.

◆ applyAudioEncoderOptions()

void QFFmpeg::applyAudioEncoderOptions ( const QMediaEncoderSettings & settings,
const QByteArray & codecName,
AVCodecContext * codec,
AVDictionary ** opts )

Definition at line 342 of file qffmpegencoderoptions.cpp.

◆ applyExperimentalCodecOptions()

void QFFmpeg::applyExperimentalCodecOptions ( const AVCodec * codec,
AVDictionary ** opts )

Definition at line 50 of file qffmpeg.cpp.

References isAVCodecExperimental().

+ Here is the call graph for this function:

◆ applyVideoEncoderOptions()

void QFFmpeg::applyVideoEncoderOptions ( const QMediaEncoderSettings & settings,
const QByteArray & codecName,
AVCodecContext * codec,
AVDictionary ** opts )

Definition at line 327 of file qffmpegencoderoptions.cpp.

◆ avFrameDeviceContext()

AVHWDeviceContext * QFFmpeg::avFrameDeviceContext ( const AVFrame * frame)

Definition at line 295 of file qffmpeg.cpp.

◆ calculateScoreByChannelsCount()

static AVScore QFFmpeg::calculateScoreByChannelsCount ( int supportedChannelsNumber,
int requestedChannelsNumber )
static

Definition at line 51 of file qffmpegaudioencoderutils.cpp.

Referenced by calculateScoreByChannelsMask().

+ Here is the caller graph for this function:

◆ calculateScoreByChannelsMask()

static AVScore QFFmpeg::calculateScoreByChannelsMask ( int supportedChannelsNumber,
uint64_t supportedMask,
int requestedChannelsNumber,
uint64_t requestedMask )
static

Definition at line 62 of file qffmpegaudioencoderutils.cpp.

References BestAVScore, and calculateScoreByChannelsCount().

+ Here is the call graph for this function:

◆ calculateTargetSwFormatScore()

static AVScore QFFmpeg::calculateTargetSwFormatScore ( const AVPixFmtDescriptor * sourceSwFormatDesc,
AVPixelFormat fmt,
const AVPixelFormatSet & prohibitedFormats )
static

Definition at line 16 of file qffmpegvideoencoderutils.cpp.

References DefaultAVScore, and NotSuitableAVScore.

◆ checkHwType()

static bool QFFmpeg::checkHwType ( AVHWDeviceType type)
static

Definition at line 115 of file qffmpeghwaccel.cpp.

References FFmpegLogsEnabledInThread, and precheckDriver().

Referenced by deviceTypes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ colorTransferSupportsHdr()

static bool QFFmpeg::colorTransferSupportsHdr ( const AVStream * stream)
static

Definition at line 101 of file qffmpegmediadataholder.cpp.

◆ connectEncoderToSource()

template<typename Encoder , typename Source >
void QFFmpeg::connectEncoderToSource ( Encoder * encoder,
Source * source )

Definition at line 48 of file qffmpegrecordingengineutils_p.h.

◆ copyFromHwPool()

AVFrameUPtr QFFmpeg::copyFromHwPool ( AVFrameUPtr frame)

Definition at line 519 of file qffmpeghwaccel.cpp.

◆ copyFromHwPoolD3D11()

AVFrameUPtr QFFmpeg::copyFromHwPoolD3D11 ( AVFrameUPtr src)

Definition at line 349 of file qffmpeghwaccel_d3d11.cpp.

References QT_BEGIN_NAMESPACE::getHwDeviceContext().

+ Here is the call graph for this function:

◆ createResampleContext()

SwrContextUPtr QFFmpeg::createResampleContext ( const AVAudioFormat & inputFormat,
const AVAudioFormat & outputFormat )

◆ createSwsContext()

SwsContextUPtr QFFmpeg::createSwsContext ( const QSize & srcSize,
AVPixelFormat srcPixFmt,
const QSize & dstSize,
AVPixelFormat dstPixFmt,
int conversionType = SWS_BICUBIC )

Definition at line 308 of file qffmpeg.cpp.

◆ defaultObjectsArray()

template<typename Array >
Array QFFmpeg::defaultObjectsArray ( )
inline

Definition at line 28 of file qffmpegplaybackengine.cpp.

◆ dequeueIfPossible()

template<typename T >
T QFFmpeg::dequeueIfPossible ( std::queue< T > & queue)

Definition at line 33 of file qffmpegrecordingengineutils_p.h.

◆ deviceTypes() [1/2]

static const std::vector< AVHWDeviceType > & QFFmpeg::deviceTypes ( )
static

Definition at line 144 of file qffmpeghwaccel.cpp.

References checkHwType(), isHwPixelFormat(), and pixelFormatForHwDevice().

+ Here is the call graph for this function:

◆ deviceTypes() [2/2]

static std::vector< AVHWDeviceType > QFFmpeg::deviceTypes ( const char * envVarName)
static

Definition at line 187 of file qffmpeghwaccel.cpp.

◆ disconnectEncoderFromSource()

void QFFmpeg::disconnectEncoderFromSource ( EncoderThread * encoder)

Definition at line 47 of file qffmpegrecordingengineutils.cpp.

References setEncoderInterface(), and QFFmpeg::EncoderThread::source().

Referenced by QFFmpeg::RecordingEngine::finalize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ displayMatrixToTransform()

static QTransform QFFmpeg::displayMatrixToTransform ( const int32_t * displayMatrix)
static

Definition at line 50 of file qffmpegmediadataholder.cpp.

◆ doWithMediaFrameInput()

template<typename F >
void QFFmpeg::doWithMediaFrameInput ( QObject * source,
F && f )

Definition at line 14 of file qffmpegrecordingengineutils.cpp.

◆ err2str()

QString QFFmpeg::err2str ( int errnum)
inline

Definition at line 64 of file qffmpeg_p.h.

◆ findAndOpenAVDecoder()

bool QFFmpeg::findAndOpenAVDecoder ( AVCodecID codecId,
const std::function< AVScore(const AVCodec *)> & scoresGetter,
const std::function< bool(const AVCodec *)> & codecOpener )

Definition at line 412 of file qffmpegcodecstorage.cpp.

◆ findAndOpenAVEncoder()

bool QFFmpeg::findAndOpenAVEncoder ( AVCodecID codecId,
const std::function< AVScore(const AVCodec *)> & scoresGetter,
const std::function< bool(const AVCodec *)> & codecOpener )

Definition at line 419 of file qffmpegcodecstorage.cpp.

Referenced by QFFmpeg::VideoFrameEncoder::create(), and QFFmpeg::AudioEncoder::init().

+ Here is the caller graph for this function:

◆ findAVDecoder()

const AVCodec * QFFmpeg::findAVDecoder ( AVCodecID codecId,
const std::optional< PixelOrSampleFormat > & format = {} )

Definition at line 396 of file qffmpegcodecstorage.cpp.

◆ findAVEncoder() [1/2]

const AVCodec * QFFmpeg::findAVEncoder ( AVCodecID codecId,
const std::function< AVScore(const AVCodec *)> & scoresGetter )

Definition at line 406 of file qffmpegcodecstorage.cpp.

Referenced by QFFmpeg::AudioEncoder::AudioEncoder(), QFFmpegMediaFormatInfo::QFFmpegMediaFormatInfo(), and QFFmpeg::HWAccel::findEncoderWithHwAccel().

+ Here is the caller graph for this function:

◆ findAVEncoder() [2/2]

const AVCodec * QFFmpeg::findAVEncoder ( AVCodecID codecId,
const std::optional< PixelOrSampleFormat > & format = {} )

Definition at line 401 of file qffmpegcodecstorage.cpp.

◆ findAVPixelFormat()

template<typename Predicate >
AVPixelFormat QFFmpeg::findAVPixelFormat ( const AVCodec * codec,
const Predicate & predicate )

Definition at line 277 of file qffmpeg_p.h.

References getCodecPixelFormats().

+ Here is the call graph for this function:

◆ findAVValue()

template<typename AVValue , typename Predicate >
AVValue QFFmpeg::findAVValue ( const AVValue * fmts,
const Predicate & predicate )

Definition at line 257 of file qffmpeg_p.h.

References BestAVScore, and NotSuitableAVScore.

◆ findBestAVValue()

template<typename Value , typename CalculateScore >
auto QFFmpeg::findBestAVValue ( const Value * values,
const CalculateScore & calculateScore )

Definition at line 295 of file qffmpeg_p.h.

◆ findCodecWithHwAccel()

template<typename CodecFinder >
std::pair< const AVCodec *, HWAccelUPtr > QFFmpeg::findCodecWithHwAccel ( AVCodecID id,
const std::vector< AVHWDeviceType > & deviceTypes,
CodecFinder codecFinder,
const std::function< bool(const HWAccel &)> & hwAccelPredicate )

Definition at line 212 of file qffmpeghwaccel.cpp.

◆ findHwConfig()

template<typename Predicate >
const AVCodecHWConfig * QFFmpeg::findHwConfig ( const AVCodec * codec,
const Predicate & predicate )

Definition at line 266 of file qffmpeg_p.h.

◆ findHwEncoder()

std::pair< const AVCodec *, HWAccelUPtr > QFFmpeg::findHwEncoder ( AVCodecID codecID,
const QSize & resolution )

Definition at line 154 of file qffmpegvideoencoderutils.cpp.

◆ findSwEncoder()

const AVCodec * QFFmpeg::findSwEncoder ( AVCodecID codecID,
AVPixelFormat sourceSWFormat )

Definition at line 179 of file qffmpegvideoencoderutils.cpp.

References findSWFormatScores().

+ Here is the call graph for this function:

◆ findSWFormatScores()

AVScore QFFmpeg::findSWFormatScores ( const AVCodec * codec,
AVPixelFormat sourceSWFormat )

Definition at line 167 of file qffmpegvideoencoderutils.cpp.

References getCodecPixelFormats(), and MinAVScore.

Referenced by QFFmpeg::VideoFrameEncoder::create(), and findSwEncoder().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ findTargetFormat()

AVPixelFormat QFFmpeg::findTargetFormat ( AVPixelFormat sourceFormat,
AVPixelFormat sourceSWFormat,
const AVCodec * codec,
const HWAccel * accel,
const AVPixelFormatSet & prohibitedFormats = {} )

Definition at line 119 of file qffmpegvideoencoderutils.cpp.

References QFFmpeg::HWAccel::constraints(), getCodecPixelFormats(), QFFmpeg::HWAccel::hwFormat(), and isAVFormatSupported().

+ Here is the call graph for this function:

◆ findTargetSWFormat()

AVPixelFormat QFFmpeg::findTargetSWFormat ( AVPixelFormat sourceSWFormat,
const AVCodec * codec,
const HWAccel & accel,
const AVPixelFormatSet & prohibitedFormats = {} )

Definition at line 101 of file qffmpegvideoencoderutils.cpp.

References QFFmpeg::HWAccel::constraints(), and getCodecPixelFormats().

+ Here is the call graph for this function:

◆ fourccFromPixelFormat()

static const quint32 * QFFmpeg::fourccFromPixelFormat ( const QVideoFrameFormat::PixelFormat format)
static

Definition at line 68 of file qffmpeghwaccel_vaapi.cpp.

◆ freeQVideoFrame()

static void QFFmpeg::freeQVideoFrame ( void * opaque,
uint8_t *  )
static

Definition at line 139 of file qffmpegvideoencoder.cpp.

◆ fromAvColorRange()

QVideoFrameFormat::ColorRange QFFmpeg::fromAvColorRange ( AVColorRange colorRange)

Definition at line 271 of file qffmpeg.cpp.

◆ fromAvColorSpace()

QVideoFrameFormat::ColorSpace QFFmpeg::fromAvColorSpace ( AVColorSpace colorSpace)

Definition at line 228 of file qffmpeg.cpp.

◆ fromAvColorTransfer()

QVideoFrameFormat::ColorTransfer QFFmpeg::fromAvColorTransfer ( AVColorTransferCharacteristic colorTrc)

Definition at line 176 of file qffmpeg.cpp.

◆ getAVFrameDuration()

int64_t QFFmpeg::getAVFrameDuration ( const AVFrame & frame)
inline

Definition at line 91 of file qffmpeg_p.h.

◆ getAVFrameTime()

void QFFmpeg::getAVFrameTime ( const AVFrame & frame,
int64_t & pts,
AVRational & timeBase )
inline

Definition at line 81 of file qffmpeg_p.h.

◆ getCodecChannelLayouts()

const AVChannelLayout * QFFmpeg::getCodecChannelLayouts ( const AVCodec * codec)
inline

Definition at line 147 of file qffmpeg_p.h.

Referenced by QFFmpeg::AudioEncoder::init().

+ Here is the caller graph for this function:

◆ getCodecConfig()

template<typename T >
const T * QFFmpeg::getCodecConfig ( const AVCodec * codec,
AVCodecConfig config )
inline

Definition at line 105 of file qffmpeg_p.h.

◆ getCodecFrameRates()

const AVRational * QFFmpeg::getCodecFrameRates ( const AVCodec * codec)
inline

Definition at line 165 of file qffmpeg_p.h.

◆ getCodecPixelFormats()

const AVPixelFormat * QFFmpeg::getCodecPixelFormats ( const AVCodec * codec)
inline

Definition at line 118 of file qffmpeg_p.h.

Referenced by findAVPixelFormat(), findSWFormatScores(), findTargetFormat(), findTargetSWFormat(), and getFormat().

+ Here is the caller graph for this function:

◆ getCodecSampleFormats()

const AVSampleFormat * QFFmpeg::getCodecSampleFormats ( const AVCodec * codec)
inline

Definition at line 127 of file qffmpeg_p.h.

Referenced by QFFmpeg::AudioEncoder::init(), and isAVFormatSupported().

+ Here is the caller graph for this function:

◆ getCodecSampleRates()

const int * QFFmpeg::getCodecSampleRates ( const AVCodec * codec)
inline

Definition at line 136 of file qffmpeg_p.h.

Referenced by QFFmpeg::AudioEncoder::init().

+ Here is the caller graph for this function:

◆ getFormat() [1/2]

AVPixelFormat QFFmpeg::getFormat ( AVCodecContext * codecContext,
const AVPixelFormat * suggestedFormats )

Definition at line 285 of file qffmpeghwaccel.cpp.

References DefaultAVScore, getCodecPixelFormats(), isHwPixelFormat(), isNoConversionFormat(), and NotSuitableAVScore.

+ Here is the call graph for this function:

◆ getFormat() [2/2]

enum AVPixelFormat QFFmpeg::getFormat ( struct AVCodecContext * s,
const enum AVPixelFormat * fmt )

◆ hasAVValue()

template<typename Format >
bool QFFmpeg::hasAVValue ( const Format * fmts,
Format format )

Definition at line 251 of file qffmpeg_p.h.

◆ insertMediaData()

static void QFFmpeg::insertMediaData ( QMediaMetaData & metaData,
QPlatformMediaPlayer::TrackType trackType,
const AVStream * stream )
static

Definition at line 142 of file qffmpegmediadataholder.cpp.

◆ isAVCodecExperimental()

bool QFFmpeg::isAVCodecExperimental ( const AVCodec * codec)

Definition at line 45 of file qffmpeg.cpp.

Referenced by applyExperimentalCodecOptions().

+ Here is the caller graph for this function:

◆ isAVFormatSupported()

bool QFFmpeg::isAVFormatSupported ( const AVCodec * codec,
PixelOrSampleFormat format )

Definition at line 24 of file qffmpeg.cpp.

References getCodecSampleFormats().

Referenced by findTargetFormat().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isHwFormatAcceptedByCodec()

static bool QFFmpeg::isHwFormatAcceptedByCodec ( AVPixelFormat pixFormat)
static

Definition at line 90 of file qffmpegvideoencoderutils.cpp.

◆ isHwPixelFormat()

bool QFFmpeg::isHwPixelFormat ( AVPixelFormat format)

Definition at line 39 of file qffmpeg.cpp.

Referenced by QFFmpeg::VideoFrameEncoder::create(), deviceTypes(), getFormat(), and isSwPixelFormat().

+ Here is the caller graph for this function:

◆ isNoConversionFormat()

static bool QFFmpeg::isNoConversionFormat ( AVPixelFormat f)
static

Definition at line 245 of file qffmpeghwaccel.cpp.

Referenced by getFormat().

+ Here is the caller graph for this function:

◆ isPacketWithinStreamDuration()

static bool QFFmpeg::isPacketWithinStreamDuration ( const AVFormatContext * context,
const Packet & packet )
static

Definition at line 33 of file qffmpegdemuxer.cpp.

References QFFmpeg::Packet::avPacket().

Referenced by QFFmpeg::Demuxer::doNextStep().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isSwPixelFormat()

bool QFFmpeg::isSwPixelFormat ( AVPixelFormat format)
inline

Definition at line 315 of file qffmpeg_p.h.

References isHwPixelFormat().

Referenced by QFFmpeg::VideoFrameEncoder::create().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ loadHWContext()

static AVBufferUPtr QFFmpeg::loadHWContext ( AVHWDeviceType type)
static

Definition at line 61 of file qffmpeghwaccel.cpp.

◆ logGetCodecConfigError()

void QFFmpeg::logGetCodecConfigError ( const AVCodec * codec,
AVCodecConfig config,
int error )

Definition at line 342 of file qffmpeg.cpp.

◆ makeAVFrame()

AVFrameUPtr QFFmpeg::makeAVFrame ( )
inline

Definition at line 215 of file qffmpeg_p.h.

◆ mtc()

static CVMetalTextureCacheRef & QFFmpeg::mtc ( void *& cache)
static

Definition at line 36 of file qffmpeghwaccel_videotoolbox.mm.

◆ mul() [1/2]

std::optional< qint64 > QFFmpeg::mul ( qint64 a,
AVRational b )
inline

Definition at line 39 of file qffmpeg_p.h.

◆ mul() [2/2]

std::optional< qreal > QFFmpeg::mul ( qreal a,
AVRational b )
inline

Definition at line 44 of file qffmpeg_p.h.

◆ operator!=()

bool QFFmpeg::operator!= ( const AVAudioFormat & lhs,
const AVAudioFormat & rhs )
inline

Definition at line 59 of file qffmpegavaudioformat_p.h.

References operator==().

+ Here is the call graph for this function:

◆ operator<<()

◆ operator==()

bool QFFmpeg::operator== ( const AVAudioFormat & lhs,
const AVAudioFormat & rhs )

Definition at line 67 of file qffmpegavaudioformat.cpp.

References QFFmpeg::AVAudioFormat::channelLayout, operator==(), QFFmpeg::AVAudioFormat::sampleFormat, and QFFmpeg::AVAudioFormat::sampleRate.

Referenced by operator!=().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ packetEndPos()

static qint64 QFFmpeg::packetEndPos ( const AVStream * stream,
const Packet & packet )
static

Definition at line 27 of file qffmpegdemuxer.cpp.

References QFFmpeg::Packet::avPacket(), QFFmpeg::Packet::loopOffset(), QFFmpeg::LoopOffset::pos, and streamTimeToUs().

Referenced by QFFmpeg::Demuxer::doNextStep(), and QFFmpeg::Demuxer::onPacketProcessed().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pixelFormatForHwDevice()

AVPixelFormat QFFmpeg::pixelFormatForHwDevice ( AVHWDeviceType deviceType)

Definition at line 59 of file qffmpeg.cpp.

Referenced by deviceTypes(), and QFFmpeg::HWAccel::hwFormat().

+ Here is the caller graph for this function:

◆ precheckDriver()

static bool QFFmpeg::precheckDriver ( AVHWDeviceType type)
static

Definition at line 77 of file qffmpeghwaccel.cpp.

Referenced by checkHwType().

+ Here is the caller graph for this function:

◆ Q_STATIC_LOGGING_CATEGORY() [1/7]

QFFmpeg::Q_STATIC_LOGGING_CATEGORY ( qLcDemuxer ,
"qt.multimedia.ffmpeg.demuxer"  )

◆ Q_STATIC_LOGGING_CATEGORY() [2/7]

QFFmpeg::Q_STATIC_LOGGING_CATEGORY ( qLcEncodingFormatContext ,
"qt.multimedia.ffmpeg.encodingformatcontext"  )

◆ Q_STATIC_LOGGING_CATEGORY() [3/7]

QFFmpeg::Q_STATIC_LOGGING_CATEGORY ( qLcFFmpegAudioEncoder ,
"qt.multimedia.ffmpeg.audioencoder"  )

◆ Q_STATIC_LOGGING_CATEGORY() [4/7]

QFFmpeg::Q_STATIC_LOGGING_CATEGORY ( qLcFFmpegMuxer ,
"qt.multimedia.ffmpeg.muxer"  )

◆ Q_STATIC_LOGGING_CATEGORY() [5/7]

QFFmpeg::Q_STATIC_LOGGING_CATEGORY ( qLcFFmpegVideoEncoder ,
"qt.multimedia.ffmpeg.videoencoder"  )

◆ Q_STATIC_LOGGING_CATEGORY() [6/7]

QFFmpeg::Q_STATIC_LOGGING_CATEGORY ( qLcPlaybackEngine ,
"qt.multimedia.ffmpeg.playbackengine"  )

◆ Q_STATIC_LOGGING_CATEGORY() [7/7]

QFFmpeg::Q_STATIC_LOGGING_CATEGORY ( qLcRenderer ,
"qt.multimedia.ffmpeg.renderer"  )

◆ readQIODevice()

int QFFmpeg::readQIODevice ( void * opaque,
uint8_t * buf,
int buf_size )

Definition at line 12 of file qffmpegioutils.cpp.

◆ rhiTextureFormatToMetalFormat()

static MTLPixelFormat QFFmpeg::rhiTextureFormatToMetalFormat ( QRhiTexture::Format f)
static

Definition at line 135 of file qffmpeghwaccel_videotoolbox.mm.

◆ seekQIODevice()

int64_t QFFmpeg::seekQIODevice ( void * opaque,
int64_t offset,
int whence )

Definition at line 30 of file qffmpegioutils.cpp.

Referenced by QFFmpeg::EncodingFormatContext::openAVIO().

+ Here is the caller graph for this function:

◆ setAVFrameTime()

void QFFmpeg::setAVFrameTime ( AVFrame & frame,
int64_t pts,
const AVRational & timeBase )
inline

Definition at line 71 of file qffmpeg_p.h.

◆ setEncoderInterface()

void QFFmpeg::setEncoderInterface ( QObject * source,
QMediaInputEncoderInterface * encoderInterface )

Definition at line 22 of file qffmpegrecordingengineutils.cpp.

Referenced by disconnectEncoderFromSource().

+ Here is the caller graph for this function:

◆ setEncoderUpdateConnection()

void QFFmpeg::setEncoderUpdateConnection ( QObject * source,
EncoderThread * encoder )

Definition at line 38 of file qffmpegrecordingengineutils.cpp.

◆ streamDuration()

static std::optional< qint64 > QFFmpeg::streamDuration ( const AVStream & stream)
static

Definition at line 26 of file qffmpegmediadataholder.cpp.

◆ streamSideData()

const AVPacketSideData * QFFmpeg::streamSideData ( const AVStream * stream,
AVPacketSideDataType type )

Definition at line 121 of file qffmpeg.cpp.

Referenced by streamTransformation().

+ Here is the caller graph for this function:

◆ streamTimeToUs()

static qint64 QFFmpeg::streamTimeToUs ( const AVStream * stream,
qint64 time )
static

Definition at line 19 of file qffmpegdemuxer.cpp.

Referenced by QFFmpeg::Demuxer::doNextStep(), QFFmpeg::Demuxer::onPacketProcessed(), and packetEndPos().

+ Here is the caller graph for this function:

◆ streamTransformation()

static VideoTransformation QFFmpeg::streamTransformation ( const AVStream * stream)
static

Definition at line 80 of file qffmpegmediadataholder.cpp.

References streamSideData().

+ Here is the call graph for this function:

◆ targetSwFormatScoreCalculator()

static auto QFFmpeg::targetSwFormatScoreCalculator ( AVPixelFormat sourceFormat,
std::reference_wrapper< const AVPixelFormatSet > prohibitedFormats )
static

Definition at line 81 of file qffmpegvideoencoderutils.cpp.

◆ timeStampMs()

std::optional< qint64 > QFFmpeg::timeStampMs ( qint64 ts,
AVRational base )
inline

Definition at line 49 of file qffmpeg_p.h.

◆ timeStampUs()

std::optional< qint64 > QFFmpeg::timeStampUs ( qint64 ts,
AVRational base )
inline

Definition at line 54 of file qffmpeg_p.h.

◆ toAvColorRange()

AVColorRange QFFmpeg::toAvColorRange ( QVideoFrameFormat::ColorRange colorRange)

Definition at line 283 of file qffmpeg.cpp.

◆ toAvColorSpace()

AVColorSpace QFFmpeg::toAvColorSpace ( QVideoFrameFormat::ColorSpace colorSpace)

Definition at line 255 of file qffmpeg.cpp.

◆ toAvColorTransfer()

AVColorTransferCharacteristic QFFmpeg::toAvColorTransfer ( QVideoFrameFormat::ColorTransfer colorTrc)

Definition at line 206 of file qffmpeg.cpp.

◆ toFloat()

std::optional< float > QFFmpeg::toFloat ( AVRational r)
inline

Definition at line 59 of file qffmpeg_p.h.

◆ writeQIODevice()

int QFFmpeg::writeQIODevice ( void * opaque,
AvioWriteBufferType buf,
int buf_size )

Definition at line 22 of file qffmpegioutils.cpp.

Variable Documentation

◆ apply

ApplyOptions QFFmpeg::apply

Definition at line 287 of file qffmpegencoderoptions.cpp.

◆ [struct]

const struct { ... } QFFmpeg::audioCodecOptionTable
Initial value:
= {
{ nullptr, nullptr }
}

◆ InvalidAvValue

template<typename T >
auto QFFmpeg::InvalidAvValue = T{}
inlineconstexpr

Definition at line 240 of file qffmpeg_p.h.

◆ InvalidAvValue< AVPixelFormat >

template<>
auto QFFmpeg::InvalidAvValue< AVPixelFormat > = AV_PIX_FMT_NONE
inlineconstexpr

Definition at line 246 of file qffmpeg_p.h.

◆ InvalidAvValue< AVSampleFormat >

template<>
auto QFFmpeg::InvalidAvValue< AVSampleFormat > = AV_SAMPLE_FMT_NONE
inlineconstexpr

Definition at line 243 of file qffmpeg_p.h.

◆ name

const char* QFFmpeg::name

Definition at line 286 of file qffmpegencoderoptions.cpp.

◆ PersistentId

static QAtomicInteger< PlaybackEngineObject::Id > QFFmpeg::PersistentId = 0
static

Definition at line 13 of file qffmpegplaybackengineobject.cpp.

◆ preferredHardwareAccelerators

static const std::initializer_list< AVHWDeviceType > QFFmpeg::preferredHardwareAccelerators
static
Initial value:
= {
}

Definition at line 43 of file qffmpeghwaccel.cpp.

◆ shouldPauseStreams

static constexpr bool QFFmpeg::shouldPauseStreams = false
staticconstexpr

Definition at line 41 of file qffmpegplaybackengine.cpp.

◆ [struct]

const struct { ... } QFFmpeg::videoCodecOptionTable

◆ VideoFrameTimeBase

qint64 QFFmpeg::VideoFrameTimeBase = 1000000
constexpr

Definition at line 28 of file qffmpegrecordingengineutils_p.h.