Почему звук выводится в 16 бит? [Исправлено]

Автор LongKick64, 12 февраля 2019, 14:01:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Aleksoid1978

У нас по дефолту - вывод для форматов без потерь 1:1, для форматов с потерями - во Float.
Если включены в проигрыватели различные аудио-постобработки - то тогда во Float.
Это самое оптимальное.

Ну и как бы не надо "гнать" про 16-bit. Если источник 16-bit - то никакие выводы в 24/32/Float не сделают лучше. Если так - значит конкретное железо не умеет или плохо умеет работать с 16-bit(может в железке при этом не работают улучшалки или еще что-то - тут могут дать ответ только производители).
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Цитата: Aleksoid1978У нас по дефолту - вывод для форматов без потерь 1:1
Во-во. Самый аудиофильный режим предлагают похерить. ;)
На входе CD 16-бит или DVD-Audio 16/24-бит. Декодер выдает как есть. Аудиорендерер так же может выводить без изменений. Но давайте на последнем этапе обломаем всю малину. Да еще без вариантов. И не потому что какую-то обработку добавим, а потому что лень галочку снять.

Говоря о стабильности 16-бит, Я имел в виду всякие внешние USB ЦАПы. Многие из них просто не умеют принимать 32Float.

LongKick64

Почему тогда в AIMP\'е не имеет значение какие файлы я буду воспроизводить, сжатые или несжатые? На входе всегда 32, а на выходе 32 (Float). Значит умеет моя внешняя звуковуха принимать 32Float, но легче всего, конечно, на нее все валить чем что-то исправлять.







ЗЫ Так же проверил на другой своей внешней звуковухе OPPO HA-2SE, та же фигня. :rolleyes:

V0lt

Цитата: LongKick64Почему тогда в AIMP\'е не имеет значение какие файлы я буду воспроизводить, сжатые или несжатые? На входе всегда 32, а на выходе 32 (Float).
Не смысла здесь это спрашивать, здесь нет авторов AIMP.
На скриншотах на выходе WASAPI 32Int, а не как ты написал.

LongKick64

Почему в последней бете, 1.5.4 (build 4850) beta, я даже в режиме WASAPI Shared, на выходе получаю 16 бит? :rolleyes: Раньше, в режиме WASAPI Shared, на выходе я получал 32 бита.



Добавлено: 2019-10-18 22:11:31

Короче я уже в конец запутался.

V0lt

Принципы работы со звуком.
1. Если формат звука в фильтре не меняется, то по возможности отправляем дальше как есть.
2. Если происходит серьезная обработка звука (например, микширование каналов), то после обработки звук становиться в формате 32Float. По возможности отправляем звук дальше в формате 32Float, т.к. изменение формата на исходный может ухудшить звук.
3. Если формат выходом не поддерживается, то преобразуемым исходный формат звука в поддерживаемый. Выбирается наиболее оптимальный формат, чтобы минимально отразилось на качестве.

LongKick64

Хорошо, объясните мне тогда такой момент. Есть два клипа. В обеих клипах lossless аудио-дороги, 24 бит. Данные аудио первого клипа:
Идентификатор                            : 2
Формат                                   : PCM
Настройки формата                        : Little / Signed
Идентификатор кодека                     : A_PCM/INT/LIT
Продолжительность                        : 11 м. 53 с.
Вид битрейта                             : Постоянный
Битрейт                                  : 2304 Кбит/сек
Каналы                                   : 2 канала
Частота                                  : 48,0 КГц
Частота кадров                           : 200,000 кадров/сек (240 SPF)
Битовая глубина                          : 24 бит
Размер потока                            : 196 Мбайт (8%)
Язык                                     : Japanese
Default                                  : Да
Forced                                   : Нет



Данные аудио второго клипа:
Идентификатор                            : 4352 (0x1100)
Идентификатор меню                       : 1 (0x1)
Формат                                   : PCM
Настройки формата                        : Big / Signed
Режим смешивания                         : Blu-ray
Идентификатор кодека                     : 128
Продолжительность                        : 4 м. 7 с.
Вид битрейта                             : Постоянный
Битрейт                                  : 2304 Кбит/сек
Каналы                                   : 2 канала
ChannelLayout                            : L R
Частота                                  : 48,0 КГц
Битовая глубина                          : 24 бит
Размер потока                            : 67,9 Мбайт (7%)



Почему у одного на входе получается 24 -> 32, а у второго 32 -> 32?




Aleksoid1978

В первом случае чистый PCM, минуя декодер идёт дальше. Второй случай - Blu-Ray формат, его ещё надо обработать. Ну в данном случае декодер выводит в 32-bit PCM.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

LongKick64


V0lt

Цитата: LongKick64Почему у одного на входе получается 24 -> 32, а у второго 32 -> 32?
Декодер так выдает вот и все.  Рендерер тут не причем.

Можно, конечно напрячься и сделать так, чтобы и для второго файла декодер выдавал 24-бита (декодер там вроде нашего исполнения). Но на практике в этом нет никакого смысла. 24-бита очень неудобный для обработки формат, и некоторые декодеры (например, FFmpeg) сразу декодируют такое в 32-бита. Преобразование 24->32->24 в целых числах полностью безопасная операция, ни один бит не теряется.

Добавлено: 2019-10-20 07:31:48

Цитата: LongKick64А почему, собственно, не во Float?
24Int -> 32Int - преобразование без потерь, биты просто копируются.
По сути любой декодер, которому приходиться декодировать поток (FLAC, BD-PCM), изначально получает семплы в 32Int из 24-битного потока, и только потом он может отбросить лишние биты. Но как Я уже говорит, некоторые декодеры оставляют 32Int, так удобнее и быстрее в итоге

24Int -> 32Float - преобразование "вроде как без потерь". Формат представления чисел меняется. Имеет смысл, если сам декодер будет делать обработку звука. Наш декодер обычно только декодирует.