MythTV  master
Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
NuppelVideoRecorder Class Reference

#include <NuppelVideoRecorder.h>

Inheritance diagram for NuppelVideoRecorder:
Inheritance graph
[legend]
Collaboration diagram for NuppelVideoRecorder:
Collaboration graph
[legend]

Classes

struct  m_stm
 

Public Member Functions

 NuppelVideoRecorder (TVRec *rec, ChannelBase *channel)
 
 ~NuppelVideoRecorder () override
 
void SetOption (const QString &opt, int value) override
 handles the "wait_for_seqstart" option. More...
 
void SetOption (const QString &name, const QString &value) override
 Set an specific option. 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 Pause (bool clear=true) override
 Pause tells recorder to pause, it should not block. More...
 
bool IsPaused (bool holding_lock=false) const override
 Returns true iff recorder is paused. More...
 
bool IsRecording (void) override
 Tells whether the StartRecorder() loop is running. More...
 
long long GetFramesWritten (void) override
 Returns number of frames written to disk. More...
 
bool Open (void)
 
int GetVideoFd (void) override
 Returns file descriptor of recorder device. More...
 
void Reset (void) override
 Reset the recorder to the startup state. More...
 
void SetVideoFilters (QString &filters) override
 Tells recorder which filters to use. More...
 
void SetTranscoding (bool value)
 
void ResetForNewFile (void) override
 
void FinishRecording (void) override
 Flushes the ringbuffer, and if this is not a live LiveTV recording saves the position map and filesize. More...
 
void StartNewFile (void) override
 
void StreamAllocate (void)
 
void WriteHeader (void)
 
void WriteSeekTable (void)
 
void WriteKeyFrameAdjustTable (const std::vector< struct kfatable_entry > &kfa_table)
 
void UpdateSeekTable (int frame_num, long offset=0)
 
bool SetupAVCodecVideo (void)
 
void SetupRTjpeg (void)
 
int AudioInit (bool skipdevice=false)
 
void SetVideoAspect (float newAspect)
 
void WriteVideo (MythVideoFrame *frame, bool skipsync=false, bool forcekey=false)
 
void WriteAudio (unsigned char *buf, int fnum, std::chrono::milliseconds timecode)
 
void WriteText (unsigned char *buf, int len, std::chrono::milliseconds timecode, int pagenr)
 
void SetNewVideoParams (double newaspect)
 
- Public Member Functions inherited from V4LRecorder
 V4LRecorder (TVRec *rec)
 
 ~V4LRecorder () override
 
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...
 
- Public Member Functions inherited from DTVRecorder
 DTVRecorder (TVRec *rec)
 
 ~DTVRecorder () override
 
bool IsErrored (void) override
 Tells us whether an unrecoverable error has been encountered. More...
 
virtual void SetStreamData (MPEGStreamData *data)
 
MPEGStreamDataGetStreamData (void) const
 
void ClearStatistics (void) override
 
RecordingQualityGetRecordingQuality (const RecordingInfo *r) const override
 Returns a report about the current recordings quality. More...
 
void HandlePAT (const ProgramAssociationTable *_pat) override
 
void HandleCAT (const ConditionalAccessTable *) override
 
void HandlePMT (uint progNum, const ProgramMapTable *_pmt) 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 ProcessTSPacket (const TSPacket &tspacket) 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...
 
- Public Member Functions inherited from RecorderBase
 RecorderBase (TVRec *rec)
 
 ~RecorderBase () override
 
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 (MythMediaBuffer *Buffer)
 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 *ri, MythMediaBuffer *Buffer)
 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 &map) const
 
bool GetKeyframeDurations (long long start, long long end, frm_pos_map_t &map) 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 WaitForPause (std::chrono::milliseconds timeout=1s)
 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...
 
- Public Member Functions inherited from MPEGStreamListener
virtual void HandleSplice (const SpliceInformationTable *)
 
- Public Member Functions inherited from CC608Input
virtual ~CC608Input ()=default
 

Protected Member Functions

void doWriteThread (void)
 
void doAudioThread (void)
 
- Protected Member Functions inherited from V4LRecorder
int OpenVBIDevice (void)
 
void CloseVBIDevice (void)
 
void RunVBIDevice (void)
 
virtual bool IsHelperRequested (void) const
 
- Protected Member Functions inherited from DTVRecorder
virtual void InitStreamData (void)
 
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 FindH2645Keyframes (const TSPacket *tspacket)
 
void HandleH2645Keyframe (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 new_cnt)
 
virtual QString GetSIStandard (void) const
 
virtual void SetCAMPMT (const ProgramMapTable *)
 
virtual void UpdateCAMTimeOffset (void)
 
- Protected Member Functions inherited from RecorderBase
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 bool PauseAndWait (std::chrono::milliseconds timeout=100ms)
 If m_requestPause is true, sets pause and blocks up to timeout milliseconds or until unpaused, whichever is sooner. More...
 
virtual void SetRecordingStatus (RecStatus::Type status, const QString &file, int line)
 
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, uint64_t frame)
 Note a change in video frame rate in the recordedmark table. More...
 
void VideoScanChange (SCAN_t scan, uint64_t frame)
 Note a change in video scan type 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 (std::chrono::milliseconds 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)
 
- Protected Member Functions inherited from MPEGStreamListener
virtual ~MPEGStreamListener ()=default
 
- Protected Member Functions inherited from MPEGSingleProgramStreamListener
virtual ~MPEGSingleProgramStreamListener ()=default
 
- Protected Member Functions inherited from DVBMainStreamListener
virtual ~DVBMainStreamListener ()=default
 
- Protected Member Functions inherited from ATSCMainStreamListener
virtual ~ATSCMainStreamListener ()=default
 
- Protected Member Functions inherited from TSPacketListener
virtual ~TSPacketListener ()=default
 
- Protected Member Functions inherited from TSPacketListenerAV
virtual ~TSPacketListenerAV ()=default
 
- Protected Member Functions inherited from PSStreamListener
virtual ~PSStreamListener ()=default
 

