mirror of
https://github.com/TomHarte/CLK.git
synced 2026-04-20 10:17:05 +00:00
Realised I was actually testing PCMSegmentEventSource, not PCMSegment; implemented a spread of tests; hence fixed PCMSegmentEventSource.
This commit is contained in:
@@ -25,13 +25,13 @@ PCMSegmentEventSource::PCMSegmentEventSource(const PCMSegment &segment) :
|
||||
void PCMSegmentEventSource::reset()
|
||||
{
|
||||
bit_pointer_ = 0;
|
||||
next_event_.length.length = -(segment_.length_of_a_bit.length >> 1);
|
||||
next_event_.type = Track::Event::FluxTransition;
|
||||
}
|
||||
|
||||
Storage::Disk::Track::Event PCMSegmentEventSource::get_next_event()
|
||||
{
|
||||
Storage::Disk::Track::Event next_event;
|
||||
size_t initial_bit_pointer = bit_pointer_;
|
||||
next_event_.length.length = bit_pointer_ ? 0 : -(segment_.length_of_a_bit.length >> 1);
|
||||
|
||||
const uint8_t *segment_data = segment_.data.data();
|
||||
while(bit_pointer_ < segment_.number_of_bits)
|
||||
@@ -43,6 +43,7 @@ Storage::Disk::Track::Event PCMSegmentEventSource::get_next_event()
|
||||
if(bit) return next_event_;
|
||||
}
|
||||
|
||||
if(initial_bit_pointer < segment_.number_of_bits) next_event_.length.length += (segment_.length_of_a_bit.length >> 1);
|
||||
next_event_.type = Track::Event::IndexHole;
|
||||
return next_event;
|
||||
return next_event_;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user