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