Потрясающий баг в Хроме (браузере):
https://bugs.chromium.org/p/chromium/issues/detail?id=1116922&q=agoode
Перескажу в двух словах. Есть популярный формат, в котором вебкамеры пересылают видео в компьютер: MJPEG, это по сути каждый кадр отдельная картинка JPEG (для видео высокого разрешения он не используется, если я верно понял). В этом формате яркость пикселей обычно передается значением от 0 до 255, но есть "ограниченный профиль", в котором используется диапазон 16-235 (почему???). Для передачи по USB вроде бы надо использовать этот ограниченный профиль, но оказывается, что многие вебкамеры этого не делают и посылают полный профиль. А программы (включая Хром) ожидают увидеть 16-235, и "расширяют" диапазон значений, которые видят. Не все программы, несколько работают правильно, но многие. Хотя с другой стороны, поди пойми, вроде Хром как раз работает правильно, а вебкамеры посылают неправильно. Короче, в итоге видео чуть хуже качества выходит, особенно в очень темных или очень ярких местах. И это уже много лет продолжается, разработчики не замечали, потому что вебкамеры и так не ахти качество, хотя пользователи жалуются время от времени.
Это все такая рукалицо, когда читаешь, просто не знаю, как еще прокомментировать. А почему не сделать информацию о диапазоне частью метаданных формата, у кого руки отсохли???
... На днях попалось где-то описание программирования, кажется в Твиттере, потерял ссылку. Представьте себе, что вы находитесь в виртуальной реальности, внутри большого красивого дома, со вкусом обставленного, вы заходите в спальню, на столике, покрытом кружевной скатертью, стоит красивая ваза. Вы замечаете, что под вазой скатерть немного подмялась, и осторожно поднимаете край вазы, чтобы разгладить скатерть. Дом вокруг вас рассыпается в обломки камня и труху. Вот так устроено программирование.
https://bugs.chromium.org/p/chromium/issues/detail?id=1116922&q=agoode
Перескажу в двух словах. Есть популярный формат, в котором вебкамеры пересылают видео в компьютер: MJPEG, это по сути каждый кадр отдельная картинка JPEG (для видео высокого разрешения он не используется, если я верно понял). В этом формате яркость пикселей обычно передается значением от 0 до 255, но есть "ограниченный профиль", в котором используется диапазон 16-235 (почему???). Для передачи по USB вроде бы надо использовать этот ограниченный профиль, но оказывается, что многие вебкамеры этого не делают и посылают полный профиль. А программы (включая Хром) ожидают увидеть 16-235, и "расширяют" диапазон значений, которые видят. Не все программы, несколько работают правильно, но многие. Хотя с другой стороны, поди пойми, вроде Хром как раз работает правильно, а вебкамеры посылают неправильно. Короче, в итоге видео чуть хуже качества выходит, особенно в очень темных или очень ярких местах. И это уже много лет продолжается, разработчики не замечали, потому что вебкамеры и так не ахти качество, хотя пользователи жалуются время от времени.
Это все такая рукалицо, когда читаешь, просто не знаю, как еще прокомментировать. А почему не сделать информацию о диапазоне частью метаданных формата, у кого руки отсохли???
... На днях попалось где-то описание программирования, кажется в Твиттере, потерял ссылку. Представьте себе, что вы находитесь в виртуальной реальности, внутри большого красивого дома, со вкусом обставленного, вы заходите в спальню, на столике, покрытом кружевной скатертью, стоит красивая ваза. Вы замечаете, что под вазой скатерть немного подмялась, и осторожно поднимаете край вазы, чтобы разгладить скатерть. Дом вокруг вас рассыпается в обломки камня и труху. Вот так устроено программирование.