MythTV  master
httplivestream.h
Go to the documentation of this file.
1 #ifndef HTTPLIVESTREAM_H
2 #define HTTPLIVESTREAM_H
3 
4 #include <QString>
5 
7 
8 #include "libmythtv/mythframe.h"
9 
19 };
20 
21 
23 {
24  public:
25  explicit HTTPLiveStream(QString srcFile, uint16_t width = 640, uint16_t height = 480,
26  uint32_t bitrate = 800000, uint32_t abitrate = 64000,
27  uint16_t maxSegments = 0, uint16_t segmentSize = 10,
28  uint32_t aobitrate = 32000, int32_t srate = -1);
29  explicit HTTPLiveStream(int streamid);
30  ~HTTPLiveStream();
31 
32  bool InitForWrite(void);
33  bool LoadFromDB(void);
34 
35  int GetStreamID(void) const { return m_streamid; }
36  uint16_t GetWidth(void) const { return m_width; }
37  uint16_t GetHeight(void) const { return m_height; }
38  uint32_t GetBitrate(void) const { return m_bitrate; }
39  uint32_t GetAudioBitrate(void) const { return m_audioBitrate; }
40  uint32_t GetAudioOnlyBitrate(void) const { return m_audioOnlyBitrate; }
41  uint16_t GetMaxSegments(void) const { return m_maxSegments; }
42  QString GetSourceFile(void) const { return m_sourceFile; }
43  QString GetHTMLPageName(void) const;
44  QString GetMetaPlaylistName(void) const;
45  QString GetPlaylistName(bool audioOnly = false) const;
46  uint16_t GetSegmentSize(void) const { return m_segmentSize; }
47  QString GetFilename(uint16_t segmentNumber = 0, bool fileOnly = false,
48  bool audioOnly = false, bool encoded = false) const;
49  QString GetCurrentFilename(
50  bool audioOnly = false, bool encoded = false) const;
51 
52  void SetOutputVars(void);
53 
54  HTTPLiveStreamStatus GetDBStatus(void) const;
55 
56  int AddStream(void);
57  bool AddSegment(void);
58 
59  bool WriteHTML(void);
60  bool WriteMetaPlaylist(void);
61  bool WritePlaylist(bool audioOnly = false, bool writeEndTag = false);
62 
63  bool SaveSegmentInfo(void);
64 
65  bool UpdateSizeInfo(uint16_t width, uint16_t height,
66  uint16_t srcwidth, uint16_t srcheight);
67  bool UpdateStatus(HTTPLiveStreamStatus status);
68  bool UpdateStatusMessage(const QString& message);
69  bool UpdatePercentComplete(int percent);
70 
71  static QString StatusToString(HTTPLiveStreamStatus status);
72 
73  bool CheckStop(void);
74 
75  DTC::LiveStreamInfo *StartStream(void);
76  static DTC::LiveStreamInfo *StopStream(int id);
77  static bool RemoveStream(int id);
78 
79  DTC::LiveStreamInfo *GetLiveStreamInfo(DTC::LiveStreamInfo *info = nullptr);
80  static DTC::LiveStreamInfoList *GetLiveStreamInfoList( const QString &FileName = "");
81 
82  protected:
83  bool m_writing {false};
84  int m_streamid {-1};
85  QString m_sourceFile;
86  QString m_sourceHost;
87  uint16_t m_sourceWidth {0};
88  uint16_t m_sourceHeight {0};
89  QString m_outDir;
90  QString m_outBase;
92  QString m_outFile;
94  QString m_audioOutFile;
96  uint16_t m_segmentSize {10};
97  uint16_t m_maxSegments {0};
98  uint16_t m_segmentCount {0};
99  uint16_t m_startSegment {0};
100  uint16_t m_curSegment {0};
101  QString m_httpPrefix;
103  uint16_t m_height {480};
104  uint16_t m_width {640};
105  uint32_t m_bitrate {800000};
106  uint32_t m_audioBitrate { 64000};
107  uint32_t m_audioOnlyBitrate { 32000};
108  int32_t m_sampleRate {-1};
109 
110  QDateTime m_created;
111  QDateTime m_lastModified;
112  uint16_t m_percentComplete {0};
113  QString m_relativeURL;
114  QString m_fullURL;
116 
118 };
119 
120 #endif
121 
122 /* vim: set expandtab tabstop=4 shiftwidth=4: */
123 
HTTPLiveStream::GetSourceFile
QString GetSourceFile(void) const
Definition: httplivestream.h:42
HTTPLiveStream::GetWidth
uint16_t GetWidth(void) const
Definition: httplivestream.h:36
HTTPLiveStream::m_outBaseEncoded
QString m_outBaseEncoded
Definition: httplivestream.h:91
HTTPLiveStream::m_outBase
QString m_outBase
Definition: httplivestream.h:90
HTTPLiveStream::m_fullURL
QString m_fullURL
Definition: httplivestream.h:114
DTC::LiveStreamInfo
Definition: liveStreamInfo.h:15
HTTPLiveStream::m_relativeURL
QString m_relativeURL
Definition: httplivestream.h:113
HTTPLiveStream::m_httpPrefixRel
QString m_httpPrefixRel
Definition: httplivestream.h:102
DTC::LiveStreamInfoList
Definition: liveStreamInfoList.h:14
HTTPLiveStream::m_lastModified
QDateTime m_lastModified
Definition: httplivestream.h:111
mythframe.h
HTTPLiveStream::m_outFile
QString m_outFile
Definition: httplivestream.h:92
HTTPLiveStream::GetMaxSegments
uint16_t GetMaxSegments(void) const
Definition: httplivestream.h:41
HTTPLiveStream::GetSegmentSize
uint16_t GetSegmentSize(void) const
Definition: httplivestream.h:46
HTTPLiveStream::m_audioOutFile
QString m_audioOutFile
Definition: httplivestream.h:94
kHLSStatusStarting
@ kHLSStatusStarting
Definition: httplivestream.h:13
kHLSStatusStopped
@ kHLSStatusStopped
Definition: httplivestream.h:18
HTTPLiveStream::GetAudioBitrate
uint32_t GetAudioBitrate(void) const
Definition: httplivestream.h:39
HTTPLiveStream::m_outFileEncoded
QString m_outFileEncoded
Definition: httplivestream.h:93
kHLSStatusCompleted
@ kHLSStatusCompleted
Definition: httplivestream.h:15
HTTPLiveStream::m_sourceHost
QString m_sourceHost
Definition: httplivestream.h:86
liveStreamInfoList.h
HTTPLiveStreamStatus
HTTPLiveStreamStatus
Definition: httplivestream.h:10
HTTPLiveStream::GetBitrate
uint32_t GetBitrate(void) const
Definition: httplivestream.h:38
HTTPLiveStream::GetAudioOnlyBitrate
uint32_t GetAudioOnlyBitrate(void) const
Definition: httplivestream.h:40
HTTPLiveStream::m_outDir
QString m_outDir
Definition: httplivestream.h:89
kHLSStatusUndefined
@ kHLSStatusUndefined
Definition: httplivestream.h:11
kHLSStatusQueued
@ kHLSStatusQueued
Definition: httplivestream.h:12
HTTPLiveStream::m_audioOutFileEncoded
QString m_audioOutFileEncoded
Definition: httplivestream.h:95
HTTPLiveStream::GetHeight
uint16_t GetHeight(void) const
Definition: httplivestream.h:37
kHLSStatusStopping
@ kHLSStatusStopping
Definition: httplivestream.h:17
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
HTTPLiveStream::GetStreamID
int GetStreamID(void) const
Definition: httplivestream.h:35
HTTPLiveStream
Definition: httplivestream.h:22
kHLSStatusErrored
@ kHLSStatusErrored
Definition: httplivestream.h:16
HTTPLiveStream::m_sourceFile
QString m_sourceFile
Definition: httplivestream.h:85
uint16_t
unsigned short uint16_t
Definition: iso6937tables.h:3
HTTPLiveStream::m_created
QDateTime m_created
Definition: httplivestream.h:110
HTTPLiveStream::m_statusMessage
QString m_statusMessage
Definition: httplivestream.h:115
kHLSStatusRunning
@ kHLSStatusRunning
Definition: httplivestream.h:14
HTTPLiveStream::m_httpPrefix
QString m_httpPrefix
Definition: httplivestream.h:101