You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
Added estimated_frame to AudioSourceReader... which estimates what frame is being currently played.
This commit is contained in:
@@ -33,7 +33,7 @@ using namespace openshot;
|
||||
// Constructor that reads samples from a reader
|
||||
AudioReaderSource::AudioReaderSource(ReaderBase *audio_reader, int64 starting_frame_number, int buffer_size)
|
||||
: reader(audio_reader), frame_number(starting_frame_number), original_frame_number(starting_frame_number),
|
||||
size(buffer_size), position(0), frame_position(0) {
|
||||
size(buffer_size), position(0), frame_position(0), estimated_frame(0) {
|
||||
|
||||
// Initialize an audio buffer (based on reader)
|
||||
buffer = new juce::AudioSampleBuffer(reader->info.channels, size);
|
||||
@@ -62,6 +62,9 @@ void AudioReaderSource::GetMoreSamplesFromReader() {
|
||||
amount_remaining = 0;
|
||||
}
|
||||
|
||||
// Init estimated buffer equal to the current frame position (before getting more samples)
|
||||
estimated_frame = frame_number;
|
||||
|
||||
// Init new buffer
|
||||
juce::AudioSampleBuffer *new_buffer = new juce::AudioSampleBuffer(reader->info.channels, size);
|
||||
new_buffer->clear();
|
||||
@@ -177,6 +180,9 @@ void AudioReaderSource::getNextAudioBlock (const AudioSourceChannelInfo& info)
|
||||
position += number_to_copy;
|
||||
}
|
||||
|
||||
// Adjust estimate frame number (the estimated frame number that is being played)
|
||||
estimated_samples_per_frame = Frame::GetSamplesPerFrame(estimated_frame, reader->info.fps, reader->info.sample_rate);
|
||||
estimated_frame += double(info.numSamples) / double(estimated_samples_per_frame);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user