Merge pull request #10 from atoav/cuepoints

Surface cue frame_offset field in UI and test for sounddevices files.
This commit is contained in:
Jamie Hardt
2021-09-28 13:39:09 -07:00
committed by GitHub
3 changed files with 59 additions and 5 deletions

View File

@@ -281,7 +281,16 @@ pub struct Cue {
pub label : Option<String>,
/// The text "note"/comment of this marker if provided
pub note : Option<String>
pub note : Option<String>,
/// The offser of this marker
///
/// **Note:** Applications use the `frame` and `offset` fields
/// in different ways. iZotope RX Audio Editor writes the
/// marker position to *both* fields, while a Sound Devices
/// recorder writes the marker position to *only* the `offset`
/// field.
pub offset : u32
}
@@ -306,7 +315,7 @@ impl Cue {
chunk_id: DATA_SIG,
chunk_start: 0,
block_start: 0,
frame_offset: cue.frame
frame_offset: cue.offset
};
let raw_label = cue.label.as_ref().map(|val| {
@@ -380,10 +389,11 @@ impl Cue {
//.filter_map(|x| str::from_utf8(&x.text).ok())
.map(|s| convert_to_cue_string(&s.text))
.next()
}
},
offset: i.frame_offset
}
}).collect()
)
}
}
}

View File

@@ -158,7 +158,7 @@ fn test_channels_stereo_no_fmt_extended() {
assert_eq!(channels[1].speaker,ChannelMask::FrontRight);
}
//See issue 6 and 7
///See issue 6 and 7
#[test]
fn test_frame_reader_consumes_reader() {
// Issue #6
@@ -175,4 +175,48 @@ fn test_frame_reader_consumes_reader() {
}
let _result = from_wav_filename("tests/media/pt_24bit_stereo.wav").unwrap();
}
///See to PR#10
#[test]
fn test_cue_read_sounddevices() {
let mut f = WaveReader::open("tests/media/sounddevices_6_cue_points.wav").unwrap();
let cue_points = f.cue_points().unwrap();
assert_eq!(cue_points.len(), 6);
assert_eq!(cue_points[0].frame, 0);
assert_eq!(cue_points[0].length, None);
assert_eq!(cue_points[0].label, None);
assert_eq!(cue_points[0].note, None);
assert_eq!(cue_points[0].offset, 90112);
assert_eq!(cue_points[1].frame, 0);
assert_eq!(cue_points[1].length, None);
assert_eq!(cue_points[1].label, None);
assert_eq!(cue_points[1].note, None);
assert_eq!(cue_points[1].offset, 176128);
assert_eq!(cue_points[2].frame, 0);
assert_eq!(cue_points[2].length, None);
assert_eq!(cue_points[2].label, None);
assert_eq!(cue_points[2].note, None);
assert_eq!(cue_points[2].offset, 237568);
assert_eq!(cue_points[3].frame, 0);
assert_eq!(cue_points[3].length, None);
assert_eq!(cue_points[3].label, None);
assert_eq!(cue_points[3].note, None);
assert_eq!(cue_points[3].offset, 294912);
assert_eq!(cue_points[4].frame, 0);
assert_eq!(cue_points[4].length, None);
assert_eq!(cue_points[4].label, None);
assert_eq!(cue_points[4].note, None);
assert_eq!(cue_points[4].offset, 380928);
assert_eq!(cue_points[5].frame, 0);
assert_eq!(cue_points[5].length, None);
assert_eq!(cue_points[5].label, None);
assert_eq!(cue_points[5].note, None);
assert_eq!(cue_points[5].offset, 385024);
}

Binary file not shown.