Add Dsp last frame boundary
This commit is contained in:
@@ -129,6 +129,10 @@ void Dsp::Reset() {
|
||||
sampleOffset = 0;
|
||||
}
|
||||
|
||||
void Dsp::NewFrame() {
|
||||
lastFrameBoundary = sampleOffset;
|
||||
}
|
||||
|
||||
void Dsp::Cycle() {
|
||||
sampleOutL = 0;
|
||||
sampleOutR = 0;
|
||||
@@ -619,7 +623,7 @@ void Dsp::GetSamples(int16_t* sample_data, int samples_per_frame,
|
||||
// resample from 534 / 641 samples per frame to wanted value
|
||||
float wantedSamples = (pal_timing ? 641.0 : 534.0);
|
||||
double adder = wantedSamples / samples_per_frame;
|
||||
double location = sample_offset_ - wantedSamples;
|
||||
double location = lastFrameBoundary - wantedSamples;
|
||||
for (int i = 0; i < samples_per_frame; i++) {
|
||||
sample_data[i * 2] = sample_buffer_[(((int)location) & 0x3ff) * 2];
|
||||
sample_data[i * 2 + 1] = sample_buffer_[(((int)location) & 0x3ff) * 2 + 1];
|
||||
|
||||
@@ -87,6 +87,8 @@ class Dsp {
|
||||
public:
|
||||
Dsp(std::vector<uint8_t>& aram) : aram_(aram) {}
|
||||
|
||||
void NewFrame();
|
||||
|
||||
void Reset();
|
||||
|
||||
void Cycle();
|
||||
@@ -150,6 +152,7 @@ class Dsp {
|
||||
// sample ring buffer (1024 samples, *2 for stereo)
|
||||
int16_t sampleBuffer[0x400 * 2];
|
||||
uint16_t sampleOffset; // current offset in samplebuffer
|
||||
uint32_t lastFrameBoundary;
|
||||
};
|
||||
|
||||
} // namespace audio
|
||||
|
||||
Reference in New Issue
Block a user