thedeemon: (Default)
[personal profile] thedeemon
Недавно обнаружил в своей программе, что при отображении в окошке текущего обрабатываемого видео иногда цвета не совсем такие, как надо. Это было видно, если исходное видео в формате YV12, а в процессе преобразуется в RGB32. Причем в получающемся файле все нормально, проблема только в отображении на экране в процессе. И на многих видео проблема была не заметна, а заметна лишь чуть-чуть на некоторых видеофайлах. Стал разбираться, и выяснилось, что в коде преобразования цветов из цветового пространства YUV в RGB было две грубых ошибки: сначала перепутаны местами цветовые плоскости U и V, а потом перепутаны позиции красного и синего цветов в четверке RGBA. В результате две этих ошибки друг друга почти компенсировали:



Слева - что получалось при таком двойном путании компонент, а справа - правильная картинка.

Re: офигенная ошибка =)

Date: 2010-09-16 05:10 pm (UTC)
From: [identity profile] theiced.livejournal.com
(записал в заметкм - kosiakk на работу не брать).

Re: офигенная ошибка =)

Date: 2010-09-16 05:38 pm (UTC)
From: [identity profile] kosiakk.livejournal.com
Аахахахаааха =) Спалился.

Скажете эта ошибка не так появилась? Слишком красиво для двух независимых ошибок.
Да и вообще я повзрослел, поумнел и сто лет так не делаю! Чессснослово

Re: офигенная ошибка =)

Date: 2010-09-16 06:09 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Не, не так, никакого подбора параметров не было.
Есть входные данные в формате YV12, состоящем из трех последовательных плоскостей разного размера - Y, U и V (первая ошибка - в YV12, в отличие от IYUV, сначала V, потом U). И есть формулы для перевода YUV-RGB, где в ходе редактирования и оптимизаций оказались перепутаны индексы.

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 28th, 2026 10:35 pm
Powered by Dreamwidth Studios