decoder/dsf: Allow up to DSD512. Enable DSD rates based on Fs=48kHz
This commit is contained in:
parent
7c3af4f56f
commit
9b9d189a33
1
NEWS
1
NEWS
|
@ -40,6 +40,7 @@ ver 0.19 (not yet released)
|
||||||
- audiofile: support scanning remote files
|
- audiofile: support scanning remote files
|
||||||
- audiofile: log libaudiofile errors
|
- audiofile: log libaudiofile errors
|
||||||
- dsdiff, dsf: report bit rate
|
- dsdiff, dsf: report bit rate
|
||||||
|
- dsf: support DSD512
|
||||||
- sndfile: support scanning remote files
|
- sndfile: support scanning remote files
|
||||||
- sndfile: support tags "comment", "album", "track", "genre"
|
- sndfile: support tags "comment", "album", "track", "genre"
|
||||||
- mp4v2: support playback of MP4 files.
|
- mp4v2: support playback of MP4 files.
|
||||||
|
|
|
@ -82,6 +82,25 @@ dsdlib_skip(Decoder *decoder, InputStream &is,
|
||||||
return decoder_skip(decoder, is, delta);
|
return decoder_skip(decoder, is, delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
dsdlib_valid_freq(uint32_t samplefreq)
|
||||||
|
{
|
||||||
|
switch (samplefreq) {
|
||||||
|
case 2822400: /* DSD64, 64xFs, Fs = 44.100kHz */
|
||||||
|
case 3072000: /* DSD64 with Fs = 48.000 kHz */
|
||||||
|
case 5644800:
|
||||||
|
case 6144000:
|
||||||
|
case 11289600:
|
||||||
|
case 12288000:
|
||||||
|
case 22579200:/* DSD512 */
|
||||||
|
case 24576000:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_ID3TAG
|
#ifdef HAVE_ID3TAG
|
||||||
void
|
void
|
||||||
dsdlib_tag_id3(InputStream &is,
|
dsdlib_tag_id3(InputStream &is,
|
||||||
|
|
|
@ -66,6 +66,13 @@ bool
|
||||||
dsdlib_skip(Decoder *decoder, InputStream &is,
|
dsdlib_skip(Decoder *decoder, InputStream &is,
|
||||||
uint64_t delta);
|
uint64_t delta);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the sample frequency is a valid DSD frequency.
|
||||||
|
**/
|
||||||
|
gcc_const
|
||||||
|
bool
|
||||||
|
dsdlib_valid_freq(uint32_t samplefreq);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add tags from ID3 tag. All tags commonly found in the ID3 tags of
|
* Add tags from ID3 tag. All tags commonly found in the ID3 tags of
|
||||||
* DSF and DSDIFF files are imported
|
* DSF and DSDIFF files are imported
|
||||||
|
|
|
@ -131,7 +131,7 @@ dsf_read_metadata(Decoder *decoder, InputStream &is,
|
||||||
if (dsf_fmt_chunk.version != 1 || dsf_fmt_chunk.formatid != 0
|
if (dsf_fmt_chunk.version != 1 || dsf_fmt_chunk.formatid != 0
|
||||||
|| dsf_fmt_chunk.channeltype != 2
|
|| dsf_fmt_chunk.channeltype != 2
|
||||||
|| dsf_fmt_chunk.channelnum != 2
|
|| dsf_fmt_chunk.channelnum != 2
|
||||||
|| (samplefreq != 2822400 && samplefreq != 5644800))
|
|| (!dsdlib_valid_freq(samplefreq)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
uint32_t chblksize = FromLE32(dsf_fmt_chunk.block_size);
|
uint32_t chblksize = FromLE32(dsf_fmt_chunk.block_size);
|
||||||
|
|
Loading…
Reference in New Issue