mirror of
https://github.com/mpv-player/mpv
synced 2025-01-03 05:22:23 +00:00
ad_spdif: fix DTS-HD HRA handling
Apparently, for bit streaming DTS-HD MA is specified to be handled as an eight channel (7.1) bit stream, while DTS-HD HRA is specified to be handled as a stereo bit stream. Define a variable for this, and utilize it to set the correct values for both the DTS-HD bit streaming rate, as well as the channel count for the SPDIF encoder. Fixes #6148
This commit is contained in:
parent
865627d849
commit
25ee18d6e5
@ -210,11 +210,19 @@ static int init_filter(struct mp_filter *da, AVPacket *pkt)
|
|||||||
bool is_hd = profile == FF_PROFILE_DTS_HD_HRA ||
|
bool is_hd = profile == FF_PROFILE_DTS_HD_HRA ||
|
||||||
profile == FF_PROFILE_DTS_HD_MA ||
|
profile == FF_PROFILE_DTS_HD_MA ||
|
||||||
profile == FF_PROFILE_UNKNOWN;
|
profile == FF_PROFILE_UNKNOWN;
|
||||||
|
|
||||||
|
// Apparently, DTS-HD over SPDIF is specified to be 7.1 (8 channels)
|
||||||
|
// for DTS-HD MA, and stereo (2 channels) for DTS-HD HRA. The bit
|
||||||
|
// streaming rate as well as the signaled channel count are defined
|
||||||
|
// based on this value.
|
||||||
|
int dts_hd_spdif_channel_count = profile == FF_PROFILE_DTS_HD_HRA ?
|
||||||
|
2 : 8;
|
||||||
if (spdif_ctx->use_dts_hd && is_hd) {
|
if (spdif_ctx->use_dts_hd && is_hd) {
|
||||||
av_dict_set(&format_opts, "dtshd_rate", "768000", 0); // 4*192000
|
av_dict_set_int(&format_opts, "dtshd_rate",
|
||||||
|
dts_hd_spdif_channel_count * 96000, 0);
|
||||||
sample_format = AF_FORMAT_S_DTSHD;
|
sample_format = AF_FORMAT_S_DTSHD;
|
||||||
samplerate = 192000;
|
samplerate = 192000;
|
||||||
num_channels = 2*4;
|
num_channels = dts_hd_spdif_channel_count;
|
||||||
} else {
|
} else {
|
||||||
sample_format = AF_FORMAT_S_DTS;
|
sample_format = AF_FORMAT_S_DTS;
|
||||||
samplerate = 48000;
|
samplerate = 48000;
|
||||||
|
Loading…
Reference in New Issue
Block a user