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