|
| MpegRecorder (TVRec *rec) |
|
| ~MpegRecorder () |
|
void | TeardownAll (void) |
|
void | SetOption (const QString &opt, int value) override |
| handles the "wait_for_seqstart" option. More...
|
|
void | SetOption (const QString &opt, const QString &value) override |
| Set an specific option. More...
|
|
void | SetVideoFilters (QString &) override |
| Tells recorder which filters to use. More...
|
|
void | SetOptionsFromProfile (RecordingProfile *profile, const QString &videodev, const QString &audiodev, const QString &vbidev) override |
| Sets basic recorder options. More...
|
|
void | Initialize (void) override |
| This is called between SetOptionsFromProfile() and run() to initialize any devices, etc. More...
|
|
void | run (void) override |
| run() starts the recording process, and does not exit until the recording is complete. More...
|
|
void | Reset (void) override |
| Reset the recorder to the startup state. More...
|
|
void | Pause (bool clear=true) override |
| Pause tells recorder to pause, it should not block. More...
|
|
bool | PauseAndWait (int timeout=100) override |
| If m_request_pause is true, sets pause and blocks up to timeout milliseconds or until unpaused, whichever is sooner. More...
|
|
bool | IsRecording (void) override |
| Tells whether the StartRecorder() loop is running. More...
|
|
bool | Open (void) |
|
int | GetVideoFd (void) override |
| Returns file descriptor of recorder device. More...
|
|
bool | ProcessTSPacket (const TSPacket &tspacket) override |
|
void | ReaderPaused (int) override |
|
void | PriorityEvent (int) override |
|
| V4LRecorder (TVRec *rec) |
|
virtual | ~V4LRecorder () |
|
void | StopRecording (void) override |
| StopRecording() signals to the recorder that it should stop recording and exit cleanly. More...
|
|
void | SetOption (const QString &name, const QString &value) override |
| Set an specific option. More...
|
|
void | SetOption (const QString &name, int value) override |
| handles the "wait_for_seqstart" option. More...
|
|
| DTVRecorder (TVRec *rec) |
|
virtual | ~DTVRecorder () |
|
bool | IsErrored (void) override |
| Tells us whether an unrecoverable error has been encountered. More...
|
|
long long | GetFramesWritten (void) override |
| Returns number of frames written to disk. More...
|
|
virtual void | SetStreamData (MPEGStreamData *data) |
|
MPEGStreamData * | GetStreamData (void) const |
|
void | ClearStatistics (void) override |
|
RecordingQuality * | GetRecordingQuality (const RecordingInfo *) const override |
| Returns a report about the current recordings quality. More...
|
|
void | HandlePAT (const ProgramAssociationTable *) override |
|
void | HandleCAT (const ConditionalAccessTable *) override |
|
void | HandlePMT (uint progNum, const ProgramMapTable *) override |
|
void | HandleEncryptionStatus (uint, bool) override |
|
void | HandleSingleProgramPAT (ProgramAssociationTable *pat, bool insert) override |
|
void | HandleSingleProgramPMT (ProgramMapTable *pmt, bool insert) override |
|
void | HandleSTT (const SystemTimeTable *) override |
|
void | HandleVCT (uint, const VirtualChannelTable *) override |
|
void | HandleMGT (const MasterGuideTable *) override |
|
void | HandleTDT (const TimeDateTable *) override |
|
void | HandleNIT (const NetworkInformationTable *) override |
|
void | HandleSDT (uint, const ServiceDescriptionTable *) override |
|
bool | ProcessVideoTSPacket (const TSPacket &tspacket) override |
|
bool | ProcessAudioTSPacket (const TSPacket &tspacket) override |
|
bool | ProcessAVTSPacket (const TSPacket &tspacket) |
| Common code for processing either audio or video packets. More...
|
|
| RecorderBase (TVRec *rec) |
|
virtual | ~RecorderBase () |
|
void | SetFrameRate (double rate) |
| Sets the video frame rate. More...
|
|
void | SetRecording (const RecordingInfo *pginfo) |
| Changes the Recording from the one set initially with SetOptionsFromProfile(). More...
|
|
void | SetRingBuffer (RingBuffer *rbuf) |
| Tells recorder to use an externally created ringbuffer. More...
|
|
void | SetBoolOption (const QString &name, bool value) |
| Set an specific boolean option. More...
|
|
void | SetNextRecording (const RecordingInfo *, RingBuffer *) |
| Sets next recording info, to be applied as soon as practical. More...
|
|
long long | GetKeyframePosition (long long desired) const |
| Returns closest keyframe position before the desired frame. More...
|
|
bool | GetKeyframePositions (long long start, long long end, frm_pos_map_t &) const |
|
bool | GetKeyframeDurations (long long start, long long end, frm_pos_map_t &) const |
|
virtual bool | IsRecordingRequested (void) |
| Tells us if StopRecording() has been called. More...
|
|
virtual void | Unpause (void) |
| Unpause tells recorder to unpause. More...
|
|
virtual bool | IsPaused (bool holding_lock=false) const |
| Returns true iff recorder is paused. More...
|
|
virtual bool | WaitForPause (int timeout=1000) |
| WaitForPause blocks until recorder is actually paused, or timeout milliseconds elapse. More...
|
|
double | GetFrameRate (void) const |
| Returns the latest frame rate. More...
|
|
virtual bool | CheckForRingBufferSwitch (void) |
| If requested, switch to new RingBuffer/ProgramInfo objects. More...
|
|
void | SavePositionMap (bool force=false, bool finished=false) |
| Save the seektable to the DB. More...
|
|
virtual void | HandleSplice (const SpliceInformationTable *) |
|
|
enum | AspectRatio {
ASPECT_UNKNOWN = 0x00,
ASPECT_1_1 = 0x01,
ASPECT_4_3 = 0x02,
ASPECT_16_9 = 0x03,
ASPECT_2_21_1 = 0x04,
ASPECT_CUSTOM = 0x05
} |
|
static RecorderBase * | CreateRecorder (TVRec *tvrec, ChannelBase *channel, RecordingProfile &profile, const GeneralDBOptions &genOpt) |
|
int | OpenVBIDevice (void) |
|
void | CloseVBIDevice (void) |
|
void | RunVBIDevice (void) |
|
virtual bool | IsHelperRequested (void) const |
|
virtual void | FormatTT (struct VBIData *) |
|
void | FinishRecording (void) override |
| Flushes the ringbuffer, and if this is not a live LiveTV recording saves the position map and filesize. More...
|
|
void | ResetForNewFile (void) override |
|
void | HandleKeyframe (int64_t extra) |
| This save the current frame to the position maps and handles ringbuffer switching. More...
|
|
void | HandleTimestamps (int stream_id, int64_t pts, int64_t dts) |
|
void | UpdateFramesWritten (void) |
|
void | BufferedWrite (const TSPacket &tspacket, bool insert=false) |
|
bool | FindAudioKeyframes (const TSPacket *tspacket) |
|
bool | FindMPEG2Keyframes (const TSPacket *tspacket) |
| Locates the keyframes and saves them to the position map. More...
|
|
bool | FindH264Keyframes (const TSPacket *tspacket) |
| This searches the TS packet to identify keyframes. More...
|
|
void | HandleH264Keyframe (void) |
| This save the current frame to the position maps and handles ringbuffer switching. More...
|
|
void | FindPSKeyFrames (const uint8_t *buffer, uint len) override |
|
bool | FindOtherKeyframes (const TSPacket *tspacket) |
| Non-Audio/Video data. More...
|
|
bool | CheckCC (uint pid, uint cc) |
|
virtual QString | GetSIStandard (void) const |
|
virtual void | SetCAMPMT (const ProgramMapTable *) |
|
virtual void | UpdateCAMTimeOffset (void) |
|
void | SetIntOption (RecordingProfile *profile, const QString &name) |
| Convenience function used to set integer options from a profile. More...
|
|
void | SetStrOption (RecordingProfile *profile, const QString &name) |
| Convenience function used to set QString options from a profile. More...
|
|
virtual void | SetRecordingStatus (RecStatus::Type status, const QString &file, int line) |
|
virtual void | StartNewFile (void) |
|
void | SetPositionMapType (MarkTypes type) |
| Set seektable type. More...
|
|
void | AspectChange (uint aspect, long long frame) |
| Note a change in aspect ratio in the recordedmark table. More...
|
|
void | ResolutionChange (uint width, uint height, long long frame) |
| Note a change in video size in the recordedmark table. More...
|
|
void | FrameRateChange (uint framerate, long long frame) |
| Note a change in video frame rate in the recordedmark table. More...
|
|
void | VideoCodecChange (AVCodecID vCodec) |
| Note a change in video codec. More...
|
|
void | AudioCodecChange (AVCodecID aCodec) |
| Note a change in audio codec. More...
|
|
void | SetDuration (uint64_t duration) |
| Note the total duration in the recordedmark table. More...
|
|
void | SetTotalFrames (uint64_t total_frames) |
| Note the total frames in the recordedmark table. More...
|
|
void | TryWriteProgStartMark (const frm_pos_map_t &durationDeltaCopy) |
|
virtual | ~MPEGStreamListener ()=default |
|
virtual | ~MPEGSingleProgramStreamListener ()=default |
|
Protected Member Functions inherited from DVBMainStreamListener |
virtual | ~DVBMainStreamListener ()=default |
|
Protected Member Functions inherited from ATSCMainStreamListener |
virtual | ~ATSCMainStreamListener ()=default |
|
virtual | ~TSPacketListener ()=default |
|
virtual | ~TSPacketListenerAV ()=default |
|
virtual | ~PSStreamListener ()=default |
|
virtual | ~DeviceReaderCB ()=default |
|
QString | m_audiodevice |
|
QString | m_vbidevice |
|
int | m_vbimode {VBIMode::None} |
|
struct VBIData * | m_pal_vbi_cb {nullptr} |
|
struct vbi * | m_pal_vbi_tt {nullptr} |
|
uint | m_ntsc_vbi_width {0} |
|
uint | m_ntsc_vbi_start_line {0} |
|
uint | m_ntsc_vbi_line_count {0} |
|
VBI608Extractor * | m_vbi608 {nullptr} |
|
VBIThread * | m_vbi_thread {nullptr} |
|
QList< struct txtbuffertype * > | m_textbuffer |
|
int | m_vbi_fd {-1} |
|
volatile bool | m_request_helper {false} |
|
int | m_stream_fd {-1} |
|
QString | m_recording_type {"all"} |
|
QTime | m_audio_timer |
|
uint32_t | m_start_code {0xffffffff} |
|
int | m_first_keyframe {-1} |
|
unsigned long long | m_last_gop_seen {0} |
|
unsigned long long | m_last_seq_seen {0} |
|
unsigned long long | m_last_keyframe_seen {0} |
|
unsigned int | m_audio_bytes_remaining {0} |
|
unsigned int | m_video_bytes_remaining {0} |
|
unsigned int | m_other_bytes_remaining {0} |
|
int | m_progressive_sequence {0} |
|
int | m_repeat_pict {0} |
|
bool | m_pes_synced {false} |
|
bool | m_seen_sps {false} |
|
H264Parser | m_h264_parser |
|
bool | m_wait_for_keyframe_option {true} |
| Wait for the a GOP/SEQ-start before sending data. More...
|
|
bool | m_has_written_other_keyframe {false} |
|
QString | m_error |
| non-empty iff irrecoverable recording error detected More...
|
|
MPEGStreamData * | m_stream_data {nullptr} |
|
bool | m_buffer_packets {false} |
|
vector< unsigned char > | m_payload_buffer |
|
QMutex | m_pid_lock {QMutex::Recursive} |
|
ProgramAssociationTable * | m_input_pat {nullptr} |
| PAT on input side. More...
|
|
ProgramMapTable * | m_input_pmt {nullptr} |
| PMT on input side. More...
|
|
bool | m_has_no_av {false} |
|
bool | m_record_mpts {false} |
|
bool | m_record_mpts_only {false} |
|
unsigned char | m_stream_id [0x1fff+1] {0} |
|
unsigned char | m_pid_status [0x1fff+1] {0} |
|
unsigned char | m_continuity_counter [0x1fff+1] {0} |
|
vector< TSPacket > | m_scratch |
|
int | m_minimum_recording_quality {95} |
|
bool | m_use_pts {false} |
|
uint64_t | m_ts_count [256] {0} |
|
int64_t | m_ts_last [256] |
|
int64_t | m_ts_first [256] |
|
QDateTime | m_ts_first_dt [256] |
|
QAtomicInt | m_packet_count {0} |
|
QAtomicInt | m_continuity_error_count {0} |
|
unsigned long long | m_frames_seen_count {0} |
|
unsigned long long | m_frames_written_count {0} |
|
double | m_total_duration {0.0} |
|
double | m_td_base {0.0} |
|
uint64_t | m_td_tick_count {0} |
|
FrameRate | m_td_tick_framerate {0} |
|
bool | m_music_choice {false} |
|
TVRec * | m_tvrec {nullptr} |
|
RingBuffer * | m_ringBuffer {nullptr} |
|
bool | m_weMadeBuffer {true} |
|
AVContainer | m_containerFormat {formatUnknown} |
|
AVCodecID | m_primaryVideoCodec {AV_CODEC_ID_NONE} |
|
AVCodecID | m_primaryAudioCodec {AV_CODEC_ID_NONE} |
|
QString | m_videocodec {"rtjpeg"} |
|
QString | m_videodevice |
|
bool | m_ntsc {true} |
|
bool | m_ntsc_framerate {true} |
|
double | m_video_frame_rate {29.97} |
|
uint | m_videoAspect {0} |
|
uint | m_videoHeight {0} |
|
uint | m_videoWidth {0} |
|
FrameRate | m_frameRate {0} |
|
RecordingInfo * | m_curRecording {nullptr} |
|
QMutex | m_pauseLock |
|
bool | m_request_pause {false} |
|
bool | m_paused {false} |
|
QWaitCondition | m_pauseWait |
|
QWaitCondition | m_unpauseWait |
|
bool | m_request_recording {false} |
| True if API call has requested a recording be [re]started. More...
|
|
bool | m_recording {false} |
| True while recording is actually being performed. More...
|
|
QWaitCondition | m_recordingWait |
|
QMutex | m_nextRingBufferLock |
|
RingBuffer * | m_nextRingBuffer {nullptr} |
|
RecordingInfo * | m_nextRecording {nullptr} |
|
MythTimer | m_ringBufferCheckTimer |
|
MarkTypes | m_positionMapType {MARK_GOP_BYFRAME} |
|
QMutex | m_positionMapLock |
|
frm_pos_map_t | m_positionMap |
|
frm_pos_map_t | m_positionMapDelta |
|
frm_pos_map_t | m_durationMap |
|
frm_pos_map_t | m_durationMapDelta |
|
MythTimer | m_positionMapTimer |
|
qint64 | m_estimatedProgStartMS {0} |
|
long long | m_lastSavedKeyframe {0} |
|
long long | m_lastSavedDuration {0} |
|
QMutex | m_statisticsLock |
|
QAtomicInt | m_timeOfFirstDataIsSet |
|
QDateTime | m_timeOfFirstData |
|
QAtomicInt | m_timeOfLatestDataCount |
|
QAtomicInt | m_timeOfLatestDataPacketInterval |
|
QDateTime | m_timeOfLatestData |
|
MythTimer | m_timeOfLatestDataTimer |
|
RecordingGaps | m_recordingGaps |
|
static const uint | kMaxKeyFrameDistance = 80 |
| If the number of regular frames detected since the last detected keyframe exceeds this value, then we begin marking random regular frames as keyframes. More...
|
|
static const unsigned char | kPayloadStartSeen = 0x2 |
|
static const uint | kTimeOfLatestDataIntervalTarget = 5000 |
| timeOfLatest update interval target in milliseconds. More...
|
|
Definition at line 14 of file mpegrecorder.h.