Для этого уже есть инструменты .
Если вы настаиваете на том, чтобы что-то делать самостоятельно (я так и делаю, так как не могу не платить за отдельные наборы инструментов), вы всегда можете создать новый вектор, содержащий только те элементы, которые вам нужно написать. Предполагая, что у вас есть YUV 4: 4: 4, и вы хотите записать его как YUV 4: 2: 0:
- Разделить
yuv444
на отдельные компоненты Y ', Cb, Cr
- Напишите
Y'
как есть, используя fwrite
- Downsample
Cb
и Cr
в два раза, чтобы получить Cb_down
и Cr_down
- Запись
Cb_down
и Cr_down
с использованием fwrite
в тот же дескриптор открытого файла