Lab029B: simulate time-based burst losses
This commit is contained in:
@@ -75,3 +75,24 @@ git version 2.51.1.windows.1
|
|||||||
- Подтверждены packet CRC32, изоляция соседних кадров и атомарная сборка BASE + ROI.
|
- Подтверждены packet CRC32, изоляция соседних кадров и атомарная сборка BASE + ROI.
|
||||||
- Зафиксировано ограничение пакетной временной шкалы Lab029.
|
- Зафиксировано ограничение пакетной временной шкалы Lab029.
|
||||||
- Сравнение помех одинаковой физической длительности перенесено в Lab029B.
|
- Сравнение помех одинаковой физической длительности перенесено в Lab029B.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Запись 004
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
27 июля 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Завершение Lab029B: временная модель серийных потерь.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
- Помехи смоделированы на непрерывной временной шкале.
|
||||||
|
- Контрольная скорость передачи установлена равной 300 кбит/с.
|
||||||
|
- Исследованы средние длительности Bad 10, 50, 200 и 1000 мс.
|
||||||
|
- Payload 512 байт выбран для дальнейшей разработки.
|
||||||
|
- Payload 1024 байта оставлен резервным вариантом.
|
||||||
|
- Подтверждено, что без исправления ошибок возможны длительные прерывания видеопотока.
|
||||||
|
|||||||
BIN
data/processed/lab029b/lab029b_composite_success.png
Normal file
BIN
data/processed/lab029b/lab029b_composite_success.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 100 KiB |
BIN
data/processed/lab029b/lab029b_missing_frame_runs.png
Normal file
BIN
data/processed/lab029b/lab029b_missing_frame_runs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
BIN
data/processed/lab029b/lab029b_no_image_duration.png
Normal file
BIN
data/processed/lab029b/lab029b_no_image_duration.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
BIN
data/processed/lab029b/lab029b_payload_comparison.png
Normal file
BIN
data/processed/lab029b/lab029b_payload_comparison.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
74
data/processed/lab029b/lab029b_report.txt
Normal file
74
data/processed/lab029b/lab029b_report.txt
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
Lab029B. Временная модель серийных потерь видеопакетов
|
||||||
|
|
||||||
|
Исходные данные и транспорт
|
||||||
|
- Видео: data\raw\lab026_rover_source.mp4
|
||||||
|
- Источник: 1280x720, 30.000000 fps, 623 кадров, 20.766667 с.
|
||||||
|
- Использованы все 63 реальные пары: BASE 240x135 grayscale JPEG Q23, ROI 320x180 grayscale JPEG Q33, 3 составных кадра/с.
|
||||||
|
- Формат Lab028 не изменён: заголовок 32 байта, packet CRC32, object CRC32, отдельные BASE/ROI, атомарный CompositeReassembler.
|
||||||
|
- Порядок передачи внутри кадра: сначала все BASE-фрагменты, затем все ROI-фрагменты. Поэтому длительная помеха может затрагивать объекты несимметрично.
|
||||||
|
|
||||||
|
Временная модель передачи
|
||||||
|
- Контрольная скорость: 300 кбит/с. Это параметр лабораторной, а не выбранная скорость радиоканала.
|
||||||
|
- Длительность пакета = фактическая длина (32-byte header + фактический payload) × 8 / 300000.
|
||||||
|
- Кадр доступен в момент frame_id / 3. Пакеты BASE и ROI передаются подряд; искусственных межпакетных интервалов нет. Остаток периода до следующего кадра является естественным idle.
|
||||||
|
- Payload 256: packets=1660, timeline=20.881627 с, packet duration min/max=0.986667/7.680000 мс.
|
||||||
|
- Payload 512: packets=862, timeline=20.869680 с, packet duration min/max=1.093333/14.506667 мс.
|
||||||
|
- Payload 1024: packets=478, timeline=20.863707 с, packet duration min/max=1.093333/28.160000 мс.
|
||||||
|
|
||||||
|
Временная модель канала
|
||||||
|
- Good пропускает пакеты, Bad теряет пакеты. Длительности состояний независимы и экспоненциально распределены.
|
||||||
|
- Целевая стационарная доля Bad: 2.0%.
|
||||||
|
- mean Good = mean Bad × (1-0.02)/0.02 = 49 × mean Bad.
|
||||||
|
- Консервативное допущение: пакет считается потерянным, если хотя бы часть его передачи пересекается с Bad.
|
||||||
|
- Monte Carlo: 200 повторов на условие; master seed=290290; seeds 290290...290293.
|
||||||
|
- Один seed для одинаковой длительности повторно используется для payload 256/512/1024.
|
||||||
|
|
||||||
|
Параметры состояний
|
||||||
|
mean Bad | mean Good | target Bad
|
||||||
|
--------:|----------:|----------:
|
||||||
|
10 мс | 490 мс | 2.0%
|
||||||
|
50 мс | 2450 мс | 2.0%
|
||||||
|
200 мс | 9800 мс | 2.0%
|
||||||
|
1000 мс | 49000 мс | 2.0%
|
||||||
|
|
||||||
|
Функциональные проверки
|
||||||
|
- PASS zero_bad_state_100_percent: all 63 composite frames restored for all payloads
|
||||||
|
- PASS fixed_seed_reproducibility: identical seed produced identical aggregate fields
|
||||||
|
- PASS adjacent_frame_isolation: two interleaved neighboring frames remained independent
|
||||||
|
- PASS atomic_incomplete_frame: missing ROI fragment prevented atomic publication
|
||||||
|
- PASS stationary_bad_fraction: all observed Bad fractions are within 0.323 percentage points of 2%
|
||||||
|
- PASS longer_bad_longer_outage: mean held-image interval increased from 0.819350 to 1.295846 s
|
||||||
|
- PASS actual_packet_transmission_time: duration equals actual wire bits / 300000 for full and short final packets
|
||||||
|
|
||||||
|
Полная сравнительная таблица
|
||||||
|
Bad ms | payload | Bad actual | tx/rx/lost packets | packet delivery | BASE | ROI | composite | BASE-only | ROI-only | incomplete | lost burst mean/p95/max | incomplete run mean/p95/max | no image mean/p95/max s | recovery mean/p95/max s | video kbit/s
|
||||||
|
------:|--------:|-----------:|-------------------:|----------------:|-----:|----:|----------:|----------:|---------:|-----------:|-----------------------:|----------------------------:|-------------------------:|------------------------:|------------:
|
||||||
|
10 | 256 | 2.016% | 332000/320339/11661 | 96.488% | 84.611% | 75.659% | 65.357% | 2426 | 1298 | 4365 | 2.27/5.0/13 | 1.52/3.0/10 | 0.831/1.350/3.650 | 0.547/1.180/3.364 | 102.487
|
||||||
|
10 | 512 | 2.008% | 172400/164214/8186 | 95.252% | 85.183% | 77.008% | 66.968% | 2295 | 1265 | 4162 | 1.72/3.0/8 | 1.48/3.0/10 | 0.815/1.343/3.651 | 0.521/1.131/3.353 | 105.043
|
||||||
|
10 | 1024 | 2.022% | 95600/89121/6479 | 93.223% | 85.595% | 76.984% | 67.397% | 2293 | 1208 | 4108 | 1.43/3.0/6 | 1.47/3.0/10 | 0.812/1.339/3.651 | 0.513/1.115/3.348 | 105.783
|
||||||
|
50 | 256 | 2.041% | 332000/324191/7809 | 97.648% | 95.333% | 92.960% | 90.405% | 621 | 322 | 1209 | 6.43/17.3/37 | 1.10/2.0/3 | 0.694/1.001/1.348 | 0.441/0.727/1.207 | 141.796
|
||||||
|
50 | 512 | 2.083% | 172400/167870/4530 | 97.372% | 95.492% | 93.198% | 90.889% | 580 | 291 | 1148 | 3.94/10.0/19 | 1.10/2.0/3 | 0.693/1.000/1.348 | 0.428/0.714/1.196 | 142.643
|
||||||
|
50 | 1024 | 2.046% | 95600/92757/2843 | 97.026% | 95.619% | 93.421% | 91.095% | 570 | 293 | 1122 | 2.55/6.0/12 | 1.10/2.0/3 | 0.691/1.000/1.348 | 0.422/0.702/1.191 | 143.006
|
||||||
|
200 | 256 | 1.854% | 332000/325460/6540 | 98.030% | 97.540% | 96.762% | 96.230% | 165 | 67 | 475 | 17.82/49.0/80 | 1.32/3.0/4 | 0.765/1.312/1.657 | 0.547/0.970/1.468 | 150.968
|
||||||
|
200 | 512 | 1.854% | 172400/168900/3500 | 97.970% | 97.579% | 96.857% | 96.333% | 157 | 66 | 462 | 9.72/26.0/41 | 1.31/3.0/4 | 0.761/1.158/1.657 | 0.536/0.959/1.456 | 151.215
|
||||||
|
200 | 1024 | 1.854% | 95600/93582/2018 | 97.889% | 97.627% | 96.905% | 96.381% | 157 | 66 | 456 | 5.70/15.0/24 | 1.31/3.0/4 | 0.762/1.228/1.658 | 0.531/0.954/1.451 | 151.334
|
||||||
|
1000 | 256 | 1.678% | 332000/326429/5571 | 98.322% | 98.143% | 98.008% | 97.802% | 43 | 26 | 277 | 59.27/172.4/403 | 2.98/7.4/16 | 1.302/2.809/5.665 | 1.087/2.487/5.585 | 153.470
|
||||||
|
1000 | 512 | 1.678% | 172400/169489/2911 | 98.311% | 98.143% | 98.048% | 97.841% | 38 | 26 | 272 | 31.30/91.6/210 | 2.96/7.5/16 | 1.295/2.826/5.665 | 1.077/2.476/5.576 | 153.618
|
||||||
|
1000 | 1024 | 1.677% | 95600/93965/1635 | 98.290% | 98.143% | 98.079% | 97.873% | 34 | 26 | 268 | 17.77/50.9/116 | 2.95/7.5/16 | 1.291/2.843/5.665 | 1.071/2.471/5.571 | 153.712
|
||||||
|
|
||||||
|
Допущения и ограничения
|
||||||
|
- Не моделируются FEC, интерливинг, ARQ, повторные передачи, искусственные межпакетные интервалы, преамбула физического уровня, управление и телеметрия.
|
||||||
|
- Bad-интервалы не зависят от границ пакетов; любое частичное пересечение уничтожает пакет целиком.
|
||||||
|
- no-new-image duration для серии невосстановленных кадров измеряется от публикации предыдущего полного кадра до публикации следующего; при краевых сериях используются начало и конец временной шкалы.
|
||||||
|
- interference-to-next-frame измеряется от начала каждого Bad-интервала до первого следующего опубликованного составного кадра или до конца шкалы.
|
||||||
|
- Эффективный видеопоток учитывает JPEG bytes только атомарно восстановленных BASE+ROI и полную длительность расписания.
|
||||||
|
- Результаты зависят от порядка BASE затем ROI и от контрольной скорости 300 кбит/с.
|
||||||
|
- Окончательный размер payload автоматически не выбирается.
|
||||||
|
|
||||||
|
Артефакты
|
||||||
|
- CSV: data\processed\lab029b\lab029b_results.csv
|
||||||
|
- Composite success: data\processed\lab029b\lab029b_composite_success.png
|
||||||
|
- No-new-image duration: data\processed\lab029b\lab029b_no_image_duration.png
|
||||||
|
- Missing frame runs: data\processed\lab029b\lab029b_missing_frame_runs.png
|
||||||
|
- Payload comparison: data\processed\lab029b\lab029b_payload_comparison.png
|
||||||
|
- JPEG, пакеты и бинарные дампы не сохранялись.
|
||||||
13
data/processed/lab029b/lab029b_results.csv
Normal file
13
data/processed/lab029b/lab029b_results.csv
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
payload_size,mean_bad_duration_ms,mean_good_duration_ms,target_bad_time_fraction,actual_bad_time_fraction,control_stream_bitrate_kbps,schedule_duration_seconds,monte_carlo_repetitions,seed,transmitted_packets,received_packets,lost_packets,packet_delivery_rate,base_objects_completed,base_object_success_rate,roi_objects_completed,roi_object_success_rate,atomic_composite_frames_completed,composite_success_rate,base_only_frames,roi_only_frames,incomplete_frames,mean_lost_packet_burst,p95_lost_packet_burst,max_lost_packet_burst,mean_consecutive_incomplete_frames,p95_consecutive_incomplete_frames,max_consecutive_incomplete_frames,mean_no_new_image_duration_seconds,p95_no_new_image_duration_seconds,max_no_new_image_duration_seconds,mean_interference_to_next_frame_seconds,p95_interference_to_next_frame_seconds,max_interference_to_next_frame_seconds,effective_delivered_video_bitrate_kbps,bad_interval_count,actual_mean_bad_duration_ms,actual_p95_bad_duration_ms,actual_max_bad_duration_ms
|
||||||
|
256,10,490,0.02,0.0201609958077,300,20.8816266667,200,290290,332000,320339,11661,0.964876506024,10661,0.846111111111,9533,0.756587301587,8235,0.653571428571,2426,1298,4365,2.27442949093,5,13,1.52409217877,3,10,0.831002299814,1.35024,3.64970666667,0.546677484673,1.18029690393,3.36407888773,102.486509991,8442,9.97380686292,29.8125428395,83.5331876125
|
||||||
|
512,10,490,0.02,0.0200817045481,300,20.86968,200,290290,172400,164214,8186,0.952517401392,10733,0.851825396825,9703,0.770079365079,8438,0.669682539683,2295,1265,4162,1.72409435552,3,8,1.47903340441,3,10,0.814651021085,1.34314,3.65056,0.521191488299,1.13097049803,3.3529855544,105.043418011,8411,9.96549156518,29.9160688622,83.5331876125
|
||||||
|
1024,10,490,0.02,0.0202168068758,300,20.8637066667,200,290290,95600,89121,6479,0.932228033473,10785,0.855952380952,9700,0.769841269841,8492,0.673968253968,2293,1208,4108,1.43467670505,3,6,1.46976744186,3,10,0.812397042338,1.33936,3.65141333333,0.512839823089,1.11539721678,3.3478655544,105.78281392,8446,9.98810154849,29.7582896487,83.5331876125
|
||||||
|
256,50,2450,0.02,0.0204084786408,300,20.8816266667,200,290291,332000,324191,7809,0.976478915663,12012,0.953333333333,11713,0.929603174603,11391,0.904047619048,621,322,1209,6.42716049383,17.3,37,1.10209662716,2,3,0.693585900942,1.00062933333,1.34818666667,0.440632357759,0.727111920855,1.20734749202,141.795746436,1677,50.8243568053,152.864106144,405.431274995
|
||||||
|
512,50,2450,0.02,0.0208318699816,300,20.86968,200,290291,172400,167870,4530,0.973723897912,12032,0.954920634921,11743,0.931984126984,11452,0.908888888889,580,291,1148,3.93913043478,10,19,1.1027857829,2,3,0.693375395453,1.00016,1.34818666667,0.427559832342,0.714012825361,1.19625415869,142.643151213,1691,51.4198060694,156.002187328,405.431274995
|
||||||
|
1024,50,2450,0.02,0.0204619230445,300,20.8637066667,200,290291,95600,92757,2843,0.970261506276,12048,0.95619047619,11771,0.934206349206,11478,0.910952380952,570,293,1122,2.54749103943,6,12,1.095703125,2,3,0.691450052083,1.00014,1.34818666667,0.422249750197,0.702414015204,1.19113415869,143.006280124,1677,50.913722151,152.938028086,405.431274995
|
||||||
|
256,200,9800,0.02,0.0185410363364,300,20.8816266667,200,290292,332000,325460,6540,0.980301204819,12290,0.975396825397,12192,0.967619047619,12125,0.962301587302,165,67,475,17.8201634877,49,80,1.32311977716,3,4,0.765005088208,1.312048,1.65677333333,0.546872959401,0.96963489665,1.46756878424,150.967631513,414,187.037197483,563.305764922,989.194024493
|
||||||
|
512,200,9800,0.02,0.0185430633718,300,20.86968,200,290292,172400,168900,3500,0.97969837587,12295,0.975793650794,12204,0.968571428571,12138,0.963333333333,157,66,462,9.72222222222,26,41,1.3125,3,4,0.761154924242,1.15764533333,1.65677333333,0.536053764553,0.95939489665,1.45647545091,151.21462907,414,186.950627434,563.305764922,989.194024493
|
||||||
|
1024,200,9800,0.02,0.01854407776,300,20.8637066667,200,290292,95600,93582,2018,0.978891213389,12301,0.97626984127,12210,0.969047619048,12144,0.96380952381,157,66,456,5.70056497175,15,24,1.31412103746,3,4,0.761923535062,1.227696,1.65762666667,0.530838949739,0.95427489665,1.45135545091,151.334042912,414,186.90734241,563.305764922,989.194024493
|
||||||
|
256,1000,49000,0.02,0.0167841318375,300,20.8816266667,200,290293,332000,326429,5571,0.983219879518,12366,0.981428571429,12349,0.980079365079,12323,0.978015873016,43,26,277,59.2659574468,172.45,403,2.97849462366,7.4,16,1.30231827957,2.80936533333,5.66493333333,1.08734051838,2.48701382037,5.58511553493,153.469720111,97,722.639123618,2207.25170213,5246.24764036
|
||||||
|
512,1000,49000,0.02,0.0167765665288,300,20.86968,200,290293,172400,169489,2911,0.983114849188,12366,0.981428571429,12354,0.980476190476,12328,0.978412698413,38,26,272,31.3010752688,91.6,210,2.95652173913,7.45,16,1.29471797101,2.82593466667,5.66493333333,1.07655508883,2.47643248703,5.57572886827,153.618205933,97,721.900154546,2207.25170213,5246.24764036
|
||||||
|
1024,1000,49000,0.02,0.0167727806255,300,20.8637066667,200,290293,95600,93965,1635,0.98289748954,12366,0.981428571429,12358,0.980793650794,12332,0.97873015873,34,26,268,17.7717391304,50.85,116,2.94505494505,7.5,16,1.2905010989,2.84318666667,5.66493333333,1.07132952182,2.47131248703,5.57060886827,153.711503485,97,721.53067001,2207.25170213,5246.24764036
|
||||||
|
1378
tests/lab029b_time_based_burst_simulation.py
Normal file
1378
tests/lab029b_time_based_burst_simulation.py
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user