Private Member Functions

void WriteFrameheader (rtframeheader *fh)
 
void WriteFileHeader (void)
 
void InitBuffers (void)
 
void ResizeVideoBuffers (void)
 
bool MJPEGInit (void)
 Determines MJPEG capture resolution. More...
 
void KillChildren (void)
 
void BufferIt (unsigned char *buf, int len=-1, bool forcekey=false)
 
int CreateNuppelFile (void)
 
void ProbeV4L2 (void)
 
bool SetFormatV4L2 (void)
 
void DoV4L2 (void)
 
void FormatTT (struct VBIData *vbidata) override
 
void FormatCC (uint code1, uint code2) override
 
void AddTextData (unsigned char *buf, int len, std::chrono::milliseconds timecode, char type) override
 
void UpdateResolutions (void)
 

Private Attributes

int m_fd {-1}
 
signed char * m_strm {nullptr}
 
unsigned int m_lf {0}
 
int m_tf {0}
 
int m_m1 {0}
 
int m_m2 {0}
 
int m_q {255}
 
int m_width {352}
 
int m_height {240}
 
int m_pipMode {0}
 
int m_compression {1}
 
bool m_compressAudio {true}
 
AudioInputm_audioDevice {nullptr}
 
unsigned long long m_audioBytes {0}
 
int m_audioChannels {2}
 
int m_audioBits {16}
 
int m_audioBytesPerSample {m_audioChannels * m_audioBits / 8}
 
int m_audioSampleRate {44100}
 
int m_effectiveDsp {0}
 
int m_useBttv {1}
 
float m_videoAspect {1.33333F}
 
bool m_transcoding {false}
 
int m_mp3Quality {3}
 
char * m_mp3Buf {nullptr}
 
int m_mp3BufSize {0}
 
lame_global_flags * m_gf {nullptr}
 
RTjpegm_rtjc {nullptr}
 
std::array< lzo_byte, kOutLenm_out {}
 
std::array< uint8_t, LZO1X_1_MEM_COMPRESS > __LZO_MMODEL m_wrkmem {0}
 
std::vector< struct vidbuffertype * > m_videoBuffer
 
std::vector< struct audbuffertype * > m_audioBuffer
 
std::vector< struct txtbuffertype * > m_textBuffer
 
int m_actVideoEncode {0}
 
int m_actVideoBuffer {0}
 
int m_actAudioEncode {0}
 
int m_actAudioBuffer {0}
 
long long m_actAudioSample {0}
 
int m_actTextEncode {0}
 
int m_actTextBuffer {0}
 
int m_videoBufferCount {0}
 
int m_audioBufferCount {0}
 
int m_textBufferCount {0}
 
long m_videoBufferSize {0}
 
long m_audioBufferSize {0}
 
long m_textBufferSize {0}
 
NVRWriteThreadm_writeThread {nullptr}
 
NVRAudioThreadm_audioThread {nullptr}
 
bool m_recording {false}
 
int m_keyframeDist {KEYFRAMEDIST}
 
std::vector< struct seektable_entry > * m_seekTable {nullptr}
 
long long m_lastPositionMapPos {0}
 
long long m_extendedDataOffset {0}
 
long long m_framesWritten {0}
 
bool m_livetv {false}
 
bool m_writePaused {false}
 
bool m_audioPaused {false}
 
bool m_mainPaused {false}
 
double m_frameRateMultiplier {1.0}
 
double m_heightMultiplier {1.0}
 
int m_lastBlock {0}
 
std::chrono::milliseconds m_firstTc {0ms}
 
std::chrono::milliseconds m_oldTc {0ms}
 
int m_startNum {0}
 
int m_frameOfGop {0}
 
int m_lastTimecode {0}
 
int m_audioBehind {0}
 
bool m_useAvCodec {false}
 
const AVCodec * m_mpaVidCodec {nullptr}
 
AVCodecContext * m_mpaVidCtx {nullptr}
 
int m_targetBitRate {2200}
 
int m_scaleBitRate {1}
 
int m_maxQuality {2}
 
int m_minQuality {31}
 
int m_qualDiff {3}
 
int m_mp4Opts {0}
 
int m_mbDecision {FF_MB_DECISION_SIMPLE}
 
int m_encodingThreadCount {1}
 Number of threads to use for MPEG-2 and MPEG-4 encoding. More...
 
VideoFrameType m_inPixFmt {FMT_YV12}
 
AVPixelFormat m_pictureFormat {AV_PIX_FMT_YUV420P}
 
uint32_t m_v4l2PixelFormat {0}
 
int m_wOut {0}
 
int m_hOut {0}
 
bool m_hardwareEncode {false}
 
int m_hmjpgQuality {80}
 
int m_hmjpgHDecimation {2}
 
int m_hmjpgVDecimation {2}
 
int m_hmjpgMaxW {640}
 
bool m_clearTimeOnPause {false}
 
bool m_usingV4l2 {false}
 
int m_channelFd {-1}
 
ChannelBasem_channelObj {nullptr}
 
bool m_skipBtAudio {false}
 
bool m_correctBttv {false}
 
int m_volume {100}
 
CC608Decoderm_ccd {nullptr}
 
bool m_go7007 {false}
 
bool m_resetCapture {false}
 

Static Private Attributes

static constexpr size_t kOutLen {1024*1024 + 1024*1024 / 64 + 16 + 3}
 

Friends

class NVRWriteThread
 
class NVRAudioThread
 

Additional Inherited Members

- Public Types inherited from RecorderBase
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 Public Member Functions inherited from RecorderBase
static RecorderBaseCreateRecorder (TVRec *tvrec, ChannelBase *channel, RecordingProfile &profile, const GeneralDBOptions &genOpt)
 
- Protected Attributes inherited from V4LRecorder
QString m_audioDeviceName
 
QString m_vbiDeviceName
 
int m_vbiMode {VBIMode::None}
 
struct VBIDatam_palVbiCb {nullptr}
 
struct vbim_palVbiTt {nullptr}
 
