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;
132 bool interlaced =
false;
137 bool bPTSInvalid =
false;
138 bool bForcedAspect =
false;
139 int iOrientation = 0;
140 int iBitsPerPixel = 0;
144 AVColorSpace colorSpace = AVCOL_SPC_UNSPECIFIED;
145 AVColorRange colorRange = AVCOL_RANGE_UNSPECIFIED;
146 AVColorPrimaries colorPrimaries = AVCOL_PRI_UNSPECIFIED;
147 AVColorTransferCharacteristic colorTransferCharacteristic = AVCOL_TRC_UNSPECIFIED;
149 std::shared_ptr<AVMasteringDisplayMetadata> masteringMetaData;
150 std::shared_ptr<AVContentLightMetadata> contentLightMetaData;
152 std::string stereo_mode;
153 StreamHdrType hdr_type = StreamHdrType::HDR_TYPE_NONE;
154 AVDOVIDecoderConfigurationRecord dovi{};
174 std::string GetStreamType();
181 uint64_t iChannelLayout;
182 std::string m_channelLayoutName;
191 type = STREAM_SUBTITLE;
201 type = STREAM_TELETEXT;
217 type = STREAM_RADIO_RDS;
225 : m_demuxerId(NewGuid())
234 virtual bool Reset() = 0;
240 virtual void Abort() {}
245 virtual void Flush() = 0;
256 virtual bool SeekTime(
double time,
bool backwards =
false,
double* startpts = NULL) = 0;
262 virtual bool SeekChapter(
int chapter,
double* startpts = NULL) {
return false; }
267 virtual int GetChapterCount() {
return 0; }
272 virtual int GetChapter() {
return 0; }
279 virtual void GetChapterName(std::string& strChapterName,
int chapterIdx = -1) {}
285 virtual int64_t GetChapterPos(
int chapterIdx = -1) {
return 0; }
291 virtual void SetSpeed(
int iSpeed) {}
296 virtual void FillBuffer(
bool mode) {}
301 virtual int GetStreamLength() {
return 0; }
306 virtual CDemuxStream* GetStream(int64_t demuxerId,
int iStreamId)
const 308 return GetStream(iStreamId);
311 virtual std::vector<CDemuxStream*> GetStreams()
const = 0;
316 virtual int GetNrOfStreams()
const = 0;
321 virtual int GetPrograms(std::vector<ProgramInfo>& programs) {
return 0; }
326 virtual void SetProgram(
int progId) {}
331 virtual std::string GetFileName() {
return ""; }
336 int GetNrOfSubtitleStreams();
341 virtual std::string GetStreamCodecName(int64_t demuxerId,
int iStreamId)
343 return GetStreamCodecName(iStreamId);
349 virtual void EnableStream(int64_t demuxerId,
int id,
bool enable) { EnableStream(
id, enable); }
354 virtual void OpenStream(int64_t demuxerId,
int id) { OpenStream(
id); }
360 virtual void SetVideoResolution(
unsigned int width,
unsigned int height) {}
365 int64_t GetDemuxerId() {
return m_demuxerId; }
368 virtual void EnableStream(
int id,
bool enable) {}
369 virtual void OpenStream(
int id) {}
370 virtual CDemuxStream* GetStream(
int iStreamId)
const = 0;
371 virtual std::string GetStreamCodecName(
int iStreamId) {
return ""; }
373 int GetNrOfStreams(StreamType streamType);
380 static int64_t guid = 0;
Definition: DVDDemux.h:221
Definition: DVDDemux.h:205
Definition: DVDDemux.h:195
Definition: DVDDemux.h:157
Definition: DVDDemux.h:211
Definition: DVDDemux.h:124
Definition: DemuxCrypto.h:26
Definition: DVDDemux.h:185
Definition: DVDDemux.h:72
Definition: DemuxPacket.h:22