Абсурдные, безумные и нереальные SAR и DAR [Не баг]

Автор Evgeniy1990, 07 мая 2019, 00:06:22

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

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

Evgeniy1990

Описание проблемы:

Существуют видео файлы, имеющие нестандартные размеры кадров видео, например: 852х478, или 868х468 и т.д.
В результате чего, значения SAR и DAR отображаются просто некорректно, а если точнее, то они просто абсурдные и нереальные, вплоть до отрицательных значений. Достаточно всего лишь навсего открыть свойства видео декодера и статистику самого видео-рендерера EVR-CP. И будет видно, какие значения SAR и DAR они нам отображают, ну просто нереально длинные, причем настолько, что даже не умещаются в строки видео декодера и статистики видео-рендерера EVR-CP соответственно.

Выглядит это так.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Пример такого файла(таких файлов).
Эти значения AR берутся же не из головы, они рассчитываются - и не просто из размера видео-кадра.
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

Evgeniy1990
Дроби пропорций корректны скорее всего. Выложи сами файлы.

Evgeniy1990

Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

Как я и думал - это MP4.
Для видео-дорожки присутствует атом \'pasp\', значения
num = 22921
den = 22963
Для того чтобы рассчитать AR - значения перемножаются с шириной/высотой соответственно, получаем
19528692
10976314
Далее сокращаем(уменьшаем) значения и получаем
9764346
5488157

именно эти значения и задаются в выходной медиа-тип
dwPictAspectRatioX: 9764346
dwPictAspectRatioY: 5488157

Если поделить то получается 1.77... что примерно и соответствует 16:9.

Так что передаем привет утилитам которые такое пишут :)

Единственное какой выход я вижу - это либо при расчете AR "грубо" уменьшать значения до значений <= 100(простым делением на 2, точность от этого немного конечно пострадает, можем вместо 1.77 получить 1.8), либо везде где отображаются значения выводить дробь с округлением до 2 знаков после запятой.
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Единственное какой выход я вижу - это либо при расчете AR "грубо" уменьшать значения до значений <= 100Нельзя такое делать в принципе. Данные будут некорректные. Это информационное окно, оно отображает то, что есть, а не чьи-то хотелки.
Напомнило историю о округлении числа Пи до 3,2.

Добавлено: 2019-05-07 20:51:28

Но тут есть проблема c SAR, который должен быть 22921:22963, а на деле
Размер кадра: 852x478, SAR 93097523:95235617, DAR 9764346:5488157
Добавлено: 2019-05-07 21:23:49

Вывод SAR поправил в r4543. Теперь так
Размер кадра: 852x478, SAR 22921:22963, DAR 9764346:5488157