Formatting.

This commit is contained in:
Pedro de Oliveira 2023-04-30 19:14:29 +01:00
parent f596a68e27
commit 03401d2e7f
1 changed files with 23 additions and 92 deletions

View File

@ -8,14 +8,8 @@ use nom::{Err, IResult};
fn parse_sound_data(input: &[u8]) -> IResult<&[u8], BlockType> {
let header_size = 2;
let (input, block_size) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, frequency_divisor) = context(
"Failed to parse frequency divisor",
le_u8,
)(input)?;
let (input, block_size) = context("Failed to parse block size", le_u24)(input)?;
let (input, frequency_divisor) = context("Failed to parse frequency divisor", le_u8)(input)?;
let (input, codec_id) = context(
"Failed to parse codec id",
map_res(
@ -42,10 +36,7 @@ fn parse_sound_data(input: &[u8]) -> IResult<&[u8], BlockType> {
7 => Codec::Ulaw,
_ => return Err(Err::Error(Error::new(input, ErrorKind::Alt))),
};
let (input, data) = context(
"Failed to parse data",
take(block_size - header_size),
)(input)?;
let (input, data) = context("Failed to parse data", take(block_size - header_size))(input)?;
Ok((
input,
BlockType::SoundData {
@ -57,14 +48,8 @@ fn parse_sound_data(input: &[u8]) -> IResult<&[u8], BlockType> {
}
fn parse_sound_data_continuation(input: &[u8]) -> IResult<&[u8], BlockType> {
let (input, block_size) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, data) = context(
"Failed to parse data",
take(block_size),
)(input)?;
let (input, block_size) = context("Failed to parse block size", le_u24)(input)?;
let (input, data) = context("Failed to parse data", take(block_size))(input)?;
Ok((
input,
BlockType::SoundDataContinuation {
@ -74,18 +59,9 @@ fn parse_sound_data_continuation(input: &[u8]) -> IResult<&[u8], BlockType> {
}
fn parse_silence(input: &[u8]) -> IResult<&[u8], BlockType> {
let (input, _) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, length) = context(
"Failed to parse length",
le_u16,
)(input)?;
let (input, frequency_divisor) = context(
"Failed to parse frequency divisor",
le_u8,
)(input)?;
let (input, _) = context("Failed to parse block size", le_u24)(input)?;
let (input, length) = context("Failed to parse length", le_u16)(input)?;
let (input, frequency_divisor) = context("Failed to parse frequency divisor", le_u8)(input)?;
let sample_rate: u32 = 1000000_u32 / (256_u32 - frequency_divisor as u32);
Ok((
input,
@ -97,26 +73,14 @@ fn parse_silence(input: &[u8]) -> IResult<&[u8], BlockType> {
}
fn parse_marker(input: &[u8]) -> IResult<&[u8], BlockType> {
let (input, _) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, value) = context(
"Failed to parse value",
le_u16,
)(input)?;
let (input, _) = context("Failed to parse block size", le_u24)(input)?;
let (input, value) = context("Failed to parse value", le_u16)(input)?;
Ok((input, BlockType::Marker { value }))
}
fn parse_text(input: &[u8]) -> IResult<&[u8], BlockType> {
let (input, block_size) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, data) = context(
"Failed to parse data",
take(block_size),
)(input)?;
let (input, block_size) = context("Failed to parse block size", le_u24)(input)?;
let (input, data) = context("Failed to parse data", take(block_size))(input)?;
Ok((
input,
BlockType::Text {
@ -126,26 +90,14 @@ fn parse_text(input: &[u8]) -> IResult<&[u8], BlockType> {
}
fn parse_repeat_start(input: &[u8]) -> IResult<&[u8], BlockType> {
let (input, _) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, count) = context(
"Failed to parse count",
le_u16,
)(input)?;
let (input, _) = context("Failed to parse block size", le_u24)(input)?;
let (input, count) = context("Failed to parse count", le_u16)(input)?;
Ok((input, BlockType::RepeatStart { count }))
}
fn parse_extra_information(input: &[u8]) -> IResult<&[u8], BlockType> {
let (input, _) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, frequency_divisor) = context(
"Failed to parse frequency divisor",
le_u16,
)(input)?;
let (input, _) = context("Failed to parse block size", le_u24)(input)?;
let (input, frequency_divisor) = context("Failed to parse frequency divisor", le_u16)(input)?;
let (input, codec_id) = context(
"Failed to parse codec_id",
map_res(
@ -161,10 +113,7 @@ fn parse_extra_information(input: &[u8]) -> IResult<&[u8], BlockType> {
|b: &[u8]| Ok::<_, ()>(b[0]),
),
)(input)?;
let (input, channels) = context(
"Failed to parse channels",
le_u8,
)(input)?;
let (input, channels) = context("Failed to parse channels", le_u8)(input)?;
let codec = match codec_id {
0 => Codec::Pcm8BitUnsigned,
1 => Codec::Adpcm4to8,
@ -189,22 +138,10 @@ fn parse_extra_information(input: &[u8]) -> IResult<&[u8], BlockType> {
fn parse_sound_data_new(input: &[u8]) -> IResult<&[u8], BlockType> {
let header_size = 12;
let (input, block_size) = context(
"Failed to parse block size",
le_u24,
)(input)?;
let (input, sample_rate) = context(
"Failed to parse sample rate",
le_u32,
)(input)?;
let (input, bits) = context(
"Failed to parse bitrate",
le_u8,
)(input)?;
let (input, channels) = context(
"Failed to parse channels",
le_u8,
)(input)?;
let (input, block_size) = context("Failed to parse block size", le_u24)(input)?;
let (input, sample_rate) = context("Failed to parse sample rate", le_u32)(input)?;
let (input, bits) = context("Failed to parse bitrate", le_u8)(input)?;
let (input, channels) = context("Failed to parse channels", le_u8)(input)?;
let (input, codec_id) = context(
"Failed to parse codec_id",
map_res(
@ -221,14 +158,8 @@ fn parse_sound_data_new(input: &[u8]) -> IResult<&[u8], BlockType> {
|b: &[u8]| Ok::<u16, nom::Err<(&[u8], ErrorKind)>>(u16::from_le_bytes([b[0], b[1]])),
),
)(input)?;
let (input, reserved) = context(
"Failed to parse reserved",
le_u32,
)(input)?;
let (input, data) = context(
"Failed to parse data",
take(block_size - header_size),
)(input)?;
let (input, reserved) = context("Failed to parse reserved", le_u32)(input)?;
let (input, data) = context("Failed to parse data", take(block_size - header_size))(input)?;
let codec = match codec_id {
0 => Codec::Pcm8BitUnsigned,
1 => Codec::Adpcm4to8,