On Fri, Jul 31, 2015 at 9:29 PM, Peter Ross <pr...@xvid.org> wrote: > On Fri, Jul 31, 2015 at 08:56:49PM -0400, Ganesh Ajjanagadde wrote: >> On Fri, Jul 31, 2015 at 8:08 PM, Michael Niedermayer >> <mich...@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 <itumas...@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 <itumas...@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. > > converting between DSD->PCM reduces the sample rate by 8. > at present, the DSD->PCM conversion happens libavcodec/dsddec.c. > however, a 'codec' cannot change sample_rate, so the divide by 8 is performed > earlier in libavformat. > > yes, this is a hack. > > i have a patch set that moves DSD->PCM conversion into swresample, where it > belongs, > along with adding a DST decoder and support for additional file formats. > If anyone is interested, I can repost.
Was there a reason why previous patch set was ignored or not applied? (Relevant mailing list link would help to get a sense for it). At the minimum though, this hack should have relevant comments for it in the source code. This would have removed some of the confusion. > > -- Peter > (A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B) > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel