feat: _mpl
This commit is contained in:
parent
8a3b535856
commit
34ff52c65c
|
@ -1,3 +1,4 @@
|
||||||
|
pub mod media_pool_config;
|
||||||
pub mod mix_effect_block_config;
|
pub mod mix_effect_block_config;
|
||||||
pub mod product_identifier;
|
pub mod product_identifier;
|
||||||
pub mod topology;
|
pub mod topology;
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
commands::command_base::{CommandDeserializer, DeserializedCommand},
|
||||||
|
state::info::MediaPoolInfo,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const DESERIALIZE_MEDIA_POOL_CONFIG_NAME: &str = "_mpl";
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct MediaPoolConfig {
|
||||||
|
still_count: u8,
|
||||||
|
clip_count: u8,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DeserializedCommand for MediaPoolConfig {
|
||||||
|
fn raw_name(&self) -> &'static str {
|
||||||
|
DESERIALIZE_MEDIA_POOL_CONFIG_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
fn apply_to_state(&self, state: &mut crate::state::AtemState) {
|
||||||
|
state.info.media_pool = Some(MediaPoolInfo::new(self.still_count, self.clip_count))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct MediaPoolConfigDeserializer {}
|
||||||
|
|
||||||
|
impl CommandDeserializer for MediaPoolConfigDeserializer {
|
||||||
|
fn deserialize(
|
||||||
|
&self,
|
||||||
|
buffer: &[u8],
|
||||||
|
_version: &crate::enums::ProtocolVersion,
|
||||||
|
) -> std::sync::Arc<dyn DeserializedCommand> {
|
||||||
|
Arc::new(MediaPoolConfig {
|
||||||
|
still_count: buffer[0],
|
||||||
|
clip_count: buffer[1],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ use crate::{
|
||||||
use super::{
|
use super::{
|
||||||
command_base::{CommandDeserializer, DeserializedCommand},
|
command_base::{CommandDeserializer, DeserializedCommand},
|
||||||
device_profile::{
|
device_profile::{
|
||||||
|
media_pool_config::{MediaPoolConfigDeserializer, DESERIALIZE_MEDIA_POOL_CONFIG_NAME},
|
||||||
mix_effect_block_config::{
|
mix_effect_block_config::{
|
||||||
MixEffectBlockConfigDeserializer, DESERIALIZE_MIX_EFFECT_BLOCK_CONFIG_NAME,
|
MixEffectBlockConfigDeserializer, DESERIALIZE_MIX_EFFECT_BLOCK_CONFIG_NAME,
|
||||||
},
|
},
|
||||||
|
@ -77,6 +78,7 @@ fn command_deserializer_from_string(command_str: &str) -> Option<Box<dyn Command
|
||||||
DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME => {
|
DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME => {
|
||||||
Some(Box::<ProductIdentifierDeserializer>::default())
|
Some(Box::<ProductIdentifierDeserializer>::default())
|
||||||
}
|
}
|
||||||
|
DESERIALIZE_MEDIA_POOL_CONFIG_NAME => Some(Box::<MediaPoolConfigDeserializer>::default()),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,8 @@ pub struct MacroPoolInfo {
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Getters, new)]
|
#[derive(Clone, PartialEq, Getters, new)]
|
||||||
pub struct MediaPoolInfo {
|
pub struct MediaPoolInfo {
|
||||||
still_count: u64,
|
still_count: u8,
|
||||||
clip_count: u64,
|
clip_count: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Getters, new)]
|
#[derive(Clone, PartialEq, Getters, new)]
|
||||||
|
|
Loading…
Reference in New Issue