use crate::EncodeError;
use mediaway_common::CodecKind;
use objc2_core_media::CMVideoCodecType;
pub(super) const fn codec_type(codec: CodecKind) -> Result<CMVideoCodecType, EncodeError> {
match codec {
CodecKind::H264 => Ok(objc2_core_media::kCMVideoCodecType_H264),
CodecKind::Hevc => Ok(objc2_core_media::kCMVideoCodecType_HEVC),
CodecKind::ProRes422Proxy => Ok(objc2_core_media::kCMVideoCodecType_AppleProRes422Proxy),
CodecKind::ProRes422Lt => Ok(objc2_core_media::kCMVideoCodecType_AppleProRes422LT),
CodecKind::ProRes422 => Ok(objc2_core_media::kCMVideoCodecType_AppleProRes422),
CodecKind::ProRes422Hq => Ok(objc2_core_media::kCMVideoCodecType_AppleProRes422HQ),
CodecKind::ProRes4444 => Ok(objc2_core_media::kCMVideoCodecType_AppleProRes4444),
CodecKind::ProRes4444Xq => Ok(objc2_core_media::kCMVideoCodecType_AppleProRes4444XQ),
_ => Err(EncodeError::Unsupported),
}
}
#[must_use]
pub(super) const fn is_supported_video_codec(codec: CodecKind) -> bool {
matches!(
codec,
CodecKind::H264
| CodecKind::Hevc
| CodecKind::ProRes422Proxy
| CodecKind::ProRes422Lt
| CodecKind::ProRes422
| CodecKind::ProRes422Hq
| CodecKind::ProRes4444
| CodecKind::ProRes4444Xq
)
}
#[must_use]
pub(super) const fn is_prores(codec: CodecKind) -> bool {
matches!(
codec,
CodecKind::ProRes422Proxy
| CodecKind::ProRes422Lt
| CodecKind::ProRes422
| CodecKind::ProRes422Hq
| CodecKind::ProRes4444
| CodecKind::ProRes4444Xq
)
}