uint m_ntscVbiWidth {0}
 
uint m_ntscVbiStartLine {0}
 
uint m_ntscVbiLineCount {0}
 
VBI608Extractorm_vbi608 {nullptr}
 
VBIThreadm_vbiThread {nullptr}
 
QList< struct txtbuffertype * > m_textBuffer
 
int m_vbiFd {-1}
 
volatile bool m_requestHelper {false}
 
- Protected Attributes inherited from DTVRecorder
int m_streamFd {-1}
 
QString m_recordingType {"all"}
 
MythTimer m_pesTimer
 
QElapsedTimer m_audioTimer
 
uint32_t m_startCode {0xffffffff}
 
int m_firstKeyframe {-1}
 
unsigned long long m_lastGopSeen {0}
 
unsigned long long m_lastSeqSeen {0}
 
unsigned long long m_lastKeyframeSeen {0}
 
unsigned int m_audioBytesRemaining {0}
 
unsigned int m_videoBytesRemaining {0}
 
unsigned int m_otherBytesRemaining {0}
 
int m_progressiveSequence {0}
 
int m_repeatPict {0}
 
bool m_pesSynced {false}
 
bool m_seenSps {false}
 
H2645Parserm_h2645Parser {nullptr}
 
bool m_waitForKeyframeOption {true}
 Wait for the a GOP/SEQ-start before sending data. More...
 
bool m_hasWrittenOtherKeyframe {false}
 
QString m_error
 non-empty iff irrecoverable recording error detected More...
 
MPEGStreamDatam_streamData {nullptr}
 
bool m_bufferPackets {false}
 
std::vector< unsigned char > m_payloadBuffer
 
QRecursiveMutex m_pidLock
 
ProgramAssociationTablem_inputPat {nullptr}
 PAT on input side. More...
 
ProgramMapTablem_inputPmt {nullptr}
 PMT on input side. More...
 
bool m_hasNoAV {false}
 
bool m_recordMpts {false}
 
bool m_recordMptsOnly {false}
 
MythTimer m_recordMptsTimer
 
std::array< uint8_t, 0x1fff+1 > m_streamId {0}
 
std::array< uint8_t, 0x1fff+1 > m_pidStatus {0}
 
std::array< uint8_t, 0x1fff+1 > m_continuityCounter {0}
 
std::vector< TSPacketm_scratch
 
int m_minimumRecordingQuality {95}
 
bool m_usePts {false}
 
std::array< uint64_t, 256 > m_tsCount {0}
 
std::array< int64_t, 256 > m_tsLast {}
 
std::array< int64_t, 256 > m_tsFirst {}
 
std::array< QDateTime, 256 > m_tsFirstDt {}
 
QAtomicInt m_packetCount {0}
 
QAtomicInt m_continuityErrorCount {0}
 
unsigned long long m_framesSeenCount {0}
 
unsigned long long m_framesWrittenCount {0}
 
double m_totalDuration {0.0}
 
double m_tdBase {0.0}
 
uint64_t m_tdTickCount {0}
 
FrameRate m_tdTickFramerate {0}
 
SCAN_t m_scanType {SCAN_t::UNKNOWN_SCAN}
 
bool m_musicChoice {false}
 
bool m_useIForKeyframe {true}
 
- Protected Attributes inherited from RecorderBase
TVRecm_tvrec {nullptr}
 
MythMediaBufferm_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_ntscFrameRate {true}
 
double m_videoFrameRate {29.97}
 
uint m_videoAspect {0}
 
uint m_videoHeight {0}
 
uint m_videoWidth {0}
 
FrameRate m_frameRate {0}
 
RecordingInfom_curRecording {nullptr}
 
QMutex m_pauseLock
 
bool m_requestPause {false}
 
bool m_paused {false}
 
QWaitCondition m_pauseWait
 
QWaitCondition m_unpauseWait
 
