MCPcopy Create free account
hub / github.com/OpenHD/OpenHD / handle_change_bitrate_request

Method handle_change_bitrate_request

OpenHD/ohd_video/src/gstreamerstream.cpp:389–417  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

387void GStreamerStream::request_restart() { m_request_restart = true; }
388
389void GStreamerStream::handle_change_bitrate_request(
390 openhd::LinkActionHandler::LinkBitrateInformation lb) {
391 // m_console->debug("handle_change_bitrate_request prev: {} new:{}",
392 // kbits_per_second_to_string(m_curr_dynamic_bitrate_kbits),
393 // kbits_per_second_to_string(lb.recommended_encoder_bitrate_kbits));
394 // We do some safety checks first - the link might recommend too much / too
395 // little
396 auto bitrate_for_encoder_kbits = lb.recommended_encoder_bitrate_kbits;
397 static auto MIN_BITRATE_KBITS = 1 * 1000;
398 // RPi cannot do less than 2MBit/s
399 if (OHDPlatform::instance().is_rpi()) {
400 MIN_BITRATE_KBITS = 2 * 1000;
401 }
402 if (bitrate_for_encoder_kbits < MIN_BITRATE_KBITS) {
403 // m_console->debug("Cam cannot do <{}",
404 // kbits_per_second_to_string(MIN_BITRATE_KBITS));
405 bitrate_for_encoder_kbits = MIN_BITRATE_KBITS;
406 }
407 // The gst thread is responsible for changing the bitrate - it will be applied
408 // (as long as the cam is not bugged or the OS is overloaded) after a max
409 // delay of 40ms
410 m_curr_dynamic_bitrate_kbits = bitrate_for_encoder_kbits;
411 if (m_camera_holder->get_settings().h26x_bitrate_kbits !=
412 bitrate_for_encoder_kbits) {
413 m_camera_holder->unsafe_get_settings().h26x_bitrate_kbits =
414 bitrate_for_encoder_kbits;
415 m_camera_holder->persist(false);
416 }
417}
418
419void GStreamerStream::handle_update_arming_state(bool armed) {
420 m_console->debug("handle_update_arming_state: {}", armed);

Callers

nothing calls this directly

Calls 2

is_rpiMethod · 0.80
persistMethod · 0.80

Tested by

no test coverage detected