diff --git a/pmomediarenderer/src/avtransport/actions/gettransportinfo.rs b/pmomediarenderer/src/avtransport/actions/gettransportinfo.rs index cbca3a4e..38e500dc 100644 --- a/pmomediarenderer/src/avtransport/actions/gettransportinfo.rs +++ b/pmomediarenderer/src/avtransport/actions/gettransportinfo.rs @@ -1,4 +1,6 @@ -use crate::avtransport::variables::{A_ARG_TYPE_INSTANCE_ID, TRANSPORTSTATE, TRANSPORTSTATUS}; +use crate::avtransport::variables::{ + A_ARG_TYPE_INSTANCE_ID, TRANSPORTPLAYSPEED, TRANSPORTSTATE, TRANSPORTSTATUS, +}; use pmoupnp::define_action; define_action! { @@ -6,5 +8,6 @@ define_action! { in "InstanceID" => A_ARG_TYPE_INSTANCE_ID, out "CurrentTransportState" => TRANSPORTSTATE, out "CurrentTransportStatus" => TRANSPORTSTATUS, + out "CurrentSpeed" => TRANSPORTPLAYSPEED, } } diff --git a/pmowebrenderer/src/handlers.rs b/pmowebrenderer/src/handlers.rs index 09b7e062..b5c23799 100644 --- a/pmowebrenderer/src/handlers.rs +++ b/pmowebrenderer/src/handlers.rs @@ -203,6 +203,7 @@ pub fn get_transport_info_handler(state: SharedState) -> ActionHandler { Box::pin(async move { let mut data = data; let s = state.read(); + tracing::info!("[WebRenderer] GetTransportInfo handler called, state={:?}", s.playback_state); let transport_state = match s.playback_state { PlaybackState::Stopped => "STOPPED", PlaybackState::Playing => "PLAYING", @@ -215,6 +216,7 @@ pub fn get_transport_info_handler(state: SharedState) -> ActionHandler { transport_state.to_string() ); set!(&mut data, "CurrentTransportStatus", "OK".to_string()); + set!(&mut data, "CurrentSpeed", "1".to_string()); Ok(data) }) }) diff --git a/pmowebrenderer/src/renderer.rs b/pmowebrenderer/src/renderer.rs index 91f2d921..40cd8b53 100644 --- a/pmowebrenderer/src/renderer.rs +++ b/pmowebrenderer/src/renderer.rs @@ -332,6 +332,12 @@ impl WebRendererFactory { Arc::clone(&TRANSPORTSTATUS), ))) .map_err(|e| FactoryError::ActionError(format!("{:?}", e)))?; + get_info + .add_argument(Arc::new(Argument::new_out( + "CurrentSpeed".to_string(), + Arc::clone(&TRANSPORTPLAYSPEED), + ))) + .map_err(|e| FactoryError::ActionError(format!("{:?}", e)))?; get_info.set_stateful(false); get_info.set_handler(handlers::get_transport_info_handler(state.clone())); add_action(&mut svc, Arc::new(get_info))?;