3#ifndef QFFMPEGDEMUXER_P_H
4#define QFFMPEGDEMUXER_P_H
17#include <QtFFmpegMediaPluginImpl/private/qffmpegplaybackengineobject_p.h>
18#include <QtFFmpegMediaPluginImpl/private/qffmpegpacket_p.h>
19#include <QtFFmpegMediaPluginImpl/private/qffmpegplaybackutils_p.h>
20#include <QtFFmpegMediaPluginImpl/private/qffmpegtime_p.h>
21#include <QtMultimedia/private/qplatformmediaplayer_p.h>
23#include <unordered_map>
64 QPlatformMediaPlayer::TrackType trackType = QPlatformMediaPlayer::TrackType::NTrackTypes;
65 TrackDuration bufferedDuration = TrackDuration(0);
66 qint64 bufferedSize = 0;
68 TrackPosition maxSentPacketsPos = TrackPosition(0);
69 TrackPosition maxProcessedPacketPos = TrackPosition(0);
71 bool isDataLimitReached =
false;
74 void updateStreamDataLimitFlag(StreamData &streamData);
77 AVFormatContext *m_context =
nullptr;
78 bool m_seeked =
false;
79 bool m_firstPacketFound =
false;
80 std::unordered_map<
int, StreamData> m_streams;
82 LoopOffset m_loopOffset;
85 bool m_buffered =
false;
86 qsizetype m_demuxerRetryCount = 0;
87 static constexpr qsizetype s_maxDemuxerRetries = 10;
void firstPacketFound(Id id, TrackPosition absSeekPos)
std::chrono::milliseconds timerInterval() const override
void setLoops(int loopsCount)
void doNextStep() override
void requestProcessVideoPacket(Packet)
void(Demuxer::*)(Packet) RequestingSignal
void requestProcessSubtitlePacket(Packet)
static RequestingSignal signalByTrackType(QPlatformMediaPlayer::TrackType trackType)
bool canDoNextStep() const override
static constexpr TrackDuration MaxBufferedDurationUs
static constexpr qint64 MaxBufferedSize
std::conditional_t< QT_FFMPEG_AVIO_WRITE_CONST, const uint8_t *, uint8_t * > AvioWriteBufferType
static TrackPosition packetEndPos(const Packet &packet, const AVStream *stream, const AVFormatContext *context)
static bool isPacketWithinStreamDuration(const AVFormatContext *context, const Packet &packet)
#define qCWarning(category,...)
#define qCDebug(category,...)
#define Q_STATIC_LOGGING_CATEGORY(name,...)