Difference between revisions of "High Definition Compatible Digital"

From Hydrogenaudio Knowledgebase
Jump to: navigation, search
(clarify what the ffmpeg options do)
Line 20: Line 20:
  
 
=== FFmpeg ===
 
=== FFmpeg ===
FFmpeg version 3.1's libavfilter supports a HDCD filter that will convert HDCD-encoded audio to 32-bit PCM (20-bits used, not resampled by the filter). The filter is based on the Foober2000 component source code.
+
FFmpeg version 3.1's libavfilter supports a HDCD filter that will convert HDCD-encoded audio to PCM at up to 20-bit precision. The filter is based on the Foobar2000 component source code.
  
 
;Example:FLAC with HDCD encoded in 16-bit (perhaps ripped from a CD)
 
;Example:FLAC with HDCD encoded in 16-bit (perhaps ripped from a CD)
 
  ffmpeg -i input16.flac -af hdcd output24.flac
 
  ffmpeg -i input16.flac -af hdcd output24.flac
;Example 2:Notice the output from the filter is resampled back to 16-bit because the wav muxer defaults to pcm_s16le...
+
;Example 2:Notice the output from the filter is truncated down to 16-bit because the wav muxer defaults to pcm_s16le...
 
  ffmpeg -i input16.wav -af hdcd output16.wav
 
  ffmpeg -i input16.wav -af hdcd output16.wav
;Example 3:... if you want to use another codec (like pcm_s24le), you have to specify it with the acodec option
+
;Example 3:... if you want to use another format (like pcm_s24le), you have to specify it with the acodec option
 
  ffmpeg -i input16.wav -af hdcd -acodec pcm_s24le output24.wav
 
  ffmpeg -i input16.wav -af hdcd -acodec pcm_s24le output24.wav

Revision as of 04:22, 3 July 2016

High Definition Compatible Digital, or HDCD is a Microsoft proprietary audio encode-decode process that claims to provide increased dynamic range over that of standard Redbook audio CDs, while retaining backward compatibility with existing Compact disc players. —HDCD article at Wikipedia

HDCD encodes a virtual 20-bit audio stream in the 16-bit redbook audio stream. Decoding the extra information required an HDCD-compatible player or Windows Media Player. There was no public documentation for the process, but it was eventually reverse engineered. Many HDCD-encoded CDs were released from the mid 1990s until about 2008. Microsoft no longer advertises nor supports HDCD.

A lossless copy of CD audio will include the HDCD data.

Links

Decoding software

As HDCD is a proprietary extension owned by Microsoft, Windows Media Player was the only software to support it for a long time. A simple closed-source Windows-only decoding tool, called hdcd.exe, appeared in 2007 on the Doom9 Forum, a product of reverse-engineering Windows Media Player. [1] Since that time, an open source implementation has come to exist based on this work. It supports the peak extend and gain HDCD features, while the transient filter feature is detected but not implemented.

Audio players

  • Windows Media Player, but there is a bug where HDCD will not be enabled if the HDCD control signal is not detected near the beginning of a song
  • Foobar2000 can decode HDCD to 20-bit PCM via foo_dsp_hdcd (source)
  • dBpoweramp will decode HDCD to 24-bit PCM
  • CUETools

FFmpeg

FFmpeg version 3.1's libavfilter supports a HDCD filter that will convert HDCD-encoded audio to PCM at up to 20-bit precision. The filter is based on the Foobar2000 component source code.

Example
FLAC with HDCD encoded in 16-bit (perhaps ripped from a CD)
ffmpeg -i input16.flac -af hdcd output24.flac
Example 2
Notice the output from the filter is truncated down to 16-bit because the wav muxer defaults to pcm_s16le...
ffmpeg -i input16.wav -af hdcd output16.wav
Example 3
... if you want to use another format (like pcm_s24le), you have to specify it with the acodec option
ffmpeg -i input16.wav -af hdcd -acodec pcm_s24le output24.wav