Lab029. Прохождение видеопакетов через канал с потерями и ошибками

Исходные данные и неизменный транспорт Lab028
- Видео: data\raw\lab026_rover_source.mp4
- Источник: 1280x720, 30.000000 fps, 623 кадров, 20.766667 с.
- Реальных синхронных JPEG-пар: 63; BASE 240x135 grayscale Q23, ROI 320x180 grayscale Q33, 3 composite fps.
- Использован protocol/video_packet.py без изменения: 32-byte header, packet CRC32, object CRC32, отдельные BASE/ROI и атомарная выдача CompositeReassembler.
- Payload: 256, 512, 1024 байт.
- Пакетов в одном проходе: 256 B=1660, 512 B=862, 1024 B=478.

Методика Monte Carlo
- Повторов на каждую строку: 200.
- Master seed: 29029; independent seeds 29029...29034; BER seeds 30029...30034; burst seeds 31029...31031.
- Для одинакового параметра один seed повторно используется для payload 256/512/1024, чтобы сравнение было коррелированным и воспроизводимым.
- packet_delivery_rate = (received - CRC rejected) / transmitted.
- effective delivered JPEG bitrate учитывает BASE+ROI bytes только атомарно выданных составных кадров и полное симулированное время.
- Потерянный фрагмент — физически потерянный пакет или пакет, отклонённый проверкой транспорта.
- FEC, ARQ, повторные передачи и интерливинг не применяются.

Модели канала
- Independent loss: каждый пакет теряется независимо с заданной вероятностью.
- BER: число независимых битовых ошибок выбирается binomial по полной длине пакета в битах, включая 32-byte header; выбранные биты физически инвертируются перед reassembler.
- Gilbert-Elliott: Good доставляет все пакеты, Bad теряет все. Начальное состояние выбирается из стационарного распределения.
- В Lab029 длительность состояния Bad и серии потерь задаётся количеством пакетов, а не физическим временем.
- Серия из одинакового количества пакетов имеет разную физическую длительность для payload 256, 512 и 1024 байта, поскольку различается время передачи пакета.
- Доля успешно восстановленных кадров не показывает длительность непрерывного отсутствия нового изображения.
- Поэтому burst-loss результаты Lab029 не являются окончательным сравнением размеров payload; для временного сравнения предназначена Lab029B.
  - short: короткие серии потерь; P(G->B)=0.010204082, P(B->G)=0.500000000, stationary loss=2.000%, expected mean burst=2.0.
  - medium: средние серии потерь; P(G->B)=0.004081633, P(B->G)=0.200000000, stationary loss=2.000%, expected mean burst=5.0.
  - long: длинные серии потерь; P(G->B)=0.001020408, P(B->G)=0.050000000, stationary loss=2.000%, expected mean burst=20.0.

Функциональные проверки
- PASS zero_impairment_100_percent: all payloads delivered 100% packets and composite frames
- PASS packet_crc_rejects_bit_error: payload bit flip was rejected by packet CRC32
- PASS adjacent_frame_isolation: two interleaved neighboring frames remained independent
- PASS atomic_incomplete_frame: missing ROI fragment prevented atomic publication
- PASS fixed_seed_reproducibility: identical seed produced byte-for-byte equal result fields

1. Independent packet loss — atomic composite success
parameter | payload 256 | payload 512 | payload 1024
---------:|------------:|------------:|-------------:
0.0% | 100.000% | 100.000% | 100.000%
0.1% | 97.397% | 98.651% | 99.214%
0.5% | 87.294% | 93.357% | 96.254%
1.0% | 76.405% | 87.008% | 92.206%
2.0% | 58.937% | 76.516% | 86.286%
5.0% | 25.698% | 48.738% | 67.198%

2. BER — atomic composite success
parameter | payload 256 | payload 512 | payload 1024
---------:|------------:|------------:|-------------:
0 | 100.000% | 100.000% | 100.000%
1e-07 | 99.413% | 99.524% | 99.357%
3e-07 | 98.222% | 98.476% | 98.492%
1e-06 | 94.111% | 94.714% | 94.754%
3e-06 | 83.905% | 84.373% | 85.397%
1e-05 | 55.357% | 56.722% | 57.770%

