/// <summary> /// Beginnt mit der Bearbeitung der Nutzdaten in einem PVA Paket. /// </summary> private void StartPackage() { // Next m_State = SyncStates.PayLoad; // Get length parts int high = m_Header[4]; int low = m_Header[5]; // Reset length counter m_BytesLeft = low + 256 * high; // Special if (PTSPresent) { m_BytesLeft = Math.Max(m_BytesLeft - m_PTS.Length, 0); } // Reset transfer state m_VideoAlign = m_Header[3] & 0x3; m_PESCreated = false; m_PacketPos = 0; }
public void AddObserver(SyncStates stateObserve, IOrmSyncObserver observer) { }
/// <summary> /// /// </summary> /// <param name="buffer"></param> /// <param name="start"></param> /// <param name="length"></param> private void Worker(byte[] buffer, int start, int length) { while (length > 0) { // Find the first byte of the magic word if (SyncStates.SyncA == m_State) { // Find the sync byte for (; ;) { // Is there any more data if (length-- < 1) { return; } // Check for hit if (0x41 == buffer[start++]) { break; } // Count errors ++m_Skipped; } // Next m_State = SyncStates.SyncV; } // Find the second byte of the magic word if (SyncStates.SyncV == m_State) { // Check if if (0x56 != buffer[start]) { // Count ++m_Restarted; // Start resync m_State = SyncStates.SyncA; // Test again continue; } // Adjust --length; ++start; // Next m_State = SyncStates.Header; // Reset header counter m_BytesLeft = m_Header.Length; // Done if (length < 1) { return; } } // Find the header if (SyncStates.Header == m_State) { // How much to copy int len = Math.Min(m_BytesLeft, length); // Copy over Array.Copy(buffer, start, m_Header, m_Header.Length - m_BytesLeft, len); // Adjust m_BytesLeft -= len; length -= len; start += len; // Incomplete if (m_BytesLeft > 0) { return; } // See if PTS follows if (PTSPresent) { // Next m_State = SyncStates.PTS; // Reset header counter m_BytesLeft = m_PTS.Length; } else { // Report StartPackage(); } // Done if (length < 1) { return; } } // Find the header if (SyncStates.PTS == m_State) { // How much to copy int len = Math.Min(m_BytesLeft, length); // Copy over Array.Copy(buffer, start, m_PTS, m_PTS.Length - m_BytesLeft, len); // Adjust m_BytesLeft -= len; length -= len; start += len; // Incomplete if (m_BytesLeft > 0) { return; } // Report StartPackage(); // Done if (length < 1) { return; } } // How much to eat up int payload = Math.Min(m_BytesLeft, length); // Process SendPayload(buffer, start, payload); // Adjust m_BytesLeft -= payload; length -= payload; start += payload; // Start from scratch if (m_BytesLeft < 1) { m_State = SyncStates.SyncA; } } }
public void SetNewState(SyncStates newState, IObservableProgession observableProgression) { _syncObserver.OnNewState(newState, true); observableProgression.AddObserver(newState, _syncObserver); }
public void SetNewState(SyncStates newState) { _syncObserver.OnNewState(newState, false); }
public static void SetState(DependencyObject obj, SyncStates value) { obj.SetValue(State, value); }
/// <summary> /// Beginnt mit der Bearbeitung der Nutzdaten in einem PVA Paket. /// </summary> private void StartPackage() { // Next m_State = SyncStates.PayLoad; // Get length parts int high = m_Header[4]; int low = m_Header[5]; // Reset length counter m_BytesLeft = low + 256 * high; // Special if (PTSPresent) m_BytesLeft = Math.Max(m_BytesLeft - m_PTS.Length, 0); // Reset transfer state m_VideoAlign = m_Header[3] & 0x3; m_PESCreated = false; m_PacketPos = 0; }
/// <summary> /// /// </summary> /// <param name="buffer"></param> /// <param name="start"></param> /// <param name="length"></param> private void Worker(byte[] buffer, int start, int length) { while (length > 0) { // Find the first byte of the magic word if (SyncStates.SyncA == m_State) { // Find the sync byte for (; ; ) { // Is there any more data if (length-- < 1) return; // Check for hit if (0x41 == buffer[start++]) break; // Count errors ++m_Skipped; } // Next m_State = SyncStates.SyncV; } // Find the second byte of the magic word if (SyncStates.SyncV == m_State) { // Check if if (0x56 != buffer[start]) { // Count ++m_Restarted; // Start resync m_State = SyncStates.SyncA; // Test again continue; } // Adjust --length; ++start; // Next m_State = SyncStates.Header; // Reset header counter m_BytesLeft = m_Header.Length; // Done if (length < 1) return; } // Find the header if (SyncStates.Header == m_State) { // How much to copy int len = Math.Min(m_BytesLeft, length); // Copy over Array.Copy(buffer, start, m_Header, m_Header.Length - m_BytesLeft, len); // Adjust m_BytesLeft -= len; length -= len; start += len; // Incomplete if (m_BytesLeft > 0) return; // See if PTS follows if (PTSPresent) { // Next m_State = SyncStates.PTS; // Reset header counter m_BytesLeft = m_PTS.Length; } else { // Report StartPackage(); } // Done if (length < 1) return; } // Find the header if (SyncStates.PTS == m_State) { // How much to copy int len = Math.Min(m_BytesLeft, length); // Copy over Array.Copy(buffer, start, m_PTS, m_PTS.Length - m_BytesLeft, len); // Adjust m_BytesLeft -= len; length -= len; start += len; // Incomplete if (m_BytesLeft > 0) return; // Report StartPackage(); // Done if (length < 1) return; } // How much to eat up int payload = Math.Min(m_BytesLeft, length); // Process SendPayload(buffer, start, payload); // Adjust m_BytesLeft -= payload; length -= payload; start += payload; // Start from scratch if (m_BytesLeft < 1) m_State = SyncStates.SyncA; } }