3#ifndef QFFMPEGSTREAMDECODER_P_H
4#define QFFMPEGSTREAMDECODER_P_H
16#include <QtFFmpegMediaPluginImpl/private/qffmpeg_p.h>
17#include <QtFFmpegMediaPluginImpl/private/qffmpegplaybackengineobject_p.h>
18#include <QtFFmpegMediaPluginImpl/private/qffmpegframe_p.h>
19#include <QtFFmpegMediaPluginImpl/private/qffmpegpacket_p.h>
20#include <QtFFmpegMediaPluginImpl/private/qffmpegplaybackutils_p.h>
21#include <QtMultimedia/private/qplatformmediaplayer_p.h>
23#include <QtCore/qqueue.h>
35 StreamDecoder(
const PlaybackEngineObjectID &id,
const CodecContext &codecContext,
36 TrackPosition absSeekPos);
40 void seek(quint64 sessionID, TrackPosition pos,
const LoopOffset &offset);
66 void decodeMedia(
const Packet &packet);
68 void decodeSubtitle(
const Packet &packet);
70 void onFrameFound(
const Frame &frame);
72 int sendAVPacket(
const Packet &packet);
74 void receiveAVFrames(
bool flushPacket =
false);
77 CodecContext m_codecContext;
79 const TrackType m_trackType;
83 TrackPosition absSeekPos = TrackPosition(0);
84 qint32 pendingFramesCount = 0;
85 LoopOffset offset = {};
86 QQueue<Packet> packets = {};
89 SessionContext m_sessionCtx;
bool canDoNextStep() const override
~StreamDecoder() override
StreamDecoder(const PlaybackEngineObjectID &id, const CodecContext &codecContext, TrackPosition absSeekPos)
void doNextStep() override
void onFrameProcessed(const Frame &frame)
void onFinalPacketReceived(PlaybackEngineObjectID sourceID)
void packetProcessed(Packet)
static qint32 maxQueueSize(TrackType type)
TrackType trackType() const
void seek(quint64 sessionID, TrackPosition pos, const LoopOffset &offset)
QString subtitleTextFromAVSubtitle(const AVSubtitle &subtitle)
static QString extractSubtitleText(const AVSubtitleRect &r)
Combined button and popup list for selecting options.