123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- //============================================================================
- // BDInfo - Blu-ray Video and Audio Analysis Tool
- // Copyright © 2010 Cinema Squid
- //
- // This library is free software; you can redistribute it and/or
- // modify it under the terms of the GNU Lesser General Public
- // License as published by the Free Software Foundation; either
- // version 2.1 of the License, or (at your option) any later version.
- //
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- // Lesser General Public License for more details.
- //
- // You should have received a copy of the GNU Lesser General Public
- // License along with this library; if not, write to the Free Software
- // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- //=============================================================================
- using System;
- using System.Collections.Generic;
- namespace BDInfo
- {
- public class TSStreamClip
- {
- public int AngleIndex = 0;
- public string Name;
- public double TimeIn;
- public double TimeOut;
- public double RelativeTimeIn;
- public double RelativeTimeOut;
- public double Length;
- public ulong FileSize = 0;
- public ulong InterleavedFileSize = 0;
- public ulong PayloadBytes = 0;
- public ulong PacketCount = 0;
- public double PacketSeconds = 0;
- public List<double> Chapters = new List<double>();
- public TSStreamFile StreamFile = null;
- public TSStreamClipFile StreamClipFile = null;
- public TSStreamClip(
- TSStreamFile streamFile,
- TSStreamClipFile streamClipFile)
- {
- if (streamFile != null)
- {
- Name = streamFile.Name;
- StreamFile = streamFile;
- FileSize = (ulong)StreamFile.FileInfo.Length;
- if (StreamFile.InterleavedFile != null)
- {
- InterleavedFileSize = (ulong)StreamFile.InterleavedFile.FileInfo.Length;
- }
- }
- StreamClipFile = streamClipFile;
- }
- public string DisplayName
- {
- get
- {
- if (StreamFile != null &&
- StreamFile.InterleavedFile != null &&
- BDInfoSettings.EnableSSIF)
- {
- return StreamFile.InterleavedFile.Name;
- }
- return Name;
- }
- }
- public ulong PacketSize => PacketCount * 192;
- public ulong PacketBitRate
- {
- get
- {
- if (PacketSeconds > 0)
- {
- return (ulong)Math.Round(((PacketSize * 8.0) / PacketSeconds));
- }
- return 0;
- }
- }
- public bool IsCompatible(TSStreamClip clip)
- {
- foreach (var stream1 in StreamFile.Streams.Values)
- {
- if (clip.StreamFile.Streams.ContainsKey(stream1.PID))
- {
- var stream2 = clip.StreamFile.Streams[stream1.PID];
- if (stream1.StreamType != stream2.StreamType)
- {
- return false;
- }
- }
- }
- return true;
- }
- }
- }
|