3. Burst-loss
scenario | payload | expected loss | observed loss | mean/max burst | composite success | burst distribution
--------:|--------:|--------------:|--------------:|---------------:|------------------:|:------------------
short | 256 | 2.000% | 1.932% | 1.972/12 | 76.111% | 1:1628;2:822;3-4:635;5-8:155;9-16:12;17-32:0;33+:0
short | 512 | 2.000% | 1.853% | 1.903/11 | 86.484% | 1:861;2:429;3-4:318;5-8:67;9-16:3;17-32:0;33+:0
short | 1024 | 2.000% | 1.891% | 1.899/8 | 91.714% | 1:475;2:263;3-4:171;5-8:43;9-16:0;17-32:0;33+:0
medium | 256 | 2.000% | 2.007% | 4.991/30 | 88.333% | 1:258;2:226;3-4:324;5-8:306;9-16:180;17-32:41;33+:0
medium | 512 | 2.000% | 1.909% | 4.890/27 | 93.317% | 1:124;2:121;3-4:178;5-8:142;9-16:87;17-32:21;33+:0
medium | 1024 | 2.000% | 2.016% | 5.084/27 | 95.357% | 1:77;2:57;3-4:100;5-8:77;9-16:53;17-32:15;33+:0
long | 256 | 2.000% | 1.975% | 19.061/116 | 95.405% | 1:22;2:10;3-4:22;5-8:58;9-16:84;17-32:83;33+:65
long | 512 | 2.000% | 1.983% | 19.311/124 | 96.762% | 1:14;2:4;3-4:13;5-8:32;9-16:39;17-32:40;33+:35
long | 1024 | 2.000% | 2.192% | 20.350/124 | 97.198% | 1:12;2:1;3-4:8;5-8:15;9-16:24;17-32:21;33+:22

4. Сравнение payload 256/512/1024
payload | loss 1% success | BER 1e-6 success | medium burst success | Lab028 wire kbit/s
-------:|----------------:|-----------------:|---------------------:|--------------------:
256 | 76.405% | 94.111% | 88.333% | 178.233
512 | 87.008% | 94.714% | 93.317% | 168.396
1024 | 92.206% | 94.754% | 95.357% | 163.662

Интерпретация
- При фиксированной вероятности потери пакета крупный payload уменьшает число обязательных фрагментов. Поскольку потеря любого фрагмента делает объект неполным, меньшее число пакетов обычно повышает шанс полного кадра.
- При фиксированном BER длинный отдельный пакет чаще повреждается: P(error)=1-(1-BER)^(packet_bits). Одновременно крупный payload уменьшает число 32-byte headers и общую длину wire-потока, поэтому итоговый composite success определяется обоими эффектами.
- Атомарная сборка требует одновременной готовности BASE и ROI. Даже полностью собранный BASE не даёт полезного составного кадра без ROI, поэтому composite success ниже успеха каждого объекта отдельно.
- Burst-loss особенно опасен без интерливинга: соседние фрагменты и иногда соседние кадры теряются одной серией, а CRC только обнаруживает ошибку и не восстанавливает данные.
- Payload 256 B даёт наименьшую длину отдельного пакета и наименьшую вероятность BER-повреждения одного пакета, но требует больше всего фрагментов и headers.
- Payload 512 B остаётся умеренным рабочим кандидатом между packet count и длиной отдельного пакета.
- Payload 1024 B даёт минимум пакетов и header overhead в этих моделях, но каждый пакет длиннее и при его потере пропадает более крупный фрагмент JPEG.
- Окончательный packet payload автоматически не выбирается; для решения нужны Lab029 и последующие данные реального радиоканала, FEC/ARQ и задержек.

Артефакты
- CSV: data\processed\lab029\lab029_results.csv
- Independent loss plot: data\processed\lab029\lab029_independent_loss_success.png
- BER plot: data\processed\lab029\lab029_ber_success.png
- Burst plot: data\processed\lab029\lab029_burst_loss_results.png
- Payload comparison: data\processed\lab029\lab029_payload_comparison.png
- JPEG, пакеты и бинарные дампы на диск не сохранялись.
