40 void SetOption(
const QString &name,
const QString &value)
override;
41 void SetOption(
const QString &name,
int value)
override;
44 const QString &audiodev,
const QString &vbidev)
override;
60 void Reset(
void)
override;
The CAT is used to transmit additional ConditionalAccessDescriptor instances, in addition to the ones...
This is a specialization of RecorderBase used to handle MPEG-2, MPEG-4, MPEG-4 AVC,...
QString m_error
non-empty iff irrecoverable recording error detected
void HandleNIT(const NetworkInformationTable *) override
void FinishRecording(void) override
Flushes the ringbuffer, and if this is not a live LiveTV recording saves the position map and filesiz...
bool m_hasWrittenOtherKeyframe
std::array< QDateTime, 256 > m_tsFirstDt
bool FindH2645Keyframes(const TSPacket *tspacket)
std::array< uint8_t, 0x1fff+1 > m_continuityCounter
unsigned int m_audioBytesRemaining
int m_minimumRecordingQuality
virtual void UpdateCAMTimeOffset(void)
bool ProcessAudioTSPacket(const TSPacket &tspacket) override
std::vector< unsigned char > m_payloadBuffer
std::array< int64_t, 256 > m_tsLast
ProgramMapTable * m_inputPmt
PMT on input side.
bool IsErrored(void) override
Tells us whether an unrecoverable error has been encountered.
double m_tdBase
Milliseconds from the start to m_tdTickCount = 0.
std::vector< TSPacket > m_scratch
uint64_t m_tdTickCount
Count of the number of equivalent interlaced fields that have passed since m_tdBase.
std::array< int64_t, 256 > m_tsFirst
void SetVideoFilters(QString &) override
Tells recorder which filters to use.
void HandleMGT(const MasterGuideTable *) override
RecordingQuality * GetRecordingQuality(const RecordingInfo *r) const override
Returns a report about the current recordings quality.
unsigned long long m_lastGopSeen
void HandleEncryptionStatus(uint, bool) override
unsigned long long m_lastKeyframeSeen
int GetVideoFd(void) override
Returns file descriptor of recorder device.
void ResetForNewFile(void) override
QElapsedTimer m_audioTimer
void BufferedWrite(const TSPacket &tspacket, bool insert=false)
int m_progressiveSequence
bool ProcessVideoTSPacket(const TSPacket &tspacket) override
bool ProcessTSPacket(const TSPacket &tspacket) override
bool FindOtherKeyframes(const TSPacket *tspacket)
Non-Audio/Video data.
virtual void SetCAMPMT(const ProgramMapTable *)
unsigned int m_otherBytesRemaining
void HandleH2645Keyframe(void)
This save the current frame to the position maps and handles ringbuffer switching.
MPEGStreamData * GetStreamData(void) const
unsigned long long m_framesSeenCount
static const unsigned char kPayloadStartSeen
void HandleCAT(const ConditionalAccessTable *) override
std::array< uint8_t, 0x1fff+1 > m_streamId
std::array< uint8_t, 0x1fff+1 > m_pidStatus
virtual QString GetSIStandard(void) const
static const uint kMaxKeyFrameDistance
If the number of regular frames detected since the last detected keyframe exceeds this value,...
std::array< uint64_t, 256 > m_tsCount
void HandleSTT(const SystemTimeTable *) override
void HandleTDT(const TimeDateTable *) override
ProgramAssociationTable * m_inputPat
PAT on input side.
void HandleKeyframe(int64_t extra)
This save the current frame to the position maps and handles ringbuffer switching.
H2645Parser * m_h2645Parser
void HandleSingleProgramPAT(ProgramAssociationTable *pat, bool insert) override
void HandleVCT(uint, const VirtualChannelTable *) override
void HandlePAT(const ProgramAssociationTable *_pat) override
void Reset(void) override
Reset the recorder to the startup state.
void Initialize(void) override
This is called between SetOptionsFromProfile() and run() to initialize any devices,...
MythAVRational m_tdTickFramerate
void HandleTimestamps(int stream_id, int64_t pts, int64_t dts)
void SetOptionsFromProfile(RecordingProfile *profile, const QString &videodev, const QString &audiodev, const QString &vbidev) override
Sets basic recorder options.
long long GetFramesWritten(void) override
Returns number of frames written to disk.
bool ProcessAVTSPacket(const TSPacket &tspacket)
Common code for processing either audio or video packets.
void HandlePMT(uint progNum, const ProgramMapTable *_pmt) override
bool m_waitForKeyframeOption
Wait for the a GOP/SEQ-start before sending data.
MPEGStreamData * m_streamData
void SetOption(const QString &name, const QString &value) override
Set an specific option.
double m_totalDuration
Total milliseconds that have passed since the start of the recording.
void FindPSKeyFrames(const uint8_t *buffer, uint len) override
QAtomicInt m_continuityErrorCount
QRecursiveMutex m_pidLock
unsigned int m_videoBytesRemaining
bool CheckCC(uint pid, uint new_cnt)
unsigned long long m_lastSeqSeen
void HandleSDT(uint, const ServiceDescriptionTable *) override
bool FindAudioKeyframes(const TSPacket *tspacket)
virtual void SetStreamData(MPEGStreamData *data)
unsigned long long m_framesWrittenCount
virtual void InitStreamData(void)
MythTimer m_recordMptsTimer
void HandleSingleProgramPMT(ProgramMapTable *pmt, bool insert) override
bool FindMPEG2Keyframes(const TSPacket *tspacket)
Locates the keyframes and saves them to the position map.
void UpdateFramesWritten(void)
void ClearStatistics(void) override
Encapsulates data about MPEG stream and emits events for each table.
This table tells the decoder on which PIDs to find other tables, and their sizes and each table's cur...
C++ wrapper for FFmpeg libavutil AVRational.
A QElapsedTimer based timer to replace use of QTime as a timer.
The Program Association Table lists all the programs in a stream, and is always found on PID 0.
A PMT table maps a program described in the ProgramAssociationTable to various PID's which describe t...
This is the abstract base class for supporting recorder hardware.
Holds information on a TV Program one might wish to record.
This table tells the decoder on which PIDs to find A/V data.
Contains listing of PMT Stream ID's for various A/V Stream types.
Used to access the data of a Transport Stream packet.
This is the coordinating class of the Recorder Subsystem.
This table gives the current DVB stream time.
This table contains information about the channels transmitted on this multiplex.
std::chrono::duration< CHRONO_TYPE, std::ratio< 1, 90000 > > pts