Я пытаюсь использовать sws_scale для преобразования изображения из RGB в YUV420P. Код, который я использую в C ++, выглядит следующим образом:
SwsContext *swscontext = sws_getContext(current_width,
current_height,
PIX_FMT_RGB24,
current_width,
current_height,
PIX_FMT_YUV420P,
SWS_FAST_BILINEAR,
NULL,
NULL,
NULL);
const int srcstride[3] = {current_width * 3, 0, 0};
BYTE *data_pos[3] = {data, NULL, NULL};
BYTE *dest[3] = {yuv,
yuv + current_width * current_height,
yuv + (current_width * current_height)
+ ((current_width * current_height) / 2)};
const int dststride[3] = {current_width, current_width / 2, current_width / 2};
sws_scale(swscontext, data_pos, srcstride, 0, current_height,
dest, dststride);
Плоскости Y и U закодированы правильно, но плоскость V полностью записана со значением 0x80
Интересно, я что-то не так делаю.