11 #include "Interface/StreamInfo.h" 29 #pragma warning(disable : 4244) 34 #include <libavcodec/avcodec.h> 35 #include <libavutil/mastering_display_metadata.h> 56 STREAM_SOURCE_NONE = 0x000,
57 STREAM_SOURCE_DEMUX = 0x100,
58 STREAM_SOURCE_NAV = 0x200,
59 STREAM_SOURCE_DEMUX_SUB = 0x300,
60 STREAM_SOURCE_TEXT = 0x400,
61 STREAM_SOURCE_VIDEOMUX = 0x500
64 #define STREAM_SOURCE_MASK(a) ((a)&0xf00) 79 profile = FF_PROFILE_UNKNOWN;
80 level = FF_LEVEL_UNKNOWN;
82 source = STREAM_SOURCE_NONE;
88 flags = StreamFlags::FLAG_NONE;
94 virtual std::string GetStreamName();
99 AVCodecID codec = AV_CODEC_ID_NONE;
100 unsigned int codec_fourcc;
108 std::unique_ptr<uint8_t[]> ExtraData;
109 unsigned int ExtraSize;
112 std::string language;
116 std::string codecName;
120 std::shared_ptr<DemuxCryptoSession> cryptoSession;
121 std::shared_ptr<ADDON::IAddonProvider> externalInterfaces;
136 bool bPTSInvalid =
false;
137 bool bForcedAspect =
false;
138 int iOrientation = 0;
139 int iBitsPerPixel = 0;
143 AVColorSpace colorSpace = AVCOL_SPC_UNSPECIFIED;
144 AVColorRange colorRange = AVCOL_RANGE_UNSPECIFIED;
145 AVColorPrimaries colorPrimaries = AVCOL_PRI_UNSPECIFIED;
146 AVColorTransferCharacteristic colorTransferCharacteristic = AVCOL_TRC_UNSPECIFIED;
148 std::shared_ptr<AVMasteringDisplayMetadata> masteringMetaData;
149 std::shared_ptr<AVContentLightMetadata> contentLightMetaData;
151 std::string stereo_mode;
152 StreamHdrType hdr_type = StreamHdrType::HDR_TYPE_NONE;
172 std::string GetStreamType();
179 uint64_t iChannelLayout;
180 std::string m_channelLayoutName;
189 type = STREAM_SUBTITLE;
199 type = STREAM_TELETEXT;
215 type = STREAM_RADIO_RDS;
223 : m_demuxerId(NewGuid())
232 virtual bool Reset() = 0;
238 virtual void Abort() {}
243 virtual void Flush() = 0;
254 virtual bool SeekTime(
double time,
bool backwards =
false,
double* startpts = NULL) = 0;
260 virtual bool SeekChapter(
int chapter,
double* startpts = NULL) {
return false; }
265 virtual int GetChapterCount() {
return 0; }
270 virtual int GetChapter() {
return 0; }
277 virtual void GetChapterName(std::string& strChapterName,
int chapterIdx = -1) {}
283 virtual int64_t GetChapterPos(
int chapterIdx = -1) {
return 0; }
289 virtual void SetSpeed(
int iSpeed) {}
294 virtual void FillBuffer(
bool mode) {}
299 virtual int GetStreamLength() {
return 0; }
304 virtual CDemuxStream* GetStream(int64_t demuxerId,
int iStreamId)
const 306 return GetStream(iStreamId);
309 virtual std::vector<CDemuxStream*> GetStreams()
const = 0;
314 virtual int GetNrOfStreams()
const = 0;
319 virtual int GetPrograms(std::vector<ProgramInfo>& programs) {
return 0; }
324 virtual void SetProgram(
int progId) {}
329 virtual std::string GetFileName() {
return ""; }
334 int GetNrOfSubtitleStreams();
339 virtual std::string GetStreamCodecName(int64_t demuxerId,
int iStreamId)
341 return GetStreamCodecName(iStreamId);
347 virtual void EnableStream(int64_t demuxerId,
int id,
bool enable) { EnableStream(
id, enable); }
352 virtual void OpenStream(int64_t demuxerId,
int id) { OpenStream(
id); }
358 virtual void SetVideoResolution(
unsigned int width,
unsigned int height) {}
363 int64_t GetDemuxerId() {
return m_demuxerId; }
366 virtual void EnableStream(
int id,
bool enable) {}
367 virtual void OpenStream(
int id) {}
368 virtual CDemuxStream* GetStream(
int iStreamId)
const = 0;
369 virtual std::string GetStreamCodecName(
int iStreamId) {
return ""; }
371 int GetNrOfStreams(StreamType streamType);
378 static int64_t guid = 0;
Definition: DVDDemux.h:219
Definition: DVDDemux.h:203
Definition: DVDDemux.h:193
Definition: DVDDemux.h:155
Definition: DVDDemux.h:209
Definition: DVDDemux.h:124
Definition: DemuxCrypto.h:25
Definition: DVDDemux.h:183
Definition: DVDDemux.h:70
Definition: DemuxPacket.h:22