bool m_requestRecording {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
 
MythMediaBufferm_nextRingBuffer {nullptr}
 
RecordingInfom_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 Protected Attributes inherited from DTVRecorder
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 Protected Attributes inherited from RecorderBase
static constexpr std::chrono::milliseconds kTimeOfLatestDataIntervalTarget { 5s }
 timeOfLatest update interval target in milliseconds. More...
 

Detailed Description

Definition at line 70 of file NuppelVideoRecorder.h.

Constructor & Destructor Documentation

◆ NuppelVideoRecorder()

NuppelVideoRecorder::NuppelVideoRecorder ( TVRec rec,
ChannelBase channel 
)

Definition at line 97 of file NuppelVideoRecorder.cpp.

◆ ~NuppelVideoRecorder()

NuppelVideoRecorder::~NuppelVideoRecorder ( )
override

Definition at line 109 of file NuppelVideoRecorder.cpp.

Member Function Documentation

◆ SetOption() [1/2]

void NuppelVideoRecorder::SetOption ( const QString &  name,
int  value 
)
overridevirtual

handles the "wait_for_seqstart" option.

Reimplemented from DTVRecorder.

Definition at line 162 of file NuppelVideoRecorder.cpp.

Referenced by SetOptionsFromProfile().

◆ SetOption() [2/2]

void NuppelVideoRecorder::SetOption ( const QString &  name,
const QString &  value 
)
overridevirtual

Set an specific option.

Base options include: codec, videodevice, tvformat (ntsc,ntsc-jp,pal-m), vbiformat ("none","pal teletext","ntsc").

Reimplemented from DTVRecorder.

Definition at line 245 of file NuppelVideoRecorder.cpp.

◆ SetOptionsFromProfile()

void NuppelVideoRecorder::SetOptionsFromProfile ( RecordingProfile profile,
const QString &  videodev,
const QString &  audiodev,
const QString &  vbidev 
)
overridevirtual

Sets basic recorder options.

SetOptionsFromProfile is used to tell the recorder about the recording profile as well as the devices to use.

Reimplemented from DTVRecorder.

Definition at line 250 of file NuppelVideoRecorder.cpp.

◆ Initialize()

void NuppelVideoRecorder::Initialize ( void  )
overridevirtual

This is called between SetOptionsFromProfile() and run() to initialize any devices, etc.

Reimplemented from DTVRecorder.

Definition at line 573 of file NuppelVideoRecorder.cpp.

◆ run()

void NuppelVideoRecorder::run ( void  )
overridevirtual

run() starts the recording process, and does not exit until the recording is complete.

See also
StopRecording()

Implements RecorderBase.

Definition at line 850 of file NuppelVideoRecorder.cpp.

◆ Pause()

void NuppelVideoRecorder::Pause ( bool  clear = true)
overridevirtual

Pause tells recorder to pause, it should not block.

Once paused the recorder calls m_tvrec->RecorderPaused().

Parameters
clearif true any generated timecodes should be reset.
See also
Unpause(), WaitForPause()

Reimplemented from RecorderBase.

Definition at line 351 of file NuppelVideoRecorder.cpp.

◆ IsPaused()

bool NuppelVideoRecorder::IsPaused ( bool  holding_lock = false) const
overridevirtual

Returns true iff recorder is paused.

Reimplemented from RecorderBase.

Definition at line 363 of file NuppelVideoRecorder.cpp.

Referenced by doAudioThread(), DoV4L2(), and doWriteThread().

◆ IsRecording()

bool NuppelVideoRecorder::IsRecording ( void  )
overridevirtual

Tells whether the StartRecorder() loop is running.

Reimplemented from RecorderBase.

Definition at line 377 of file NuppelVideoRecorder.cpp.

◆ GetFramesWritten()

long long NuppelVideoRecorder::GetFramesWritten ( void  )
overridevirtual

Returns number of frames written to disk.

It is not always safe to seek up to this frame in a player because frames may not be written in display order.

Reimplemented from DTVRecorder.

Definition at line 382 of file NuppelVideoRecorder.cpp.

◆ Open()

bool NuppelVideoRecorder::Open ( void  )

Definition at line 789 of file NuppelVideoRecorder.cpp.

Referenced by run().

◆ GetVideoFd()

int NuppelVideoRecorder::GetVideoFd ( void  )
overridevirtual

Returns file descriptor of recorder device.

This is used by channel when only one open file descriptor is allowed on a device node. This is the case with video4linux devices and similar devices in BSD. It is not needed by newer drivers, such as those used for DVB.

Reimplemented from DTVRecorder.

Definition at line 387 of file NuppelVideoRecorder.cpp.

◆ Reset()

void NuppelVideoRecorder::Reset ( void  )
overridevirtual

Reset the recorder to the startup state.

This is used after Pause(bool), WaitForPause() and after the RingBuffer's StopReads() method has been called.

Reimplemented from DTVRecorder.

Definition at line 1756 of file NuppelVideoRecorder.cpp.

◆ SetVideoFilters()

void NuppelVideoRecorder::SetVideoFilters ( QString &  filters)
overridevirtual

Tells recorder which filters to use.

These filters are used by frame grabber encoders to lower the bitrate while keeping quality good. They must execute quickly so that frames are not lost by the recorder.

Reimplemented from DTVRecorder.

Definition at line 373 of file NuppelVideoRecorder.cpp.

◆ SetTranscoding()

void NuppelVideoRecorder::SetTranscoding ( bool  value)
inline

Definition at line 101 of file NuppelVideoRecorder.h.

◆ ResetForNewFile()

void NuppelVideoRecorder::ResetForNewFile ( void  )
overridevirtual

Reimplemented from DTVRecorder.

Definition at line 2236 of file NuppelVideoRecorder.cpp.

Referenced by Reset().

◆ FinishRecording()

void NuppelVideoRecorder::FinishRecording ( void  )
overridevirtual

Flushes the ringbuffer, and if this is not a live LiveTV recording saves the position map and filesize.

Reimplemented from DTVRecorder.

Definition at line 2260 of file NuppelVideoRecorder.cpp.

Referenced by DoV4L2().

◆ StartNewFile()

void NuppelVideoRecorder::StartNewFile ( void  )
overridevirtual

Reimplemented from RecorderBase.

Definition at line 2255 of file NuppelVideoRecorder.cpp.

◆ StreamAllocate()

void NuppelVideoRecorder::StreamAllocate ( void  )

Definition at line 783 of file NuppelVideoRecorder.cpp.

Referenced by run().

◆ WriteHeader()

void NuppelVideoRecorder::WriteHeader ( void  )

Definition at line 1531 of file NuppelVideoRecorder.cpp.

Referenced by CreateNuppelFile().

◆ WriteSeekTable()

void NuppelVideoRecorder::WriteSeekTable ( void  )

Definition at line 1646 of file NuppelVideoRecorder.cpp.

Referenced by FinishRecording().

◆ WriteKeyFrameAdjustTable()

void NuppelVideoRecorder::WriteKeyFrameAdjustTable ( const std::vector< struct kfatable_entry > &  kfa_table)

Definition at line 1681 of file NuppelVideoRecorder.cpp.

◆ UpdateSeekTable()

void NuppelVideoRecorder::UpdateSeekTable ( int  frame_num,
long  offset = 0 
)

Definition at line 1718 of file NuppelVideoRecorder.cpp.

Referenced by WriteVideo().

◆ SetupAVCodecVideo()

bool NuppelVideoRecorder::SetupAVCodecVideo ( void  )

Definition at line 392 of file NuppelVideoRecorder.cpp.

Referenced by Reset(), and run().

◆ SetupRTjpeg()

void NuppelVideoRecorder::SetupRTjpeg ( void  )

Definition at line 496 of file NuppelVideoRecorder.cpp.

Referenced by run().

◆ AudioInit()

int NuppelVideoRecorder::AudioInit ( bool  skipdevice = false)

Definition at line 630 of file NuppelVideoRecorder.cpp.

Referenced by Initialize().

◆ SetVideoAspect()

void NuppelVideoRecorder::SetVideoAspect ( float  newAspect)
inline

Definition at line 118 of file NuppelVideoRecorder.h.

◆ WriteVideo()

void NuppelVideoRecorder::WriteVideo ( MythVideoFrame frame,
bool  skipsync = false,
bool  forcekey = false 
)

Definition at line 2274 of file NuppelVideoRecorder.cpp.

Referenced by doWriteThread().

◆ WriteAudio()

void NuppelVideoRecorder::WriteAudio ( unsigned char *  buf,
int  fnum,
std::chrono::milliseconds  timecode 
)

Definition at line 2512 of file NuppelVideoRecorder.cpp.

Referenced by doWriteThread().

◆ WriteText()

void NuppelVideoRecorder::WriteText ( unsigned char *  buf,
int  len,
std::chrono::milliseconds  timecode,
int  pagenr 
)

Definition at line 2644 of file NuppelVideoRecorder.cpp.

Referenced by doWriteThread().

◆ SetNewVideoParams()

void NuppelVideoRecorder::SetNewVideoParams ( double  newaspect)

Definition at line 1477 of file NuppelVideoRecorder.cpp.

◆ doWriteThread()

void NuppelVideoRecorder::doWriteThread ( void  )
protected

Definition at line 2110 of file NuppelVideoRecorder.cpp.

Referenced by NVRWriteThread::run().

◆ doAudioThread()

void NuppelVideoRecorder::doAudioThread ( void  )
protected

Definition at line 1804 of file NuppelVideoRecorder.cpp.

Referenced by NVRAudioThread::run().

◆ WriteFrameheader()

void NuppelVideoRecorder::WriteFrameheader ( rtframeheader fh)
inlineprivate

◆ WriteFileHeader()

void NuppelVideoRecorder::WriteFileHeader ( void  )
private

Definition at line 1495 of file NuppelVideoRecorder.cpp.

Referenced by SetNewVideoParams(), and WriteHeader().

◆ InitBuffers()

void NuppelVideoRecorder::InitBuffers ( void  )
private

Definition at line 712 of file NuppelVideoRecorder.cpp.

Referenced by Initialize().

◆ ResizeVideoBuffers()

void NuppelVideoRecorder::ResizeVideoBuffers ( void  )
private

Definition at line 774 of file NuppelVideoRecorder.cpp.

◆ MJPEGInit()

bool NuppelVideoRecorder::MJPEGInit ( void  )
private

Determines MJPEG capture resolution.

This function requires an file descriptor for the device, which means Channel cannot be open when NVR::Initialize() is called. It is safe for the recorder to be open.

Returns
true on success

Definition at line 706 of file NuppelVideoRecorder.cpp.

Referenced by Initialize().

◆ KillChildren()

void NuppelVideoRecorder::KillChildren ( void  )
private

Definition at line 1373 of file NuppelVideoRecorder.cpp.

Referenced by DoV4L2(), and Open().

◆ BufferIt()

void NuppelVideoRecorder::BufferIt ( unsigned char *  buf,
int  len = -1,
bool  forcekey = false 
)
private

Definition at line 1404 of file NuppelVideoRecorder.cpp.

Referenced by DoV4L2().

◆ CreateNuppelFile()

int NuppelVideoRecorder::CreateNuppelFile ( void  )
private

Definition at line 1734 of file NuppelVideoRecorder.cpp.

Referenced by run(), and StartNewFile().

◆ ProbeV4L2()

void NuppelVideoRecorder::ProbeV4L2 ( void  )
private

Definition at line 814 of file NuppelVideoRecorder.cpp.

Referenced by run().

◆ SetFormatV4L2()

bool NuppelVideoRecorder::SetFormatV4L2 ( void  )
private

Definition at line 946 of file NuppelVideoRecorder.cpp.

Referenced by run().

◆ DoV4L2()

void NuppelVideoRecorder::DoV4L2 ( void  )
private

Definition at line 1036 of file NuppelVideoRecorder.cpp.

Referenced by run().

◆ FormatTT()

void NuppelVideoRecorder::FormatTT ( struct VBIData vbidata)
overrideprivatevirtual

Reimplemented from V4LRecorder.

Definition at line 1913 of file NuppelVideoRecorder.cpp.

◆ FormatCC()

void NuppelVideoRecorder::FormatCC ( uint  code1,
uint  code2 
)
overrideprivatevirtual

Reimplemented from V4LRecorder.

Definition at line 2077 of file NuppelVideoRecorder.cpp.

◆ AddTextData()

void NuppelVideoRecorder::AddTextData ( unsigned char *  buf,
int  len,
std::chrono::milliseconds  timecode,
char  type 
)
overrideprivatevirtual

Implements CC608Input.

Definition at line 2088 of file NuppelVideoRecorder.cpp.

◆ UpdateResolutions()

void NuppelVideoRecorder::UpdateResolutions ( void  )
private

Definition at line 511 of file NuppelVideoRecorder.cpp.

Referenced by run().

Friends And Related Function Documentation

◆ NVRWriteThread

friend class NVRWriteThread
friend

Definition at line 72 of file NuppelVideoRecorder.h.

Referenced by run().

◆ NVRAudioThread

friend class NVRAudioThread
friend

Definition at line 73 of file NuppelVideoRecorder.h.

Referenced by run().

Member Data Documentation

◆ m_fd

int NuppelVideoRecorder::m_fd {-1}
private

Definition at line 156 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), Open(), SetFormatV4L2(), and ~NuppelVideoRecorder().

