swf-parser 0.14.0

SWF parser
Documentation
use nom::number::complete::le_u8 as parse_u8;
use nom::IResult as NomResult;
use swf_types as ast;

pub fn video_deblocking_from_code(video_deblocking_id: u8) -> Result<ast::VideoDeblocking, ()> {
  match video_deblocking_id {
    0 => Ok(ast::VideoDeblocking::PacketValue),
    1 => Ok(ast::VideoDeblocking::Off),
    2 => Ok(ast::VideoDeblocking::Level1),
    3 => Ok(ast::VideoDeblocking::Level2),
    4 => Ok(ast::VideoDeblocking::Level3),
    5 => Ok(ast::VideoDeblocking::Level4),
    _ => Err(()),
  }
}

pub fn parse_videoc_codec(input: &[u8]) -> NomResult<&[u8], ast::VideoCodec> {
  let (input, codec_id) = parse_u8(input)?;
  let codec = video_codec_from_code(codec_id).map_err(|_| nom::Err::Error(nom::error::Error::new(input, nom::error::ErrorKind::Switch)))?;
  Ok((input, codec))
}

pub fn video_codec_from_code(video_codec_id: u8) -> Result<ast::VideoCodec, ()> {
  match video_codec_id {
    0 => Ok(ast::VideoCodec::None),
    1 => Ok(ast::VideoCodec::Jpeg),
    2 => Ok(ast::VideoCodec::Sorenson),
    3 => Ok(ast::VideoCodec::Screen),
    4 => Ok(ast::VideoCodec::Vp6),
    5 => Ok(ast::VideoCodec::Vp6Alpha),
    6 => Ok(ast::VideoCodec::Screen2),
    7 => Ok(ast::VideoCodec::Avc),
    _ => Err(()),
  }
}