private static Track Transform(TSStream stream, int index, ref int numVideo, ref int numAudio, ref int numSubtitle) { var videoStream = stream as TSVideoStream; var audioStream = stream as TSAudioStream; var subtitleStream = stream as TSGraphicsStream; var indexOfType = 0; if (videoStream != null) { indexOfType = numVideo++; } if (audioStream != null) { indexOfType = numAudio++; } if (subtitleStream != null) { indexOfType = numSubtitle++; } return(new Track { Index = index, PID = stream.PID, Language = stream.Language, IsHidden = stream.IsHidden, Codec = CodecTransformer.CodecFromStream(stream), IsVideo = stream.IsVideoStream, IsAudio = stream.IsAudioStream, IsSubtitle = stream.IsGraphicsStream || stream.IsTextStream, ChannelCount = audioStream != null ? audioStream.ChannelCountDouble : 0, BitDepth = audioStream != null ? audioStream.BitDepth : 0, VideoFormat = videoStream != null ? videoStream.VideoFormat : 0, FrameRate = videoStream != null ? videoStream.FrameRate : TSFrameRate.Unknown, AspectRatio = videoStream != null ? videoStream.AspectRatio : TSAspectRatio.Unknown, IndexOfType = indexOfType }); }
public static Codec CodecFromStream(TSStream stream) { if (stream == null) { return(Codec.UnknownCodec); } var audioStream = stream as TSAudioStream; switch (stream.StreamType) { case TSStreamType.MPEG1_VIDEO: return(Codec.MPEG1Video); case TSStreamType.MPEG2_VIDEO: return(Codec.MPEG2Video); case TSStreamType.AVC_VIDEO: return(Codec.AVC); case TSStreamType.MVC_VIDEO: return(Codec.UnknownVideo); case TSStreamType.VC1_VIDEO: return(Codec.VC1); case TSStreamType.MPEG1_AUDIO: return(Codec.MP3); case TSStreamType.MPEG2_AUDIO: return(Codec.UnknownAudio); case TSStreamType.LPCM_AUDIO: return(Codec.LPCM); case TSStreamType.AC3_AUDIO: if (audioStream != null && audioStream.AudioMode == TSAudioMode.Extended) { return(Codec.AC3EX); } if (audioStream != null && audioStream.AudioMode == TSAudioMode.Surround) { return(Codec.ProLogic); } return(Codec.AC3); case TSStreamType.AC3_PLUS_AUDIO: case TSStreamType.AC3_PLUS_SECONDARY_AUDIO: return(Codec.EAC3); case TSStreamType.AC3_TRUE_HD_AUDIO: return(Codec.TrueHD); case TSStreamType.DTS_AUDIO: if (audioStream != null && audioStream.AudioMode == TSAudioMode.Extended) { return(Codec.DTSES); } return(Codec.DTS); case TSStreamType.DTS_HD_AUDIO: return(Codec.DTSHDHRA); case TSStreamType.DTS_HD_SECONDARY_AUDIO: return(Codec.DTSExpress); case TSStreamType.DTS_HD_MASTER_AUDIO: return(Codec.DTSHDMA); case TSStreamType.PRESENTATION_GRAPHICS: return(Codec.PGS); case TSStreamType.INTERACTIVE_GRAPHICS: return(Codec.IGS); case TSStreamType.SUBTITLE: return(Codec.UnknownSubtitle); default: return(Codec.UnknownCodec); } }
private static bool IsDefaultAngle(TSStream tsStream) { return(tsStream.AngleIndex == 0); }