Форум Beholder http://beholder.ru/bb/ | |
Формат данных кадра на входе в плагин http://beholder.ru/bb/viewtopic.php?f=10&t=1434 |
Страница 1 из 1 |
Автор: | problemsolver [ 17 окт 2005, 12:50 ] |
Заголовок сообщения: | Формат данных кадра на входе в плагин |
Где можно прочитать, в каком формате лежат данные кадра, который передается в плагин. Т.е. я беру пример inverse и заменяю команду xor в обработчике на простое присваивание, типа Код: for y := 0 to pPr^.FrameHeight - 1 do begin
for x := 0 to xcycles - 1 do begin Block32 := PULONG(pSrcBuffer); Block32^ := dword(0); inc(pSrcBuffer, 4); end; end; Почему у меня экран зеленый, а не черный? |
Автор: | Support [ 17 окт 2005, 17:16 ] |
Заголовок сообщения: | |
Формат данных кадра можно узнать из значения поля PixFmt структуры PARAM_STR при старте стримминга. Данные могут находиться либо в формате YUY2, либо в RGB24. В зависимости от этого необходимо ветвить алгоритм обработки кадра. В примере Inverse ветвления не происходит, т.к. процедура инверсии цвета одинаково реализуется для обоих форматов данных. В Вашем примере Вы имеете дело с форматом YUY2, где цвет двух соседних пикселов кодируется четырьмя байтами, два из которых являются яркостями каждого пиксела в отдельности, а два других представляют собой нормированные цветозразностные составляющие B-Y и R-Y для обоих пикселов одновременно. Чтобы получить заливку чёрным цветом в формате YUY2 необходимо заполнить массив кадра не нулями, а значением $80008000. Узнать больше о форматах представления данных Вы можете, например, здесь. |
Автор: | problemsolver [ 18 окт 2005, 16:05 ] |
Заголовок сообщения: | |
писал(а): Узнать больше о форматах представления данных Вы можете, например, здесь.
Блин, хоть убейте, не могу врубиться Можете дать конкретную формулу преобразования YUY2->RGB24 и обратно Я не могу понять как преобразовать YUV4:2:2 в YUV4:4:4, а дальше нашел на www.microsoft.com Или хотя бы дайте понять что обозначает вот это Converting 4:2:2 YUV to 4:4:4 YUV requires horizontal upconversion by a factor of two. Я понимаю, что 4 байта я как-то должен превратить в 8, но не понимаю как. |
Автор: | Support [ 18 окт 2005, 17:45 ] |
Заголовок сообщения: | |
писал(а): Можете дать конкретную формулу преобразования YUY2->RGB24 и обратно YUV -> RGB R = Y + 1.402 * ( V - 128 ) G = Y - 0.714 * ( V - 128 ) - 0.334 * ( U - 128 ) B = Y + 1.772 * ( U - 128 ) RGB -> YUV Y = 0.299 * R + 0.587 * G + 0.114 * B U = 0.5643 * ( B - Y ) + 128 V = 0.7132 * ( R - Y ) + 128 Цитата: Converting 4:2:2 YUV to 4:4:4 YUV requires horizontal upconversion by a factor of two.
С форматом YUV4:4:4 мы не работали. Не было надобности. |
Автор: | problemsolver [ 19 окт 2005, 09:05 ] |
Заголовок сообщения: | |
писал(а): писал(а): Можете дать конкретную формулу преобразования YUY2->RGB24 и обратно YUV -> RGB RGB -> YUV Вот спасибо. |
Автор: | BeteTest [ 31 авг 2008, 09:45 ] |
Заголовок сообщения: | |
писал(а): YUV -> RGB
R = Y + 1.402 * ( V - 128 ) G = Y - 0.714 * ( V - 128 ) - 0.334 * ( U - 128 ) B = Y + 1.772 * ( U - 128 ) RGB -> YUV Y = 0.299 * R + 0.587 * G + 0.114 * B U = 0.5643 * ( B - Y ) + 128 V = 0.7132 * ( R - Y ) + 128 Эти формулы и применяются? Они же не эффективны с точки зрения выполнения ЦП. |
Автор: | EugeneF [ 31 авг 2008, 23:55 ] |
Заголовок сообщения: | |
Напишите эффективные... В самом тюнере и видеокарте эти преобразования выполняются аппаратно. |
Автор: | BeteTest [ 01 сен 2008, 05:24 ] |
Заголовок сообщения: | |
См. гугль, 16 битные числа обрабатываются процессором напрямую. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |