Skip to content

mediad: lower the frame rate on a weak link, never the resolution - #431

Open
FabienDanieau wants to merge 1 commit into
mainfrom
mediad-no-downscale
Open

FabienDanieau wants to merge 1 commit into
mainfrom
mediad-no-downscale

Conversation

@FabienDanieau

Copy link
Copy Markdown

webrtcsink's default mitigation lowers the resolution below 2 Mbps, which puts a software videoscale in front of mpph264enc. A system-memory frame into mpph264enc is the path that oopsed the board kernel twice; the camera's own buffers are safe. With enable-mitigation-modes=downsampled, a weak link only costs frame rate (videorate drops frames), so the camera buffers still reach the encoder untouched.

Pairs with pollen-robotics/microduck_yocto#59, which lets webrtcsink scale again (the patched plugin had an identity there, so downscaling failed to negotiate).

Tested on the Zero 3W with that bundle and this change on top of 0.17.8: Chrome behind a 600 kbit/s policer kept 1280x720 and settled at 15 fps, no negotiation error, kernel clean. 117 mediad tests pass.

Note: cargo clippy -D warnings fails on Rust 1.99 for reasons already on main (fetch_update deprecated in pipeline.rs/stream.rs, single-element loop at pipeline.rs:2393), not from this change.

馃 Generated with Claude Code

webrtcsink's default mitigation lowers the resolution below 2 Mbps, which
puts a software videoscale in front of mpph264enc. A system-memory frame
into mpph264enc is the path that oopsed the board kernel twice; the
camera's own buffers are safe. videorate only drops frames, so with
enable-mitigation-modes=downsampled those buffers still reach the encoder
untouched.

Measured on the board (720p30 camera, Chrome on the far side of a
600 kbit/s policer): the stream stays 1280x720 and settles at 15 fps,
mediad logs no negotiation error, and the kernel stays clean.

Assisted-by: Claude:claude-opus-5-5
@github-actions

Copy link
Copy Markdown

Coverage

73.87% lines on this branch, against a floor of 70%.

