|
@@ -1,4 +1,4 @@
|
|
|
-//============================================================================
|
|
|
+//============================================================================
|
|
|
// BDInfo - Blu-ray Video and Audio Analysis Tool
|
|
|
// Copyright © 2010 Cinema Squid
|
|
|
//
|
|
@@ -283,7 +283,7 @@ namespace BDInfo
|
|
|
|
|
|
bool isAVC = false;
|
|
|
bool isMVC = false;
|
|
|
- foreach (TSStream finishedStream in Streams.Values)
|
|
|
+ foreach (var finishedStream in Streams.Values)
|
|
|
{
|
|
|
if (!finishedStream.IsInitialized)
|
|
|
{
|
|
@@ -327,10 +327,10 @@ namespace BDInfo
|
|
|
UpdateStreamBitrate(PID, PTSPID, PTS, PTSDiff);
|
|
|
}
|
|
|
|
|
|
- foreach (TSPlaylistFile playlist in Playlists)
|
|
|
+ foreach (var playlist in Playlists)
|
|
|
{
|
|
|
double packetSeconds = 0;
|
|
|
- foreach (TSStreamClip clip in playlist.StreamClips)
|
|
|
+ foreach (var clip in playlist.StreamClips)
|
|
|
{
|
|
|
if (clip.AngleIndex == 0)
|
|
|
{
|
|
@@ -339,7 +339,7 @@ namespace BDInfo
|
|
|
}
|
|
|
if (packetSeconds > 0)
|
|
|
{
|
|
|
- foreach (TSStream playlistStream in playlist.SortedStreams)
|
|
|
+ foreach (var playlistStream in playlist.SortedStreams)
|
|
|
{
|
|
|
if (playlistStream.IsVBR)
|
|
|
{
|
|
@@ -366,14 +366,14 @@ namespace BDInfo
|
|
|
{
|
|
|
if (Playlists == null) return;
|
|
|
|
|
|
- TSStreamState streamState = StreamStates[PID];
|
|
|
+ var streamState = StreamStates[PID];
|
|
|
double streamTime = (double)PTS / 90000;
|
|
|
double streamInterval = (double)PTSDiff / 90000;
|
|
|
double streamOffset = streamTime + streamInterval;
|
|
|
|
|
|
- foreach (TSPlaylistFile playlist in Playlists)
|
|
|
+ foreach (var playlist in Playlists)
|
|
|
{
|
|
|
- foreach (TSStreamClip clip in playlist.StreamClips)
|
|
|
+ foreach (var clip in playlist.StreamClips)
|
|
|
{
|
|
|
if (clip.Name != this.Name) continue;
|
|
|
|
|
@@ -390,15 +390,15 @@ namespace BDInfo
|
|
|
clip.PacketSeconds = streamOffset - clip.TimeIn;
|
|
|
}
|
|
|
|
|
|
- Dictionary<ushort, TSStream> playlistStreams = playlist.Streams;
|
|
|
- if (clip.AngleIndex > 0 &&
|
|
|
+ var playlistStreams = playlist.Streams;
|
|
|
+ if (clip.AngleIndex > 0 &&
|
|
|
clip.AngleIndex < playlist.AngleStreams.Count + 1)
|
|
|
{
|
|
|
playlistStreams = playlist.AngleStreams[clip.AngleIndex - 1];
|
|
|
}
|
|
|
if (playlistStreams.ContainsKey(PID))
|
|
|
{
|
|
|
- TSStream stream = playlistStreams[PID];
|
|
|
+ var stream = playlistStreams[PID];
|
|
|
|
|
|
stream.PayloadBytes += streamState.WindowBytes;
|
|
|
stream.PacketCount += streamState.WindowPackets;
|
|
@@ -425,13 +425,13 @@ namespace BDInfo
|
|
|
|
|
|
if (Streams.ContainsKey(PID))
|
|
|
{
|
|
|
- TSStream stream = Streams[PID];
|
|
|
+ var stream = Streams[PID];
|
|
|
stream.PayloadBytes += streamState.WindowBytes;
|
|
|
stream.PacketCount += streamState.WindowPackets;
|
|
|
-
|
|
|
+
|
|
|
if (stream.IsVideoStream)
|
|
|
{
|
|
|
- TSStreamDiagnostics diag = new TSStreamDiagnostics();
|
|
|
+ var diag = new TSStreamDiagnostics();
|
|
|
diag.Marker = (double)PTS / 90000;
|
|
|
diag.Interval = (double)PTSDiff / 90000;
|
|
|
diag.Bytes = streamState.WindowBytes;
|
|
@@ -457,7 +457,7 @@ namespace BDInfo
|
|
|
int dataSize = 16384;
|
|
|
Stream fileStream = null;
|
|
|
try
|
|
|
- {
|
|
|
+ {
|
|
|
string fileName;
|
|
|
if (BDInfoSettings.EnableSSIF &&
|
|
|
InterleavedFile != null)
|
|
@@ -482,13 +482,13 @@ namespace BDInfo
|
|
|
StreamStates.Clear();
|
|
|
StreamDiagnostics.Clear();
|
|
|
|
|
|
- TSPacketParser parser =
|
|
|
+ var parser =
|
|
|
new TSPacketParser();
|
|
|
-
|
|
|
+
|
|
|
long fileLength = (uint)fileStream.Length;
|
|
|
byte[] buffer = new byte[dataSize];
|
|
|
int bufferLength = 0;
|
|
|
- while ((bufferLength =
|
|
|
+ while ((bufferLength =
|
|
|
fileStream.Read(buffer, 0, buffer.Length)) > 0)
|
|
|
{
|
|
|
int offset = 0;
|
|
@@ -536,80 +536,80 @@ namespace BDInfo
|
|
|
switch (parser.HeaderParse)
|
|
|
{
|
|
|
case 2:
|
|
|
- {
|
|
|
- parser.TransportErrorIndicator =
|
|
|
- (byte)((buffer[i] >> 7) & 0x1);
|
|
|
- parser.PayloadUnitStartIndicator =
|
|
|
- (byte)((buffer[i] >> 6) & 0x1);
|
|
|
- parser.TransportPriority =
|
|
|
- (byte)((buffer[i] >> 5) & 0x1);
|
|
|
- parser.PID =
|
|
|
- (ushort)((buffer[i] & 0x1f) << 8);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 1:
|
|
|
- {
|
|
|
- parser.PID |= (ushort)buffer[i];
|
|
|
- if (Streams.ContainsKey(parser.PID))
|
|
|
- {
|
|
|
- parser.Stream = Streams[parser.PID];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- parser.Stream = null;
|
|
|
- }
|
|
|
- if (!StreamStates.ContainsKey(parser.PID))
|
|
|
{
|
|
|
- StreamStates[parser.PID] = new TSStreamState();
|
|
|
+ parser.TransportErrorIndicator =
|
|
|
+ (byte)((buffer[i] >> 7) & 0x1);
|
|
|
+ parser.PayloadUnitStartIndicator =
|
|
|
+ (byte)((buffer[i] >> 6) & 0x1);
|
|
|
+ parser.TransportPriority =
|
|
|
+ (byte)((buffer[i] >> 5) & 0x1);
|
|
|
+ parser.PID =
|
|
|
+ (ushort)((buffer[i] & 0x1f) << 8);
|
|
|
}
|
|
|
- parser.StreamState = StreamStates[parser.PID];
|
|
|
- parser.StreamState.TotalPackets++;
|
|
|
- parser.StreamState.WindowPackets++;
|
|
|
- parser.TotalPackets++;
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 0:
|
|
|
- {
|
|
|
- parser.TransportScramblingControl =
|
|
|
- (byte)((buffer[i] >> 6) & 0x3);
|
|
|
- parser.AdaptionFieldControl =
|
|
|
- (byte)((buffer[i] >> 4) & 0x3);
|
|
|
+ break;
|
|
|
|
|
|
- if ((parser.AdaptionFieldControl & 0x2) == 0x2)
|
|
|
- {
|
|
|
- parser.AdaptionFieldState = true;
|
|
|
- }
|
|
|
- if (parser.PayloadUnitStartIndicator == 1)
|
|
|
+ case 1:
|
|
|
{
|
|
|
- if (parser.PID == 0)
|
|
|
+ parser.PID |= (ushort)buffer[i];
|
|
|
+ if (Streams.ContainsKey(parser.PID))
|
|
|
{
|
|
|
- parser.PATSectionStart = true;
|
|
|
+ parser.Stream = Streams[parser.PID];
|
|
|
}
|
|
|
- else if (parser.PID == parser.PMTPID)
|
|
|
+ else
|
|
|
{
|
|
|
- parser.PMTSectionStart = true;
|
|
|
+ parser.Stream = null;
|
|
|
}
|
|
|
- else if (parser.StreamState != null &&
|
|
|
- parser.StreamState.TransferState)
|
|
|
+ if (!StreamStates.ContainsKey(parser.PID))
|
|
|
{
|
|
|
- parser.StreamState.TransferState = false;
|
|
|
- parser.StreamState.TransferCount++;
|
|
|
+ StreamStates[parser.PID] = new TSStreamState();
|
|
|
+ }
|
|
|
+ parser.StreamState = StreamStates[parser.PID];
|
|
|
+ parser.StreamState.TotalPackets++;
|
|
|
+ parser.StreamState.WindowPackets++;
|
|
|
+ parser.TotalPackets++;
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- bool isFinished = ScanStream(
|
|
|
- parser.Stream,
|
|
|
- parser.StreamState,
|
|
|
- parser.StreamState.StreamBuffer);
|
|
|
+ case 0:
|
|
|
+ {
|
|
|
+ parser.TransportScramblingControl =
|
|
|
+ (byte)((buffer[i] >> 6) & 0x3);
|
|
|
+ parser.AdaptionFieldControl =
|
|
|
+ (byte)((buffer[i] >> 4) & 0x3);
|
|
|
|
|
|
- if (!isFullScan && isFinished)
|
|
|
+ if ((parser.AdaptionFieldControl & 0x2) == 0x2)
|
|
|
+ {
|
|
|
+ parser.AdaptionFieldState = true;
|
|
|
+ }
|
|
|
+ if (parser.PayloadUnitStartIndicator == 1)
|
|
|
+ {
|
|
|
+ if (parser.PID == 0)
|
|
|
+ {
|
|
|
+ parser.PATSectionStart = true;
|
|
|
+ }
|
|
|
+ else if (parser.PID == parser.PMTPID)
|
|
|
+ {
|
|
|
+ parser.PMTSectionStart = true;
|
|
|
+ }
|
|
|
+ else if (parser.StreamState != null &&
|
|
|
+ parser.StreamState.TransferState)
|
|
|
{
|
|
|
- return;
|
|
|
+ parser.StreamState.TransferState = false;
|
|
|
+ parser.StreamState.TransferCount++;
|
|
|
+
|
|
|
+ bool isFinished = ScanStream(
|
|
|
+ parser.Stream,
|
|
|
+ parser.StreamState,
|
|
|
+ parser.StreamState.StreamBuffer);
|
|
|
+
|
|
|
+ if (!isFullScan && isFinished)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- break;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
else if (parser.AdaptionFieldState)
|
|
@@ -670,7 +670,8 @@ namespace BDInfo
|
|
|
parser.PAT[parser.PATOffset++] = buffer[i++];
|
|
|
parser.PATSectionLength--;
|
|
|
parser.PacketLength--;
|
|
|
- } --i;
|
|
|
+ }
|
|
|
+ --i;
|
|
|
|
|
|
if (parser.PATSectionLength == 0)
|
|
|
{
|
|
@@ -680,10 +681,10 @@ namespace BDInfo
|
|
|
for (int k = 0; k < (parser.PATOffset - 4); k += 4)
|
|
|
{
|
|
|
uint programNumber = (uint)
|
|
|
- ((parser.PAT[k] << 8) +
|
|
|
+ ((parser.PAT[k] << 8) +
|
|
|
parser.PAT[k + 1]);
|
|
|
|
|
|
- ushort programPID = (ushort)
|
|
|
+ ushort programPID = (ushort)
|
|
|
(((parser.PAT[k + 2] & 0x1F) << 8) +
|
|
|
parser.PAT[k + 3]);
|
|
|
|
|
@@ -801,7 +802,8 @@ namespace BDInfo
|
|
|
PMT[parser.PMTOffset++] = buffer[i++];
|
|
|
--parser.PMTSectionLength;
|
|
|
--parser.PacketLength;
|
|
|
- } --i;
|
|
|
+ }
|
|
|
+ --i;
|
|
|
|
|
|
if (parser.PMTSectionLength == 0)
|
|
|
{
|
|
@@ -837,7 +839,7 @@ namespace BDInfo
|
|
|
|
|
|
if (!Streams.ContainsKey(streamPID))
|
|
|
{
|
|
|
- List<TSDescriptor> streamDescriptors =
|
|
|
+ var streamDescriptors =
|
|
|
new List<TSDescriptor>();
|
|
|
|
|
|
/*
|
|
@@ -985,7 +987,7 @@ namespace BDInfo
|
|
|
parser.PMTProgramDescriptorLength = buffer[i];
|
|
|
parser.PMTProgramDescriptors.Add(
|
|
|
new TSDescriptor(
|
|
|
- parser.PMTProgramDescriptor,
|
|
|
+ parser.PMTProgramDescriptor,
|
|
|
parser.PMTProgramDescriptorLength));
|
|
|
break;
|
|
|
}
|
|
@@ -994,11 +996,11 @@ namespace BDInfo
|
|
|
{
|
|
|
--parser.PMTProgramDescriptorLength;
|
|
|
|
|
|
- TSDescriptor descriptor = parser.PMTProgramDescriptors[
|
|
|
+ var descriptor = parser.PMTProgramDescriptors[
|
|
|
parser.PMTProgramDescriptors.Count - 1];
|
|
|
|
|
|
int valueIndex =
|
|
|
- descriptor.Value.Length -
|
|
|
+ descriptor.Value.Length -
|
|
|
parser.PMTProgramDescriptorLength - 1;
|
|
|
|
|
|
descriptor.Value[valueIndex] = buffer[i];
|
|
@@ -1020,19 +1022,19 @@ namespace BDInfo
|
|
|
parser.SyncState = false;
|
|
|
}
|
|
|
}
|
|
|
- else if (parser.Stream != null &&
|
|
|
- parser.StreamState != null &&
|
|
|
+ else if (parser.Stream != null &&
|
|
|
+ parser.StreamState != null &&
|
|
|
parser.TransportScramblingControl == 0)
|
|
|
{
|
|
|
- TSStream stream = parser.Stream;
|
|
|
- TSStreamState streamState = parser.StreamState;
|
|
|
+ var stream = parser.Stream;
|
|
|
+ var streamState = parser.StreamState;
|
|
|
|
|
|
streamState.Parse =
|
|
|
(streamState.Parse << 8) + buffer[i];
|
|
|
|
|
|
if (streamState.TransferState)
|
|
|
{
|
|
|
- if ((bufferLength - i) >= streamState.PacketLength &&
|
|
|
+ if ((bufferLength - i) >= streamState.PacketLength &&
|
|
|
streamState.PacketLength > 0)
|
|
|
{
|
|
|
offset = streamState.PacketLength;
|
|
@@ -1085,7 +1087,7 @@ namespace BDInfo
|
|
|
--parser.PacketLength;
|
|
|
|
|
|
bool headerFound = false;
|
|
|
- if (stream.IsVideoStream &&
|
|
|
+ if (stream.IsVideoStream &&
|
|
|
streamState.Parse == 0x000001FD)
|
|
|
{
|
|
|
headerFound = true;
|
|
@@ -1170,18 +1172,18 @@ namespace BDInfo
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 1:
|
|
|
- streamState.PESHeaderFlags =
|
|
|
+ streamState.PESHeaderFlags =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#if DEBUG
|
|
|
streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 0:
|
|
|
- streamState.PESHeaderLength =
|
|
|
+ streamState.PESHeaderLength =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#if DEBUG
|
|
|
streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
@@ -1211,48 +1213,48 @@ namespace BDInfo
|
|
|
switch (streamState.PTSParse)
|
|
|
{
|
|
|
case 4:
|
|
|
- streamState.PTSTemp =
|
|
|
+ streamState.PTSTemp =
|
|
|
((streamState.Parse & 0xE) << 29);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 3:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFF) << 22);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 2:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFE) << 14);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 1:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFF) << 7);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 0:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFE) >> 1);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
-#endif
|
|
|
+#endif
|
|
|
streamState.PTS = streamState.PTSTemp;
|
|
|
|
|
|
if (streamState.PTS > streamState.PTSLast)
|
|
@@ -1260,13 +1262,13 @@ namespace BDInfo
|
|
|
if (streamState.PTSLast > 0)
|
|
|
{
|
|
|
streamState.PTSTransfer = (streamState.PTS - streamState.PTSLast);
|
|
|
- }
|
|
|
+ }
|
|
|
streamState.PTSLast = streamState.PTS;
|
|
|
}
|
|
|
|
|
|
streamState.PTSDiff = streamState.PTS - streamState.DTSPrev;
|
|
|
|
|
|
- if (streamState.PTSCount > 0 &&
|
|
|
+ if (streamState.PTSCount > 0 &&
|
|
|
stream.IsVideoStream)
|
|
|
{
|
|
|
UpdateStreamBitrates(stream.PID, streamState.PTS, streamState.PTSDiff);
|
|
@@ -1280,7 +1282,7 @@ namespace BDInfo
|
|
|
}
|
|
|
Length = (double)(parser.PTSLast - parser.PTSFirst) / 90000;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
streamState.DTSPrev = streamState.PTS;
|
|
|
streamState.PTSCount++;
|
|
|
if (streamState.PESHeaderLength == 0)
|
|
@@ -1299,46 +1301,46 @@ namespace BDInfo
|
|
|
switch (streamState.DTSParse)
|
|
|
{
|
|
|
case 9:
|
|
|
- streamState.PTSTemp =
|
|
|
+ streamState.PTSTemp =
|
|
|
((streamState.Parse & 0xE) << 29);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 8:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFF) << 22);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 7:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFE) << 14);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 6:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFF) << 7);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 5:
|
|
|
- streamState.PTSTemp |=
|
|
|
+ streamState.PTSTemp |=
|
|
|
((streamState.Parse & 0xFE) >> 1);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
#endif
|
|
|
streamState.PTS = streamState.PTSTemp;
|
|
@@ -1347,48 +1349,48 @@ namespace BDInfo
|
|
|
streamState.PTSLast = streamState.PTS;
|
|
|
}
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 4:
|
|
|
- streamState.DTSTemp =
|
|
|
+ streamState.DTSTemp =
|
|
|
((streamState.Parse & 0xE) << 29);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 3:
|
|
|
- streamState.DTSTemp |=
|
|
|
+ streamState.DTSTemp |=
|
|
|
((streamState.Parse & 0xFF) << 22);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 2:
|
|
|
- streamState.DTSTemp |=
|
|
|
+ streamState.DTSTemp |=
|
|
|
((streamState.Parse & 0xFE) << 14);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 1:
|
|
|
- streamState.DTSTemp |=
|
|
|
+ streamState.DTSTemp |=
|
|
|
((streamState.Parse & 0xFF) << 7);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xFF);
|
|
|
#endif
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 0:
|
|
|
- streamState.DTSTemp |=
|
|
|
+ streamState.DTSTemp |=
|
|
|
((streamState.Parse & 0xFE) >> 1);
|
|
|
#if DEBUG
|
|
|
- streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
+ streamState.PESHeader[streamState.PESHeaderIndex++] =
|
|
|
(byte)(streamState.Parse & 0xff);
|
|
|
#endif
|
|
|
streamState.PTSDiff = streamState.DTSTemp - streamState.DTSPrev;
|
|
@@ -1459,7 +1461,7 @@ namespace BDInfo
|
|
|
|
|
|
ulong PTSLast = 0;
|
|
|
ulong PTSDiff = 0;
|
|
|
- foreach (TSStream stream in Streams.Values)
|
|
|
+ foreach (var stream in Streams.Values)
|
|
|
{
|
|
|
if (!stream.IsVideoStream) continue;
|
|
|
|
|
@@ -1482,8 +1484,8 @@ namespace BDInfo
|
|
|
}
|
|
|
|
|
|
private TSStream CreateStream(
|
|
|
- ushort streamPID,
|
|
|
- byte streamType,
|
|
|
+ ushort streamPID,
|
|
|
+ byte streamType,
|
|
|
List<TSDescriptor> streamDescriptors)
|
|
|
{
|
|
|
TSStream stream = null;
|
|
@@ -1495,10 +1497,10 @@ namespace BDInfo
|
|
|
case TSStreamType.MPEG1_VIDEO:
|
|
|
case TSStreamType.MPEG2_VIDEO:
|
|
|
case TSStreamType.VC1_VIDEO:
|
|
|
- {
|
|
|
- stream = new TSVideoStream();
|
|
|
- }
|
|
|
- break;
|
|
|
+ {
|
|
|
+ stream = new TSVideoStream();
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
case TSStreamType.AC3_AUDIO:
|
|
|
case TSStreamType.AC3_PLUS_AUDIO:
|
|
@@ -1511,23 +1513,23 @@ namespace BDInfo
|
|
|
case TSStreamType.LPCM_AUDIO:
|
|
|
case TSStreamType.MPEG1_AUDIO:
|
|
|
case TSStreamType.MPEG2_AUDIO:
|
|
|
- {
|
|
|
- stream = new TSAudioStream();
|
|
|
- }
|
|
|
- break;
|
|
|
+ {
|
|
|
+ stream = new TSAudioStream();
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
case TSStreamType.INTERACTIVE_GRAPHICS:
|
|
|
case TSStreamType.PRESENTATION_GRAPHICS:
|
|
|
- {
|
|
|
- stream = new TSGraphicsStream();
|
|
|
- }
|
|
|
- break;
|
|
|
+ {
|
|
|
+ stream = new TSGraphicsStream();
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
case TSStreamType.SUBTITLE:
|
|
|
- {
|
|
|
- stream = new TSTextStream();
|
|
|
- }
|
|
|
- break;
|
|
|
+ {
|
|
|
+ stream = new TSTextStream();
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
default:
|
|
|
break;
|
|
@@ -1548,6 +1550,6 @@ namespace BDInfo
|
|
|
}
|
|
|
|
|
|
return stream;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|