HDR-кодер NvidiaC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 HDR-кодер Nvidia

Сообщение Гость »

Я пытаюсь использовать NVIDIA SDK для кодирования HDR-видео с помощью H265. Windows Media Foundation (пока) не поддерживает 10-битный ввод с H265.
Кажется, я не могу правильно передать цвета в кодировщик. Я пытаюсь визуализировать видео, которое имеет 3 изображения: одно зеленое со значением 1,0, одно со значением 2,0 и одно со значением 3,0 (максимум) в RGB, то есть в D2D1_COLOR_F это {0,1, 0,1}, {0,2,0,1} и {0,3,0,1}.
Правильно отображается только максимум 3 (левый — сгенерированный видео, правый цвет — правильный цвет, который должен отображаться в видео):
[img]https://i.stack. imgur.com/qdsoV.png[/img]

Если для зеленого установлено значение 2.0, вот результат:
Изображение

А если для зеленого установлено значение 1,0, то еще хуже:
Изображение

И это является результатом настоящего HDR-изображения:
Изображение

Кодер Nvidia принимает цвета в формате AR30, то есть 10 бит для R,G,B и 2 для Alpha (который игнорируется). Мой отрендеренный DirectX имеет цвета в GUID_WICPixelFormat128bppPRGBAFloat, поэтому я делаю это:

Код: Выделить всё

     struct fourx
{
float r, g, b, a;
};

float*f = pointer_to_floats;
for (int x = 0; x < wi; x++)
{
for (int y = 0; y < he; y++)
{
char* dx = (char*)f;
dx += y * wi * 16;
dx += x * 16;
fourx* col = (fourx*)dx;
DirectX::XMVECTOR v;
DirectX::XMVECTORF32 floatingVector = { col->r,col->g,col->b,col->a };
v = floatingVector;

// float is 0 to max_lim
float max_number = 3.0f; // this is got from my monitor's white level as described [here][6].

DirectX::PackedVector::XMUDECN4 u4 = {};
col->r *= 1023.0f / max_number;
col->g *= 1023.0f / max_number;
col->b *= 1023.0f / max_number;

u4.z = (int)col->r;
u4.y = (int)col->g;
u4.x = (int)col->b;

u4.w = 0;
DWORD* dy = output_pointer;
dy += y * wi;
dy += x;
*dy = u4.operator unsigned int();
}
}
Я подозреваю, что что-то не так с гаммой или что-то в этом роде.
Я не знаю, как действовать дальше.

Подробнее здесь: https://stackoverflow.com/questions/781 ... dr-encoder
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Получение цветов HDR перед применением тональной компрессии в шейдере SCNTechnique
    Гость » » в форуме IOS
    0 Ответы
    91 Просмотры
    Последнее сообщение Гость
  • Параметры CIContext для отображения HDR
    Anonymous » » в форуме IOS
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous
  • Сохранение изображений в формате Ultra HDR (JPEG_R)
    Гость » » в форуме Android
    0 Ответы
    24 Просмотры
    Последнее сообщение Гость
  • Файл в кодер/декодер Base64
    Гость » » в форуме JAVA
    0 Ответы
    64 Просмотры
    Последнее сообщение Гость
  • Кодер Python JSON вместо этого преобразует NaN в ноль
    Anonymous » » в форуме Python
    0 Ответы
    68 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»