Per-file
Filename                              Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
btd/src/bluez.rs                          533               533     0.00%          35                35     0.00%         346               346     0.00%           0                 0         -
btd/src/chorale.rs                        346               246    28.90%          23                13    43.48%         231               172    25.54%           0                 0         -
btd/src/link.rs                            24                 0   100.00%           3                 0   100.00%          26                 0   100.00%           0                 0         -
btd/src/main.rs                            77                77     0.00%          11                11     0.00%          77                77     0.00%           0                 0         -
btd/src/pairing.rs                        149                 2    98.66%          12                 1    91.67%          81                 1    98.77%           0                 0         -
btd/src/route.rs                          389                37    90.49%          30                 0   100.00%         381                13    96.59%           0                 0         -
btd/src/session.rs                       1218                73    94.01%          71                 5    92.96%         706                41    94.19%           0                 0         -
btd/src/upstream.rs                       397                35    91.18%          34                 8    76.47%         242                19    92.15%           0                 0         -
configd/src/bluez.rs                      586               498    15.02%          85                79     7.06%         375               326    13.07%           0                 0         -
configd/src/identity.rs                    56                 3    94.64%           7                 1    85.71%          30                 3    90.00%           0                 0         -
configd/src/indicator.rs                  105                49    53.33%           8                 4    50.00%          72                27    62.50%           0                 0         -
configd/src/logs.rs                       314                33    89.49%          31                 3    90.32%         219                36    83.56%           0                 0         -
configd/src/main.rs                       525               525     0.00%          38                38     0.00%         349               349     0.00%           0                 0         -
configd/src/net.rs                        246                12    95.12%          38                 2    94.74%         181                 4    97.79%           0                 0         -
configd/src/nm.rs                         271               213    21.40%          43                39     9.30%         171               120    29.82%           0                 0         -
configd/src/pad.rs                        379                13    96.57%          38                 2    94.74%         222                 8    96.40%           0                 0         -
configd/src/power.rs                       30                30     0.00%           6                 6     0.00%          28                28     0.00%           0                 0         -
configd/src/store.rs                      350                25    92.86%          28                 2    92.86%         173                 9    94.80%           0                 0         -
configd/src/units.rs                      183               116    36.61%          24                18    25.00%         116                79    31.90%           0                 0         -
duck-ble/src/adv.rs                       138                 0   100.00%          13                 0   100.00%          65                 0   100.00%           0                 0         -
duck-ble/src/framing.rs                   281                 9    96.80%          25                 1    96.00%         140                 5    96.43%           0                 0         -
duck-ble/src/gatt.rs                        3                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
duck-control/src/bus.rs                   683               547    19.91%          61                46    24.59%         469               382    18.55%           0                 0         -
duck-control/src/fall.rs                  173                 0   100.00%          15                 0   100.00%         108                 0   100.00%           0                 0         -
duck-control/src/imu.rs                   370                 8    97.84%          20                 0   100.00%         195                 5    97.44%           0                 0         -
duck-control/src/io.rs                    160                17    89.38%          29                 5    82.76%         148                17    88.51%           0                 0         -
duck-control/src/model.rs                 156                 2    98.72%          19                 0   100.00%          95                 0   100.00%           0                 0         -
duck-control/src/obs.rs                   283                 6    97.88%          28                 2    92.86%         188                 8    95.74%           0                 0         -
duck-control/src/pickup.rs                400               144    64.00%          35                15    57.14%         265               100    62.26%           0                 0         -
duck-control/src/policy.rs                701               560    20.11%          67                47    29.85%         457               350    23.41%           0                 0         -
duck-control/src/safety.rs                694                15    97.84%          49                 1    97.96%         424                 7    98.35%           0                 0         -
duck-control/src/sim.rs                   464                62    86.64%          34                10    70.59%         249                39    84.34%           0                 0         -
duck-detect/src/bin/duck-bench.rs         306               306     0.00%          16                16     0.00%         170               170     0.00%           0                 0         -
duck-detect/src/lib.rs                    258                 1    99.61%          14                 0   100.00%         149                 0   100.00%           0                 0         -
duck-detect/src/onnx.rs                    96                96     0.00%           5                 5     0.00%          52                52     0.00%           0                 0         -
duck-detect/src/rknn.rs                   267               237    11.24%          15                11    26.67%         216               195     9.72%           0                 0         -
duck-ether/src/main.rs                    504               404    19.84%          27                16    40.74%         270               217    19.63%           0                 0         -
duck-ipc-proto/src/led.rs                 188                 0   100.00%          12                 0   100.00%          74                 0   100.00%           0                 0         -
duck-ipc-proto/src/lib.rs                2338               184    92.13%         156                16    89.74%        1688                97    94.25%           0                 0         -
duck-ipc-proto/src/vetbook.rs             375                54    85.60%          24                 2    91.67%         209                25    88.04%           0                 0         -
duckctl/src/main.rs                      2937              1193    59.38%         175                53    69.71%        1827               767    58.02%           0                 0         -
duckctl/src/udp_pad.rs                   1007               521    48.26%          65                26    60.00%         551               296    46.28%           0                 0         -
duckctl/src/udp_pad/claim.rs              180                13    92.78%          17                 1    94.12%          91                 6    93.41%           0                 0         -
duckctl/src/udp_pad/link.rs               332                15    95.48%          25                 2    92.00%         182                 7    96.15%           0                 0         -
duckctl/src/udp_pad/panel.rs             1287               329    74.44%          60                15    75.00%         715               166    76.78%           0                 0         -
duckctl/src/udp_pad/voice.rs              471               152    67.73%          43                18    58.14%         294                96    67.35%           0                 0         -
duckctl/src/udp_pad/voice/alsa.rs         145               145     0.00%          14                14     0.00%         100               100     0.00%           0                 0         -
kinematics/src/hand.rs                    394                 2    99.49%          22                 2    90.91%         181                 2    98.90%           0                 0         -
kinematics/src/head.rs                    405                 9    97.78%          22                 0   100.00%         196                 4    97.96%           0                 0         -
kinematics/src/lib.rs                     348                10    97.13%          23                 1    95.65%         174                 7    95.98%           0                 0         -
kinematics/src/math.rs                    194                 0   100.00%          16                 0   100.00%          82                 0   100.00%           0                 0         -
kinematics/src/mjcf.rs                    237                32    86.50%          17                 1    94.12%         134                15    88.81%           0                 0         -
kinematics/src/tof.rs                     365                17    95.34%          14                 0   100.00%         190                10    94.74%           0                 0         -
mediad/src/camera.rs                      321                 5    98.44%          23                 0   100.00%         208                 5    97.60%           0                 0         -
mediad/src/config.rs                       87                 5    94.25%           7                 1    85.71%          46                 4    91.30%           0                 0         -
mediad/src/detect.rs                      293               222    24.23%          13                 9    30.77%         200               145    27.50%           0                 0         -
mediad/src/exposure.rs                    564               172    69.50%          37                 8    78.38%         374               122    67.38%           0                 0         -
mediad/src/frame.rs                       683                54    92.09%          35                 1    97.14%         392                18    95.41%           0                 0         -
mediad/src/indicator.rs                    37                25    32.43%           4                 2    50.00%          24                16    33.33%           0                 0         -
mediad/src/main.rs                        445               445     0.00%          14                14     0.00%         293               293     0.00%           0                 0         -
mediad/src/pipeline.rs                   2043              1769    13.41%         135               108    20.00%        1317              1124    14.65%           0                 0         -
mediad/src/producer.rs                    183                34    81.42%          22                 5    77.27%         137                21    84.67%           0                 0         -
mediad/src/relay.rs                      2391               244    89.80%         189                28    85.19%        1623               176    89.16%           0                 0         -
mediad/src/route.rs                       185                19    89.73%          12                 0   100.00%         160                 8    95.00%           0                 0         -
mediad/src/sensor.rs                      288                15    94.79%          24                 2    91.67%         166                 9    94.58%           0                 0         -
mediad/src/session.rs                     675                21    96.89%          37                 0   100.00%         425                18    95.76%           0                 0         -
mediad/src/snapshot.rs                    174                15    91.38%          10                 0   100.00%         108                 2    98.15%           0                 0         -
mediad/src/stream.rs                      836               136    83.73%          54                10    81.48%         529                91    82.80%           0                 0         -
mediad/src/turn.rs                        487                32    93.43%          44                 3    93.18%         299                17    94.31%           0                 0         -
mediad/src/upstream.rs                    263                16    93.92%          17                 1    94.12%         160                12    92.50%           0                 0         -
mediad/src/vetbook.rs                      77                60    22.08%           7                 4    42.86%          43                33    23.26%           0                 0         -
mediad/src/web.rs                         340                30    91.18%          28                 4    85.71%         218                19    91.28%           0                 0         -
netpadd/src/health.rs                     209                58    72.25%          16                 2    87.50%         105                31    70.48%           0                 0         -
netpadd/src/main.rs                      1252               140    88.82%          77                 7    90.91%         687                89    87.05%           0                 0         -
netpadd/src/receiver.rs                  1140                 6    99.47%          41                 0   100.00%         435                 4    99.08%           0                 0         -
netpadd/src/robotd.rs                      91                22    75.82%          15                 3    80.00%          61                11    81.97%           0                 0         -
nfc/src/clrc663.rs                        217               217     0.00%          15                15     0.00%         147               147     0.00%           0                 0         -
nfc/src/lib.rs                             27                27     0.00%           3                 3     0.00%          16                16     0.00%           0                 0         -
nfc/src/main.rs                           337               337     0.00%          23                23     0.00%         186               186     0.00%           0                 0         -
nfc/src/ndef.rs                           326                49    84.97%          25                 5    80.00%         168                24    85.71%           0                 0         -
nfc/src/pairing.rs                        172                 8    95.35%          12                 0   100.00%         109                 4    96.33%           0                 0         -
nfc/src/reader.rs                          12                 0   100.00%           3                 0   100.00%          19                 0   100.00%           0                 0         -
nfc/src/serial.rs                         125               125     0.00%           6                 6     0.00%          81                81     0.00%           0                 0         -
nfc/src/spi.rs                             78                78     0.00%           4                 4     0.00%          46                46     0.00%           0                 0         -
nfc/src/st25r100.rs                       516               134    74.03%          30                 7    76.67%         254                66    74.02%           0                 0         -
nfc/src/tag.rs                            134               134     0.00%           4                 4     0.00%          80                80     0.00%           0                 0         -
nfc/src/transport.rs                      182                29    84.07%          16                 4    75.00%          96                12    87.50%           0                 0         -
odometry/src/anchors.rs                     5                 0   100.00%           1                 0   100.00%           3                 0   100.00%           0                 0         -
odometry/src/lib.rs                       445                80    82.02%          28                 5    82.14%         254                50    80.31%           0                 0         -
pad-imu/src/lib.rs                        608                 7    98.85%          39                 0   100.00%         372                 5    98.66%           0                 0         -
pad-map/src/bindings.rs                   127                 9    92.91%           6                 0   100.00%          80                 5    93.75%           0                 0         -
pad-map/src/buttons.rs                     29                 0   100.00%           5                 0   100.00%          20                 0   100.00%           0                 0         -
pad-map/src/continuous.rs                 207                 0   100.00%          17                 0   100.00%         114                 0   100.00%           0                 0         -
pad-map/src/hold.rs                       253                 1    99.60%          11                 0   100.00%         123                 1    99.19%           0                 0         -
pad-map/src/lib.rs                         35                 0   100.00%           2                 0   100.00%          19                 0   100.00%           0                 0         -
pad-map/src/loss.rs                       214                 4    98.13%          18                 0   100.00%         129                 2    98.45%           0                 0         -
pad-map/src/mapper.rs                     879                89    89.87%          40                 3    92.50%         608                81    86.68%           0                 0         -
pad-map/src/wire.rs                       395                30    92.41%          32                 2    93.75%         302                17    94.37%           0                 0         -
padd/src/main.rs                          445               420     5.62%          21                20     4.76%         242               232     4.13%           0                 0         -
padd/src/tap.rs                          1311               681    48.05%          74                36    51.35%         790               407    48.48%           0                 0         -
pet-detect/src/bin/detect.rs               61                61     0.00%           1                 1     0.00%          38                38     0.00%           0                 0         -
pet-detect/src/bin/features.rs             46                46     0.00%           2                 2     0.00%          20                20     0.00%           0                 0         -
pet-detect/src/lib.rs                     362               184    49.17%          27                13    51.85%         224               122    45.54%           0                 0         -
pet-detect/src/worker.rs                  381               230    39.63%          24                14    41.67%         276               160    42.03%           0                 0         -
robotctl/src/camera.rs                    350                 9    97.43%          20                 0   100.00%         163                 3    98.16%           0                 0         -
robotctl/src/cells.rs                      43                 1    97.67%           2                 0   100.00%          22                 1    95.45%           0                 0         -
robotctl/src/configure.rs                1637               480    70.68%          62                12    80.65%         849               324    61.84%           0                 0         -
robotctl/src/duck.rs                     1172               143    87.80%          63                 1    98.41%         586                46    92.15%           0                 0         -
robotctl/src/frame.rs                     231                13    94.37%           9                 0   100.00%         129                 1    99.22%           0                 0         -
robotctl/src/imu_view.rs                  266                25    90.60%          19                 2    89.47%         173                19    89.02%           0                 0         -
robotctl/src/led.rs                       339                61    82.01%          23                 3    86.96%         163                23    85.89%           0                 0         -
robotctl/src/main.rs                     6473              3059    52.74%         372               147    60.48%        4434              2065    53.43%           0                 0         -
robotctl/src/monitor.rs                  4736               806    82.98%         238                38    84.03%        2994               520    82.63%           0                 0         -
robotctl/src/path_map.rs                  425                59    86.12%          24                 2    91.67%         223                36    83.86%           0                 0         -
robotctl/src/show.rs                      714                46    93.56%          31                 1    96.77%         509                25    95.09%           0                 0         -
robotctl/src/vetbook.rs                  2602               479    81.59%         106                20    81.13%        1438               292    79.69%           0                 0         -
robotd-params/src/board.rs                255                26    89.80%          29                 3    89.66%         167                13    92.22%           0                 0         -
robotd-params/src/edit.rs                2069               121    94.15%         119                14    88.24%        1016                52    94.88%           0                 0         -
robotd-params/src/lib.rs                 2739               107    96.09%         225                 9    96.00%        1963                65    96.69%           0                 0         -
robotd-params/src/pad_axes.rs             158                 0   100.00%          16                 0   100.00%         131                 0   100.00%           0                 0         -
robotd-params/src/registry.rs             214                11    94.86%          17                 2    88.24%         161                19    88.20%           0                 0         -
robotd-params/src/serial.rs               174                 9    94.83%          15                 1    93.33%          83                 6    92.77%           0                 0         -
robotd/src/chorale.rs                    1366                30    97.80%          71                 4    94.37%         826                20    97.58%           0                 0         -
robotd/src/control.rs                     734               695     5.31%          47                42    10.64%         533               485     9.01%           0                 0         -
robotd/src/head_imu.rs                    655               289    55.88%          42                12    71.43%         351               161    54.13%           0                 0         -
robotd/src/idle_head.rs                   658                 5    99.24%          45                 0   100.00%         369                 1    99.73%           0                 0         -
robotd/src/intents.rs                     434                74    82.95%          50                 9    82.00%         316                49    84.49%           0                 0         -
robotd/src/leds.rs                        301                96    68.11%          25                 3    88.00%         182                41    77.47%           0                 0         -
robotd/src/main.rs                       9193              1784    80.59%         457                69    84.90%        5850              1148    80.38%           0                 0         -
robotd/src/pickup.rs                      298                22    92.62%          23                 4    82.61%         205                23    88.78%           0                 0         -
robotd/src/posture.rs                     133                 1    99.25%          11                 0   100.00%          77                 1    98.70%           0                 0         -
robotd/src/soc.rs                         413                47    88.62%          22                 2    90.91%         182                29    84.07%           0                 0         -
robotd/src/sound.rs                       975               696    28.62%          51                34    33.33%         572               423    26.05%           0                 0         -
robotd/src/theremin.rs                    472               112    76.27%          32                12    62.50%         271                64    76.38%           0                 0         -
robotd/src/vetbook.rs                    1188                80    93.27%          57                 4    92.98%         720                40    94.44%           0                 0         -
sounds/src/chorale/beat.rs                403                16    96.03%          26                 1    96.15%         246                12    95.12%           0                 0         -
sounds/src/chorale/midi.rs               1047                80    92.36%          44                 2    95.45%         581                43    92.60%           0                 0         -
sounds/src/chorale/mod.rs                1423                57    95.99%          83                 3    96.39%         812                41    94.95%           0                 0         -
sounds/src/chorale/text.rs                700                60    91.43%          41                12    70.73%         376                17    95.48%           0                 0         -
sounds/src/lib.rs                         162                30    81.48%          12                 4    66.67%          81                15    81.48%           0                 0         -
sounds/src/main.rs                        463               463     0.00%          20                20     0.00%         240               240     0.00%           0                 0         -
sounds/src/personality.rs                 174                 0   100.00%           6                 0   100.00%          84                 0   100.00%           0                 0         -
sounds/src/rng.rs                         173                 0   100.00%          18                 0   100.00%          96                 0   100.00%           0                 0         -
sounds/src/stream.rs                      719                 7    99.03%          46                 1    97.83%         420                 6    98.57%           0                 0         -
sounds/src/synth.rs                       353                 7    98.02%          29                 0   100.00%         197                 3    98.48%           0                 0         -
sounds/src/voices.rs                      679                 2    99.71%          26                 0   100.00%         353                 2    99.43%           0                 0         -
test-support/src/lib.rs                   272                 2    99.26%          22                 0   100.00%         167                 0   100.00%           0                 0         -
tof/src/config.rs                          48                 8    83.33%           4                 1    75.00%          27                 7    74.07%           0                 0         -
tof/src/imu.rs                            232               162    30.17%          11                 6    45.45%         142                98    30.99%           0                 0         -
tof/src/lib.rs                             88                 0   100.00%           9                 0   100.00%          54                 0   100.00%           0                 0         -
tof/src/link.rs                           121                 0   100.00%          10                 0   100.00%          88                 0   100.00%           0                 0         -
tof/src/main.rs                          1188               691    41.84%          56                23    58.93%         756               434    42.59%           0                 0         -
tof/src/sensor.rs                         254               166    34.65%          23                16    30.43%         185               125    32.43%           0                 0         -
tof/src/status.rs                          76                 2    97.37%           7                 1    85.71%          58                 1    98.28%           0                 0         -
updater/src/account.rs                     93                 5    94.62%          10                 1    90.00%          79                 3    96.20%           0                 0         -
updater/src/config.rs                     545                25    95.41%          46                 4    91.30%         450                17    96.22%           0                 0         -
updater/src/engine.rs                    3451               506    85.34%         229                31    86.46%        2225               327    85.30%           0                 0         -
updater/src/faults.rs                      71                 8    88.73%           7                 0   100.00%          52                 0   100.00%           0                 0         -
updater/src/fsutil.rs                     104                30    71.15%          10                 6    40.00%          51                24    52.94%           0                 0         -
updater/src/hooks.rs                      492                16    96.75%          40                 2    95.00%         416                13    96.88%           0                 0         -
updater/src/ipc.rs                        952               351    63.13%          69                21    69.57%         589               186    68.42%           0                 0         -
updater/src/journal.rs                   1087                85    92.18%          74                11    85.14%         592                55    90.71%           0                 0         -
updater/src/lib.rs                         55                16    70.91%           5                 0   100.00%          41                14    65.85%           0                 0         -
updater/src/main.rs                       560               232    58.57%          39                15    61.54%         429               160    62.70%           0                 0         -
updater/src/manifest.rs                   159                 6    96.23%          16                 0   100.00%         110                 1    99.09%           0                 0         -
updater/src/orphan.rs                     288                 6    97.92%          25                 0   100.00%         181                 3    98.34%           0                 0         -
updater/src/policy.rs                    1883               698    62.93%         159                60    62.26%        1006               386    61.63%           0                 0         -
updater/src/preflight.rs                  382                16    95.81%          47                 4    91.49%         284                11    96.13%           0                 0         -
updater/src/reconcile.rs                  292                15    94.86%          25                 3    88.00%         172                 5    97.09%           0                 0         -
updater/src/robot.rs                      297                35    88.22%          43                10    76.74%         198                22    88.89%           0                 0         -
updater/src/source/github.rs              699               123    82.40%          81                21    74.07%         492                69    85.98%           0                 0         -
updater/src/source/hf_hub.rs              136                72    47.06%          20                12    40.00%          81                41    49.38%           0                 0         -
updater/src/source/http.rs                391                87    77.75%          35                11    68.57%         309                92    70.23%           0                 0         -
updater/src/source/local.rs               346                33    90.46%          36                 8    77.78%         192                23    88.02%           0                 0         -
updater/src/source/mod.rs                  39                30    23.08%           4                 2    50.00%          30                24    20.00%           0                 0         -
updater/src/spawn.rs                       94                13    86.17%           5                 0   100.00%          49                 4    91.84%           0                 0         -
updater/src/store.rs                      593                41    93.09%          43                 7    83.72%         271                42    84.50%           0                 0         -
updater/src/transcript.rs                 518                42    91.89%          31                 3    90.32%         290                22    92.41%           0                 0         -
updater/src/unix.rs                        44                 3    93.18%           3                 0   100.00%          22                 2    90.91%           0                 0         -
updater/src/verify.rs                     786                95    87.91%          55                18    67.27%         424                75    82.31%           0                 0         -
updater/src/vetbook.rs                    408                66    83.82%          34                10    70.59%         285                54    81.05%           0                 0         -
uyvy/src/lib.rs                           383                14    96.34%          13                 0   100.00%         184                 8    95.65%           0                 0         -
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                  109451             27943    74.47%        7113              1772    75.09%       67328             17595    73.87%           0                 0         -

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant