[FFmpeg-devel] [PATCH 2/2] libavformat/dsfdec: Error dsf_read_header fixed.

Ganesh Ajjanagadde gajjanag at mit.edu
Sat Aug 1 02:56:49 CEST 2015


On Fri, Jul 31, 2015 at 8:08 PM, Michael Niedermayer
<michael at niedermayer.cc> wrote:
> On Fri, Jul 31, 2015 at 07:33:01PM -0400, Ganesh Ajjanagadde wrote:
>> On Fri, Jul 31, 2015 at 7:01 PM, Ihar A. Tumashyk <itumashyk at gmail.com> wrote:
>> > Sample rate is written "as is" in header . Is *should not* be devined by
>> > 8. Refer spec.:
>> > http://dsd-guide.com/sites/default/files/white-
>> > papers/DSFFileFormatSpec_E.pdf
>> >
>> > After this patch ffprobe will corretly show sample rate for DSF files.
>> >
>> > Signed-off-by: Ihar A. Tumashyk <itumashyk at gmail.com>
>> > ---
>> >  libavformat/dsfdec.c | 2 +-
>> >  1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/libavformat/dsfdec.c b/libavformat/dsfdec.c
>> > index ae198b2..3e162ae 100644
>> > --- a/libavformat/dsfdec.c
>> > +++ b/libavformat/dsfdec.c
>> > @@ -105,7 +105,7 @@ static int dsf_read_header(AVFormatContext *s)
>> >
>> >      st->codec->codec_type   = AVMEDIA_TYPE_AUDIO;
>> >      st->codec->channels     = avio_rl32(pb);
>> > -    st->codec->sample_rate  = avio_rl32(pb) / 8;
>> > +    st->codec->sample_rate  = avio_rl32(pb);
>> >
>> >      switch(avio_rl32(pb)) {
>> >      case 1: st->codec->codec_id = AV_CODEC_ID_DSD_LSBF_PLANAR; break;
>>
>> LGTM, thanks for clarifying intent of previous patch.
>> I am a little puzzled as to why this was never caught till now,
>
> Changing the sample rate like in the patch breaks playback (it plays
> much too quick)
> you can find samples to test at:
> http://www.2l.no/hires/

I really need to stop trusting these spec files that much,
they are often incomplete as in this case. Ironically,
wikipedia here gives a much better description of the format:
https://en.wikipedia.org/wiki/Direct_Stream_Digital,
where they mention that essentially this signal is oversampled by a factor of 8.
As the wiki entry indicates, max frequency of PCM is 352.8 kHz.

In fact, I think previous patch should be reverted:
the wikipedia article says that newer format is called "DSD-wide" and
uses 8-bit word length.
ffprobe yields the downsampled frequency of 352.8 kHz which is what
actually gets used when one demuxes/
operates on the data per wikipedia.
Thus, I believe previous behavior was correct.

>
> [...]
>
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> In fact, the RIAA has been known to suggest that students drop out
> of college or go to community college in order to be able to afford
> settlements. -- The RIAA
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list