◆ m_strm

signed char* NuppelVideoRecorder::m_strm {nullptr}
private

Definition at line 157 of file NuppelVideoRecorder.h.

Referenced by StreamAllocate(), WriteVideo(), and ~NuppelVideoRecorder().

◆ m_lf

unsigned int NuppelVideoRecorder::m_lf {0}
private

Definition at line 158 of file NuppelVideoRecorder.h.

Referenced by ResetForNewFile(), WriteHeader(), and WriteVideo().

◆ m_tf

int NuppelVideoRecorder::m_tf {0}
private

Definition at line 159 of file NuppelVideoRecorder.h.

Referenced by BufferIt().

◆ m_m1

int NuppelVideoRecorder::m_m1 {0}
private

Definition at line 160 of file NuppelVideoRecorder.h.

Referenced by SetOption(), SetupRTjpeg(), and WriteHeader().

◆ m_m2

int NuppelVideoRecorder::m_m2 {0}
private

Definition at line 161 of file NuppelVideoRecorder.h.

Referenced by SetOption(), SetupRTjpeg(), and WriteHeader().

◆ m_q

int NuppelVideoRecorder::m_q {255}
private

Definition at line 162 of file NuppelVideoRecorder.h.

Referenced by SetOption(), SetupRTjpeg(), and WriteHeader().

