private static void FileStreamWorkerThread(Stream stream) { var data = new byte[188]; var factory = new TsPacketFactory(); while (stream?.Read(data, 0, 188) > 0) { try { var tsPackets = factory.GetTsPacketsFromData(data); if (tsPackets == null) { break; } _analyser.AnalysePackets(tsPackets); } catch (Exception ex) { LogMessage($@"Unhandled exception within file streamer: {ex.Message}"); } } _pendingExit = true; Thread.Sleep(250); Console.WriteLine("Completed reading of file - hit enter to exit!"); Console.ReadLine(); }
private static void PerformUnalignedDataTest(string filename, int expectedPacketCount, int readFragmentSize) { try { var factory = new TsPacketFactory(); //load some data from test file using (var stream = File.Open(filename, FileMode.Open)) { var packetCounter = 0; var data = new byte[readFragmentSize]; var readCount = stream.Read(data, 0, readFragmentSize); while (readCount > 0) { try { if (readCount < readFragmentSize) { var tmpArr = new byte[readCount]; Buffer.BlockCopy(data, 0, tmpArr, 0, readCount); data = new byte[readCount]; Buffer.BlockCopy(tmpArr, 0, data, 0, readCount); } var tsPackets = factory.GetTsPacketsFromData(data); if (tsPackets == null) { break; } packetCounter += tsPackets.Length; if (stream.Position < stream.Length) { readCount = stream.Read(data, 0, readFragmentSize); } else { break; } } catch (Exception ex) { Assert.Fail($@"Unhandled exception reading sample file: {ex.Message}"); } } if (packetCounter != expectedPacketCount) { Assert.Fail($"Failed to read expected number of packets in sample file - expected {expectedPacketCount}, " + $"got {packetCounter}, blocksize: {readFragmentSize}"); } } } catch (Exception ex) { Assert.Fail(ex.Message); } }