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>
65 QPlatformMediaPlayer::TrackType trackType = QPlatformMediaPlayer::TrackType::NTrackTypes;
66 TrackDuration bufferedDuration = TrackDuration(0);
67 qint64 bufferedSize = 0;
69 TrackPosition maxSentPacketsPos = TrackPosition(0);
70 TrackPosition maxProcessedPacketPos = TrackPosition(0);
72 bool isDataLimitReached =
false;
75 void updateStreamDataLimitFlag(StreamData &streamData);
78 AVFormatContext *m_context =
nullptr;
79 bool m_seeked =
false;
80 bool m_firstPacketFound =
false;
81 std::unordered_map<
int, StreamData> m_streams;
83 LoopOffset m_loopOffset;
86 bool m_buffered =
false;
87 qsizetype m_demuxerRetryCount = 0;
88 std::optional<TimePoint> m_failTimePoint;
89 static constexpr qsizetype s_maxDemuxerRetries = 10;
void setLoops(int loopsCount)
void doNextStep() override
void firstPacketFound(PlaybackEngineObjectID id, TrackPosition absSeekPos)
void requestProcessVideoPacket(Packet)
void(Demuxer::*)(Packet) RequestingSignal
void requestProcessSubtitlePacket(Packet)
static RequestingSignal signalByTrackType(QPlatformMediaPlayer::TrackType trackType)
bool canDoNextStep() const override
TimePoint nextTimePoint() 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,...)