rpicamsrc: Implement dynamic bitrate update
authorJan Schmidt <thaytan@noraisin.net>
Fri, 27 Jan 2017 01:58:29 +0000 (12:58 +1100)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 10 Jul 2020 15:45:54 +0000 (16:45 +0100)
Use mmal_port_set_parameter_uint32 to update the encoder
bitrate.

Fixes https://github.com/thaytan/gst-rpicamsrc/issues/60

sys/rpicamsrc/RaspiCapture.c

index 8065e70..c50ef99 100644 (file)
@@ -1908,13 +1908,9 @@ raspi_capture_update_config (RASPIVID_STATE *state, RASPIVID_CONFIG *config, gbo
     MMAL_COMPONENT_T *encoder = state->encoder_component;
     MMAL_PORT_T *encoder_output = encoder->output[0];
 
-#if 0 /* not dynamically change-able */
-    encoder_output->format->bitrate = config->bitrate;
-    status = mmal_port_format_commit(encoder_output);
-    if (status != MMAL_SUCCESS) {
-      vcos_log_warn("Cannot change bitrate dynamically");
-    }
-#endif
+    status = mmal_port_parameter_set_uint32(encoder_output, MMAL_PARAMETER_VIDEO_BIT_RATE, config->bitrate);
+    if (status != MMAL_SUCCESS)
+      vcos_log_warn("Unable to change bitrate dynamically");
 
     {
       MMAL_PARAMETER_UINT32_T param = {{ MMAL_PARAMETER_INTRAPERIOD, sizeof(param)}, config->intraperiod};