MythTV  master
mythmediawriter.h
Go to the documentation of this file.
1 #ifndef FILEWRITERBASE_H
2 #define FILEWRITERBASE_H
3 
4 // QT
5 #include <QString>
6 
7 // MythTV
9 #include "libmythtv/mythframe.h"
10 
12 {
13  public:
14  MythMediaWriter() = default;
15  virtual ~MythMediaWriter() = default;
16 
17  virtual bool Init (void) = 0;
18  virtual bool OpenFile (void) = 0;
19  virtual bool CloseFile (void) = 0;
20  virtual int WriteVideoFrame (MythVideoFrame *Frame) = 0;
21  virtual int WriteAudioFrame (unsigned char *Buffer, int FrameNumber,
22  std::chrono::milliseconds &Timecode) = 0;
23  virtual int WriteTextFrame (int VBIMode, unsigned char *Buffer, int Length,
24  std::chrono::milliseconds Timecode, int PageNumber) = 0;
25  virtual int WriteSeekTable (void) = 0;
26  virtual bool SwitchToNextFile (void) = 0;
27 
28  void SetFilename (const QString& FileName);
29  void SetContainer (const QString& Cont);
30  void SetVideoCodec (const QString& Codec);
31  void SetVideoBitrate (int Bitrate);
32  void SetWidth (int Width);
33  void SetHeight (int Height);
34  void SetAspect (float Aspect);
35  void SetFramerate (double Rate);
36  void SetKeyFrameDist (int Dist);
37  void SetAudioCodec (const QString& Codec);
38  void SetAudioBitrate (int Bitrate);
39  void SetAudioChannels (int Channels);
40  void SetAudioFrameRate (int Rate);
41  void SetAudioFormat (AudioFormat Format);
42  void SetThreadCount (int Count);
43  void SetTimecodeOffset (std::chrono::milliseconds Offset);
44  void SetEncodingPreset (const QString& Preset);
45  void SetEncodingTune (const QString& Tune);
46  long long GetFramesWritten (void) const;
47  std::chrono::milliseconds GetTimecodeOffset (void) const;
48  int GetAudioFrameSize (void) const; // Number of audio samples (per channel) in an AVFrame
49 
50  protected:
51  QString m_filename;
52  QString m_container;
53  QString m_videoCodec;
54  int m_videoBitrate { 800000 };
55  int m_width { 0 };
56  int m_height { 0 };
57  float m_aspect { 1.333333F };
58  double m_frameRate { 29.97 };
59  int m_keyFrameDist { 15 };
60  QString m_audioCodec;
61  int m_audioBitrate { 0 };
62  int m_audioChannels { 2 };
63  int m_audioFrameRate { 48000 };
64  AudioFormat m_audioFormat { FORMAT_S16 };
65  int m_audioFrameSize { -1 };
66  int m_encodingThreadCount { 1 };
67  long long m_framesWritten { 0 };
68  std::chrono::milliseconds m_startingTimecodeOffset { -1ms };
70  QString m_encodingTune;
71 };
72 
73 #endif
74 
MythMediaWriter::m_videoCodec
QString m_videoCodec
Definition: mythmediawriter.h:53
FORMAT_S16
@ FORMAT_S16
Definition: audiooutputsettings.h:27
Frame
Definition: zmdefines.h:93
MythMediaWriter::m_container
QString m_container
Definition: mythmediawriter.h:52
VBIMode
Definition: tv.h:6
MythDate::Format
Format
Definition: mythdate.h:15
mythframe.h
MythMediaWriter::m_audioCodec
QString m_audioCodec
Definition: mythmediawriter.h:60
MythMediaWriter::m_encodingPreset
QString m_encodingPreset
Definition: mythmediawriter.h:69
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
Buffer
Definition: MythExternControl.h:36
MythMediaWriter::m_encodingTune
QString m_encodingTune
Definition: mythmediawriter.h:70
MythMediaWriter::m_filename
QString m_filename
Definition: mythmediawriter.h:51
MythVideoFrame
Definition: mythframe.h:88
AudioFormat
AudioFormat
Definition: audiooutputsettings.h:24
MythMediaWriter
Definition: mythmediawriter.h:11
audiooutputsettings.h