Каковы все операции, которые FFMPEG использует для преобразования из yuv420p в RGB BMP? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь воспроизвести в своем собственном коде, не используя библиотеки ffmpeg, операции, которые ffmpeg выполняет для преобразования yuv420p в rgb. Изначально я думал, что это будет внутри функции: xyz12Torgb48 в swscale.c, но, выполняя некоторую трассировку, он выглядит в yuv2rgb.c ff_yuv2rgb_c_init_tables, которую я не совсем вижу.

1 Ответ

0 голосов
/ 12 апреля 2019

ну, так как никто не вышел с решением, я просто опубликую, что я нашел, используя инструмент valgrind = callgrind ffmpeg_g это версия ffmpeg с объектами отладки, которая показала мне вызываемые функции, а внутри \ libswscale \ x86 есть файл yuv2rgb_template.c, который, кажется, содержит операции, которые вы выполняете yuv2rgb, в сборке

 * Conversion is performed in usual way:
 * R = Y' * Ycoef + Vred * V'
 * G = Y' * Ycoef + Vgreen * V' + Ugreen * U'
 * B = Y' * Ycoef               + Ublue * U'
 *
 * where X' = X * 8 - Xoffset (multiplication is performed to increase
 * precision a bit).
 * Since it operates in YUV420 colorspace, Y component is additionally
 * split into Y1 and Y2 for even and odd pixels.
 *
 * Input:
 * mm0 - U (4 elems), mm1 - V (4 elems), mm6 - Y (8 elems), mm4 - zero register
 * Output:
 * mm1 - R, mm2 - G, mm0 - B
 */ ```
...