11 #include "Interface/StreamInfo.h" 12 #include "cores/FFmpeg.h" 30 #pragma warning(disable : 4244) 35 #include <libavcodec/avcodec.h> 36 #include <libavutil/dovi_meta.h> 37 #include <libavutil/mastering_display_metadata.h> 58 STREAM_SOURCE_NONE = 0x000,
59 STREAM_SOURCE_DEMUX = 0x100,
60 STREAM_SOURCE_NAV = 0x200,
61 STREAM_SOURCE_DEMUX_SUB = 0x300,
62 STREAM_SOURCE_TEXT = 0x400,
63 STREAM_SOURCE_VIDEOMUX = 0x500
66 #define STREAM_SOURCE_MASK(a) ((a)&0xf00) 81 profile = FF_PROFILE_UNKNOWN;
82 level = FF_LEVEL_UNKNOWN;
84 source = STREAM_SOURCE_NONE;
89 flags = StreamFlags::FLAG_NONE;
95 virtual std::string GetStreamName();
100 AVCodecID codec = AV_CODEC_ID_NONE;
101 unsigned int codec_fourcc;
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;
153 AVDOVIDecoderConfigurationRecord dovi{};
173 std::string GetStreamType();
180 uint64_t iChannelLayout;
181 std::string m_channelLayoutName;
190 type = STREAM_SUBTITLE;
200 type = STREAM_TELETEXT;
216 type = STREAM_RADIO_RDS;
224 : m_demuxerId(NewGuid())
233 virtual bool Reset() = 0;
239 virtual void Abort() {}
244 virtual void Flush() = 0;
255 virtual bool SeekTime(
double time,
bool backwards =
false,
double* startpts = NULL) = 0;
261 virtual bool SeekChapter(
int chapter,
double* startpts = NULL) {
return false; }
266 virtual int GetChapterCount() {
return 0; }
271 virtual int GetChapter() {
return 0; }
278 virtual void GetChapterName(std::string& strChapterName,
int chapterIdx = -1) {}
284 virtual int64_t GetChapterPos(
int chapterIdx = -1) {
return 0; }
290 virtual void SetSpeed(
int iSpeed) {}
295 virtual void FillBuffer(
bool mode) {}
300 virtual int GetStreamLength() {
return 0; }
305 virtual CDemuxStream* GetStream(int64_t demuxerId,
int iStreamId)
const 307 return GetStream(iStreamId);
310 virtual std::vector<CDemuxStream*> GetStreams()
const = 0;
315 virtual int GetNrOfStreams()
const = 0;
320 virtual int GetPrograms(std::vector<ProgramInfo>& programs) {
return 0; }
325 virtual void SetProgram(
int progId) {}
330 virtual std::string GetFileName() {
return ""; }
335 int GetNrOfSubtitleStreams();
340 virtual std::string GetStreamCodecName(int64_t demuxerId,
int iStreamId)
342 return GetStreamCodecName(iStreamId);
348 virtual void EnableStream(int64_t demuxerId,
int id,
bool enable) { EnableStream(
id, enable); }
353 virtual void OpenStream(int64_t demuxerId,
int id) { OpenStream(
id); }
359 virtual void SetVideoResolution(
unsigned int width,
unsigned int height) {}
364 int64_t GetDemuxerId() {
return m_demuxerId; }
367 virtual void EnableStream(
int id,
bool enable) {}
368 virtual void OpenStream(
int id) {}
369 virtual CDemuxStream* GetStream(
int iStreamId)
const = 0;
370 virtual std::string GetStreamCodecName(
int iStreamId) {
return ""; }
372 int GetNrOfStreams(StreamType streamType);
379 static int64_t guid = 0;
Definition: DVDDemux.h:220
Definition: DVDDemux.h:204
Definition: DVDDemux.h:194
Definition: DVDDemux.h:156
Definition: DVDDemux.h:210
Definition: DVDDemux.h:124
Definition: DemuxCrypto.h:26
Definition: DVDDemux.h:184
Definition: DVDDemux.h:72
Definition: DemuxPacket.h:22