#10675: Inaccurate duration of DTS Coherent Acoustics streams
----------------------------------+---------------------------------------
Reporter: j7n | Type: enhancement
Status: new | Priority: wish
Component: ffprobe | Version: git-master
Keywords: dca, DTS | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+---------------------------------------
Currently the duration is estimated from the Transmission Bitrate field.
It comes from a table of a small number of values and usually doesn't
match the actual rate. If it is set to 0b11101 'Open', no duration is
reported and the stream is not seekable. Common mismatches are ~1509 vs
1536 on DVD, and 1234.8 vs 1411.2 on DTS-CD.
Since all DCA streams without a lossless extension are constant bitrate in
practice, the actual bitrate could be read from the FSIZE+1 and NBLKS,
possibly verifying a few packets. Often the official DTS-CD encoder writes
the frame size without subtracting 1, which could be checked by seeking
one byte backwards or to the first sync word.
Currently ffmpeg cannot decode broken streams with FSIZE equal to the
frame size. It overreads by one and skips every other packet resulting in
half the duration in the output.
{{{
t:\working\ffmpeg-git>ffmpeg -i openunpadded1235.dts openunpadded1235.wav
ffmpeg version 2023-11-20-git-e56d91f8a8-essentials_build-www.gyan.dev
Copyright
(c) 2000-2023 the FFmpeg developers
Input #0, dts, from 'openunpadded1235.dts':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Audio: dts (DTS), 44100 Hz, 5.1(side), fltp
Stream mapping:
Stream #0:0 -> #0:0 (dts (dca) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'openunpadded1235.wav':
Metadata:
ISFT : Lavf60.17.100
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz,
5.1(side), s1
6, 4233 kb/s
Metadata:
encoder : Lavc60.33.100 pcm_s16le
[out#0/wav @ 00000000006a7100] video:0kB audio:7776kB subtitle:0kB other
streams
:0kB global headers:0kB muxing overhead: 0.001281%
size= 7776kB time=00:00:15.01 bitrate=4241.8kbits/s speed= 109x
}}}
{{{
t:\working\ffmpeg-git>ffprobe shape1235.dts
ffprobe version 2023-11-20-git-e56d91f8a8-essentials_build-www.gyan.dev
Copyright (c) 2007-2023 the FFmpeg developers
[dts @ 000000000047a800] Estimating duration from bitrate, this may be
inaccurate
Input #0, dts, from 'shape1235.dts':
Duration: 00:00:26.25, start: 0.000000, bitrate: 1411 kb/s
Stream #0:0: Audio: dts (DTS), 44100 Hz, 5.1(side), fltp, 1411 kb/s
}}}
{{{
t:\working\ffmpeg-git>ffprobe apassionplay1509.dts
ffprobe version 2023-11-20-git-e56d91f8a8-essentials_build-www.gyan.dev
Copyright (c) 2007-2023 the FFmpeg developers
[dts @ 000000000055a800] Estimating duration from bitrate, this may be
inaccurate
Input #0, dts, from 'apassionplay1509.dts':
Duration: 00:00:29.49, start: 0.000000, bitrate: 1536 kb/s
Stream #0:0: Audio: dts (DTS 96/24), 96000 Hz, 5.1(side), fltp, 1536
kb/s
}}}
{{{
t:\working\ffmpeg-git>ffprobe openpadded1411.dts
ffprobe version 2023-11-20-git-e56d91f8a8-essentials_build-www.gyan.dev
Copyright (c) 2007-2023 the FFmpeg developers
Input #0, dts, from 'openpadded1411.dts':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Audio: dts (DTS), 44100 Hz, 5.1(side), fltp
}}}
Linked 4 samples with length of 30 seconds each.
openunpadded1235.dts 16-bit DTS-CD, open bitrate, wrong FSIZE, unknown
duration.
openpadded1411.dts 14-bit DTS-CD, same as above, directly read from CD.
apassionplay1509.dts a DVD stream with the X96k extension
shape1235.dts 16-bit DTS-CD, RATE equal to 1411.2
http://j7n.sytes.net/temp/dtssample/
My 'wish' is that seeking would be faster without reading the entire CBR
stream.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10675>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac
To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".