BDInfo.TSStreamFile.UpdateStreamBitrates C# (CSharp) Method

UpdateStreamBitrates() private method

private UpdateStreamBitrates ( ushort PTSPID, ulong PTS, ulong PTSDiff ) : void
PTSPID ushort
PTS ulong
PTSDiff ulong
return void
        private void UpdateStreamBitrates(
            ushort PTSPID,
            ulong PTS,
            ulong PTSDiff)
        {
            if (Playlists == null) return;

            foreach (ushort PID in StreamStates.Keys)
            {
                if (Streams.ContainsKey(PID) &&
                    Streams[PID].IsVideoStream &&
                    PID != PTSPID)
                {
                    continue;
                }
                if (StreamStates[PID].WindowPackets == 0)
                {
                    continue;
                }
                UpdateStreamBitrate(PID, PTSPID, PTS, PTSDiff);
            }

            foreach (TSPlaylistFile playlist in Playlists)
            {
                double packetSeconds = 0;
                foreach (TSStreamClip clip in playlist.StreamClips)
                {
                    if (clip.AngleIndex == 0)
                    {
                        packetSeconds += clip.PacketSeconds;
                    }
                }
                if (packetSeconds > 0)
                {
                    foreach (TSStream playlistStream in playlist.SortedStreams)
                    {
                        if (playlistStream.IsVBR)
                        {
                            playlistStream.BitRate = (long)Math.Round(
                                ((playlistStream.PayloadBytes * 8.0) / packetSeconds));

                            if (playlistStream.StreamType == TSStreamType.AC3_TRUE_HD_AUDIO &&
                                ((TSAudioStream)playlistStream).CoreStream != null)
                            {
                                playlistStream.BitRate -=
                                    ((TSAudioStream)playlistStream).CoreStream.BitRate;
                            }
                        }
                    }
                }
            }
        }