Skip to content

Commit

Permalink
#196 Add DSDIFF sample & unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
Borewit committed Apr 25, 2019
1 parent 2588ac5 commit 3dcbe4c
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/dsdiff/DsdiffParser.ts
Expand Up @@ -77,8 +77,8 @@ export class DsdiffParser extends BasicParser {
break;

case 'DSD':
const duration = header.chunkSize * 8 / (this.metadata.format.numberOfChannels * this.metadata.format.sampleRate); // ToDO: not sure if this is correct
this.metadata.setFormat('duration', duration);
this.metadata.setFormat('numberOfSamples', header.chunkSize * 8 / this.metadata.format.numberOfChannels);
this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);
break;

}
Expand Down
Binary file added test/samples/dsdiff/DSD64.dff
Binary file not shown.
35 changes: 35 additions & 0 deletions test/test-dsdiff.ts
@@ -0,0 +1,35 @@
import {assert} from 'chai';
import * as mm from '../src';
import * as path from 'path';

describe('Parse Philips DSDIFF', () => {

const dsdiffamplePath = path.join(__dirname, 'samples', 'dsdiff');

it('parse: DSD64.dff', async () => {

const filePath = path.join(dsdiffamplePath, 'DSD64.dff');

const {format, common} = await mm.parseFile(filePath, {duration: false});

// format chunk information
assert.strictEqual(format.dataformat, 'DSDIFF/DSD');
assert.deepEqual(format.lossless, true);
assert.deepEqual(format.tagTypes, ['ID3v2.3']);
assert.deepEqual(format.numberOfChannels, 2, 'format.numberOfChannels');
assert.deepEqual(format.bitsPerSample, 1, 'format.bitsPerSample');
assert.deepEqual(format.sampleRate, 2822400, 'format.sampleRate [Hz]');
assert.deepEqual(format.numberOfSamples, 300800, 'format.numberOfSamples');
assert.deepEqual(format.duration, 300800 / 2822400, 'format.duration');
assert.deepEqual(format.bitrate, 5644800, 'format.bitrate');
assert.deepEqual(format.tagTypes, ['ID3v2.3'], 'TAG headers');

// ID3v2 chunk information
assert.strictEqual(common.artist, 'CANTUS (Tove Ramlo-Ystad) & Frode Fjellheim', 'common.artist');
assert.strictEqual(common.title, 'Kyrie', 'common.title');
assert.strictEqual(common.album, 'SPES', 'common.album');
assert.deepEqual(common.genre, ['Choral'], 'common.genre');
assert.deepEqual(common.track, {no: 4, of: 12}, 'common.track');
});

});

0 comments on commit 3dcbe4c

Please sign in to comment.