◆ m_width

int NuppelVideoRecorder::m_width {352}
private

◆ m_height

int NuppelVideoRecorder::m_height {240}
private

◆ m_pipMode

int NuppelVideoRecorder::m_pipMode {0}
private

Definition at line 165 of file NuppelVideoRecorder.h.

Referenced by SetOption().

◆ m_compression

int NuppelVideoRecorder::m_compression {1}
private

Definition at line 166 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_compressAudio

bool NuppelVideoRecorder::m_compressAudio {true}
private

Definition at line 167 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), SetOption(), WriteAudio(), and WriteHeader().

◆ m_audioDevice

AudioInput* NuppelVideoRecorder::m_audioDevice {nullptr}
private

Definition at line 168 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), doAudioThread(), and ~NuppelVideoRecorder().

◆ m_audioBytes

unsigned long long NuppelVideoRecorder::m_audioBytes {0}
private

Definition at line 169 of file NuppelVideoRecorder.h.

Referenced by Initialize(), Reset(), and WriteAudio().

◆ m_audioChannels

int NuppelVideoRecorder::m_audioChannels {2}
private

Definition at line 170 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), doAudioThread(), WriteAudio(), and WriteHeader().

◆ m_audioBits

int NuppelVideoRecorder::m_audioBits {16}
private

Definition at line 171 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), doAudioThread(), and WriteHeader().

◆ m_audioBytesPerSample

int NuppelVideoRecorder::m_audioBytesPerSample {m_audioChannels * m_audioBits / 8}
private

Definition at line 172 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), doAudioThread(), and WriteAudio().

◆ m_audioSampleRate

int NuppelVideoRecorder::m_audioSampleRate {44100}
private

Definition at line 173 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), doAudioThread(), SetOption(), and WriteHeader().

◆ m_effectiveDsp

int NuppelVideoRecorder::m_effectiveDsp {0}
private

Definition at line 174 of file NuppelVideoRecorder.h.

Referenced by Reset(), WriteAudio(), and WriteVideo().

◆ m_useBttv

int NuppelVideoRecorder::m_useBttv {1}
private

Definition at line 176 of file NuppelVideoRecorder.h.

Referenced by BufferIt().

◆ m_videoAspect

float NuppelVideoRecorder::m_videoAspect {1.33333F}
private

◆ m_transcoding

bool NuppelVideoRecorder::m_transcoding {false}
private

Definition at line 179 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_mp3Quality

int NuppelVideoRecorder::m_mp3Quality {3}
private

Definition at line 181 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), SetOption(), and WriteHeader().

◆ m_mp3Buf

char* NuppelVideoRecorder::m_mp3Buf {nullptr}
private

Definition at line 182 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), WriteAudio(), and ~NuppelVideoRecorder().

◆ m_mp3BufSize

int NuppelVideoRecorder::m_mp3BufSize {0}
private

Definition at line 183 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), and WriteAudio().

◆ m_gf

lame_global_flags* NuppelVideoRecorder::m_gf {nullptr}
private

Definition at line 184 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), WriteAudio(), and ~NuppelVideoRecorder().

◆ m_rtjc

RTjpeg* NuppelVideoRecorder::m_rtjc {nullptr}
private

Definition at line 186 of file NuppelVideoRecorder.h.

Referenced by SetupRTjpeg(), WriteVideo(), and ~NuppelVideoRecorder().

◆ kOutLen

constexpr size_t NuppelVideoRecorder::kOutLen {1024*1024 + 1024*1024 / 64 + 16 + 3}
staticconstexprprivate

Definition at line 188 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_out

std::array<lzo_byte,kOutLen> NuppelVideoRecorder::m_out {}
private

Definition at line 189 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_wrkmem

std::array<uint8_t,LZO1X_1_MEM_COMPRESS> __LZO_MMODEL NuppelVideoRecorder::m_wrkmem {0}
private

Definition at line 191 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_videoBuffer

std::vector<struct vidbuffertype *> NuppelVideoRecorder::m_videoBuffer
private

◆ m_audioBuffer

std::vector<struct audbuffertype *> NuppelVideoRecorder::m_audioBuffer
private

◆ m_textBuffer

std::vector<struct txtbuffertype *> NuppelVideoRecorder::m_textBuffer
private

◆ m_actVideoEncode

int NuppelVideoRecorder::m_actVideoEncode {0}
private

Definition at line 197 of file NuppelVideoRecorder.h.

Referenced by doWriteThread(), Reset(), and WriteVideo().

◆ m_actVideoBuffer

int NuppelVideoRecorder::m_actVideoBuffer {0}
private

Definition at line 198 of file NuppelVideoRecorder.h.

Referenced by BufferIt(), Reset(), and WriteVideo().

◆ m_actAudioEncode

int NuppelVideoRecorder::m_actAudioEncode {0}
private

Definition at line 200 of file NuppelVideoRecorder.h.

Referenced by doWriteThread(), and Reset().

◆ m_actAudioBuffer

int NuppelVideoRecorder::m_actAudioBuffer {0}
private

Definition at line 201 of file NuppelVideoRecorder.h.

Referenced by doAudioThread(), and Reset().

◆ m_actAudioSample

long long NuppelVideoRecorder::m_actAudioSample {0}
private

Definition at line 202 of file NuppelVideoRecorder.h.

Referenced by doAudioThread(), and Reset().

