Skip to content

Commit cbe3100

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 64f1638 + 6616113 commit cbe3100

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

src/ResamplingReader.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,35 @@ class ResamplingReader {
6161
return playRaw(array, true);
6262
}
6363

64+
bool playWav(TArray *array) {
65+
bool result = false;
66+
67+
do
68+
{
69+
wav_header hdr;
70+
unsigned infoTagsSize;
71+
wav_data_header wav_data_hdr;
72+
WaveHeaderParser parser;
73+
74+
if (!parser.readWaveHeaderFromBuffer((char*) array, hdr))
75+
break;
76+
77+
// make unwarranted assumptions about the header format
78+
// by using a magic number...
79+
if (!parser.readInfoTags((unsigned char*) array, 36, infoTagsSize))
80+
break;
81+
82+
if (!parser.readDataHeader((unsigned char*) array, 36 + infoTagsSize, wav_data_hdr))
83+
break;
84+
85+
result = playRaw((TArray*)((char*) array + (36 + infoTagsSize + sizeof wav_data_hdr)),
86+
wav_data_hdr.data_bytes / 2,
87+
hdr.num_channels);
88+
} while (0);
89+
90+
return result;
91+
}
92+
6493
bool play(const char *filename, bool isWave, uint16_t numChannelsIfRaw = 0)
6594
{
6695
close();

src/playresmp.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ class AudioPlayResmp : public AudioStream
5454
return playWav((int16_t *) data, fileSize);
5555
}
5656

57+
bool playWav(int16_t *data)
58+
{
59+
stop();
60+
return reader->playWav(data);
61+
}
62+
5763
void setPlaybackRate(float f) {
5864
reader->setPlaybackRate(f);
5965
}

0 commit comments

Comments
 (0)