51

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

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

52 (изменено: LongKick64, 2019-10-20 04:43:54)

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

Хорошо, объясните мне тогда такой момент. Есть два клипа. В обеих клипах 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?

https://i.imgur.com/eTbyJEC.png

https://i.imgur.com/vC7Wf15.png

53

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

В первом случае чистый PCM, минуя декодер идёт дальше. Второй случай - Blu-Ray формат, его ещё надо обработать. Ну в данном случае декодер выводит в 32-bit PCM.

I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

54 (изменено: LongKick64, 2019-10-20 07:14:36)

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

А почему, собственно, не во Float?

55

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

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 - преобразование "вроде как без потерь". Формат представления чисел меняется. Имеет смысл, если сам декодер будет делать обработку звука. Наш декодер обычно только декодирует.