◆ m_actTextEncode

int NuppelVideoRecorder::m_actTextEncode {0}
private

Definition at line 204 of file NuppelVideoRecorder.h.

Referenced by doWriteThread(), and Reset().

◆ m_actTextBuffer

int NuppelVideoRecorder::m_actTextBuffer {0}
private

Definition at line 205 of file NuppelVideoRecorder.h.

Referenced by AddTextData(), FormatTT(), and Reset().

◆ m_videoBufferCount

int NuppelVideoRecorder::m_videoBufferCount {0}
private

Definition at line 207 of file NuppelVideoRecorder.h.

Referenced by BufferIt(), doWriteThread(), InitBuffers(), Reset(), and WriteVideo().

◆ m_audioBufferCount

int NuppelVideoRecorder::m_audioBufferCount {0}
private

Definition at line 208 of file NuppelVideoRecorder.h.

Referenced by doAudioThread(), doWriteThread(), InitBuffers(), and Reset().

◆ m_textBufferCount

int NuppelVideoRecorder::m_textBufferCount {0}
private

Definition at line 209 of file NuppelVideoRecorder.h.

Referenced by AddTextData(), doWriteThread(), InitBuffers(), and Reset().

◆ m_videoBufferSize

long NuppelVideoRecorder::m_videoBufferSize {0}
private

Definition at line 211 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), InitBuffers(), and ResizeVideoBuffers().

◆ m_audioBufferSize

long NuppelVideoRecorder::m_audioBufferSize {0}
private

Definition at line 212 of file NuppelVideoRecorder.h.

Referenced by AudioInit(), doAudioThread(), InitBuffers(), SetOption(), and WriteAudio().

◆ m_textBufferSize

long NuppelVideoRecorder::m_textBufferSize {0}
private

Definition at line 213 of file NuppelVideoRecorder.h.

Referenced by InitBuffers().

◆ m_writeThread

NVRWriteThread* NuppelVideoRecorder::m_writeThread {nullptr}
private

Definition at line 217 of file NuppelVideoRecorder.h.

Referenced by KillChildren(), and run().

◆ m_audioThread

NVRAudioThread* NuppelVideoRecorder::m_audioThread {nullptr}
private

Definition at line 218 of file NuppelVideoRecorder.h.

Referenced by KillChildren(), and run().

◆ m_recording

bool NuppelVideoRecorder::m_recording {false}
private

Definition at line 220 of file NuppelVideoRecorder.h.

Referenced by IsRecording(), and run().

◆ m_keyframeDist

int NuppelVideoRecorder::m_keyframeDist {KEYFRAMEDIST}
private

Definition at line 222 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), and WriteVideo().

◆ m_seekTable

std::vector<struct seektable_entry>* NuppelVideoRecorder::m_seekTable {nullptr}
private

◆ m_lastPositionMapPos

long long NuppelVideoRecorder::m_lastPositionMapPos {0}
private

Definition at line 224 of file NuppelVideoRecorder.h.

Referenced by UpdateSeekTable().

◆ m_extendedDataOffset

long long NuppelVideoRecorder::m_extendedDataOffset {0}
private

Definition at line 226 of file NuppelVideoRecorder.h.

Referenced by WriteHeader(), WriteKeyFrameAdjustTable(), and WriteSeekTable().

◆ m_framesWritten

long long NuppelVideoRecorder::m_framesWritten {0}
private

◆ m_livetv

bool NuppelVideoRecorder::m_livetv {false}
private

Definition at line 230 of file NuppelVideoRecorder.h.

Referenced by Initialize().

◆ m_writePaused

bool NuppelVideoRecorder::m_writePaused {false}
private

Definition at line 231 of file NuppelVideoRecorder.h.

Referenced by doWriteThread(), IsPaused(), and Pause().

◆ m_audioPaused

bool NuppelVideoRecorder::m_audioPaused {false}
private

Definition at line 232 of file NuppelVideoRecorder.h.

Referenced by doAudioThread(), IsPaused(), and Pause().

◆ m_mainPaused

bool NuppelVideoRecorder::m_mainPaused {false}
private

Definition at line 233 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), IsPaused(), and Pause().

◆ m_frameRateMultiplier

double NuppelVideoRecorder::m_frameRateMultiplier {1.0}
private

Definition at line 235 of file NuppelVideoRecorder.h.

Referenced by SetupAVCodecVideo(), UpdateResolutions(), and WriteFileHeader().

◆ m_heightMultiplier

double NuppelVideoRecorder::m_heightMultiplier {1.0}
private

◆ m_lastBlock

int NuppelVideoRecorder::m_lastBlock {0}
private

Definition at line 238 of file NuppelVideoRecorder.h.

Referenced by ResetForNewFile(), WriteAudio(), and WriteHeader().

◆ m_firstTc

std::chrono::milliseconds NuppelVideoRecorder::m_firstTc {0ms}
private

Definition at line 239 of file NuppelVideoRecorder.h.

Referenced by WriteAudio().

◆ m_oldTc

std::chrono::milliseconds NuppelVideoRecorder::m_oldTc {0ms}
private

Definition at line 240 of file NuppelVideoRecorder.h.

Referenced by BufferIt().

◆ m_startNum

int NuppelVideoRecorder::m_startNum {0}
private

Definition at line 241 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_frameOfGop

int NuppelVideoRecorder::m_frameOfGop {0}
private

Definition at line 242 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_lastTimecode

int NuppelVideoRecorder::m_lastTimecode {0}
private

Definition at line 243 of file NuppelVideoRecorder.h.

Referenced by WriteVideo().

◆ m_audioBehind

int NuppelVideoRecorder::m_audioBehind {0}
private

Definition at line 244 of file NuppelVideoRecorder.h.

Referenced by WriteAudio().

◆ m_useAvCodec

bool NuppelVideoRecorder::m_useAvCodec {false}
private

Definition at line 246 of file NuppelVideoRecorder.h.

Referenced by Reset(), run(), SetupAVCodecVideo(), WriteHeader(), and WriteVideo().

