#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".

Reply via email to