◆ m_mpaVidCodec

const AVCodec* NuppelVideoRecorder::m_mpaVidCodec {nullptr}
private

◆ m_mpaVidCtx

AVCodecContext* NuppelVideoRecorder::m_mpaVidCtx {nullptr}
private

◆ m_targetBitRate

int NuppelVideoRecorder::m_targetBitRate {2200}
private

Definition at line 251 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), SetOption(), and SetupAVCodecVideo().

◆ m_scaleBitRate

int NuppelVideoRecorder::m_scaleBitRate {1}
private

Definition at line 252 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), SetOption(), and SetupAVCodecVideo().

◆ m_maxQuality

int NuppelVideoRecorder::m_maxQuality {2}
private

Definition at line 253 of file NuppelVideoRecorder.h.

Referenced by SetOption(), and SetupAVCodecVideo().

◆ m_minQuality

int NuppelVideoRecorder::m_minQuality {31}
private

Definition at line 254 of file NuppelVideoRecorder.h.

Referenced by SetOption(), and SetupAVCodecVideo().

◆ m_qualDiff

int NuppelVideoRecorder::m_qualDiff {3}
private

Definition at line 255 of file NuppelVideoRecorder.h.

Referenced by SetOption(), and SetupAVCodecVideo().

◆ m_mp4Opts

int NuppelVideoRecorder::m_mp4Opts {0}
private

Definition at line 256 of file NuppelVideoRecorder.h.

Referenced by SetOption(), and SetupAVCodecVideo().

◆ m_mbDecision

int NuppelVideoRecorder::m_mbDecision {FF_MB_DECISION_SIMPLE}
private

Definition at line 257 of file NuppelVideoRecorder.h.

Referenced by SetOption(), and SetupAVCodecVideo().

◆ m_encodingThreadCount

int NuppelVideoRecorder::m_encodingThreadCount {1}
private

Number of threads to use for MPEG-2 and MPEG-4 encoding.

Definition at line 259 of file NuppelVideoRecorder.h.

Referenced by SetOption(), and SetupAVCodecVideo().

◆ m_inPixFmt

VideoFrameType NuppelVideoRecorder::m_inPixFmt {FMT_YV12}
private

Definition at line 261 of file NuppelVideoRecorder.h.

Referenced by run(), SetFormatV4L2(), and SetOption().

◆ m_pictureFormat

AVPixelFormat NuppelVideoRecorder::m_pictureFormat {AV_PIX_FMT_YUV420P}
private

Definition at line 262 of file NuppelVideoRecorder.h.

Referenced by InitBuffers(), SetupAVCodecVideo(), and SetupRTjpeg().

◆ m_v4l2PixelFormat

uint32_t NuppelVideoRecorder::m_v4l2PixelFormat {0}
private

Definition at line 264 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), and SetFormatV4L2().

◆ m_wOut

int NuppelVideoRecorder::m_wOut {0}
private

◆ m_hOut

int NuppelVideoRecorder::m_hOut {0}
private

◆ m_hardwareEncode

bool NuppelVideoRecorder::m_hardwareEncode {false}
private

Definition at line 269 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), Initialize(), and WriteVideo().

◆ m_hmjpgQuality

int NuppelVideoRecorder::m_hmjpgQuality {80}
private

Definition at line 270 of file NuppelVideoRecorder.h.

Referenced by SetOption().

◆ m_hmjpgHDecimation

int NuppelVideoRecorder::m_hmjpgHDecimation {2}
private

Definition at line 271 of file NuppelVideoRecorder.h.

Referenced by Initialize(), and SetOption().

◆ m_hmjpgVDecimation

int NuppelVideoRecorder::m_hmjpgVDecimation {2}
private

Definition at line 272 of file NuppelVideoRecorder.h.

Referenced by Initialize(), and SetOption().

◆ m_hmjpgMaxW

int NuppelVideoRecorder::m_hmjpgMaxW {640}
private

Definition at line 273 of file NuppelVideoRecorder.h.

Referenced by Initialize().

◆ m_clearTimeOnPause

bool NuppelVideoRecorder::m_clearTimeOnPause {false}
private

Definition at line 275 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), and Pause().

◆ m_usingV4l2

bool NuppelVideoRecorder::m_usingV4l2 {false}
private

Definition at line 277 of file NuppelVideoRecorder.h.

Referenced by ProbeV4L2(), and run().

◆ m_channelFd

int NuppelVideoRecorder::m_channelFd {-1}
private

Definition at line 278 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), GetVideoFd(), Open(), and ProbeV4L2().

◆ m_channelObj

ChannelBase* NuppelVideoRecorder::m_channelObj {nullptr}
private

Definition at line 280 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), and NuppelVideoRecorder().

◆ m_skipBtAudio

bool NuppelVideoRecorder::m_skipBtAudio {false}
private

Definition at line 282 of file NuppelVideoRecorder.h.

Referenced by SetOption().

◆ m_correctBttv

bool NuppelVideoRecorder::m_correctBttv {false}
private

Definition at line 285 of file NuppelVideoRecorder.h.

Referenced by ProbeV4L2().

◆ m_volume

int NuppelVideoRecorder::m_volume {100}
private

Definition at line 288 of file NuppelVideoRecorder.h.

Referenced by SetOption().

◆ m_ccd

CC608Decoder* NuppelVideoRecorder::m_ccd {nullptr}
private

Definition at line 290 of file NuppelVideoRecorder.h.

Referenced by FormatCC(), NuppelVideoRecorder(), and ~NuppelVideoRecorder().

◆ m_go7007

bool NuppelVideoRecorder::m_go7007 {false}
private

Definition at line 292 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), ProbeV4L2(), ResetForNewFile(), SetFormatV4L2(), and WriteVideo().

◆ m_resetCapture

bool NuppelVideoRecorder::m_resetCapture {false}
private

Definition at line 293 of file NuppelVideoRecorder.h.

Referenced by DoV4L2(), and ResetForNewFile().


The documentation for this class was generated from the following files: