Как создать кодировщик V210 в чистом коде C/C++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как создать кодировщик V210 в чистом коде C/C++

Сообщение Anonymous »

Я пытаюсь реализовать кодирование видео V210, самостоятельно написав кодировщик на c/c++ и не используя какую-либо библиотеку.
Чтобы добиться этого, я пытаюсь понять, как я могу создайте данные кадра, а затем используйте FFMPEG для помещения кадров в видеоконтейнер с помощью этой команды

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

ffmpeg -s 1280x720 -f v210 -i frames.bin -c:v copy sample_video.mkv
Чтобы создатьframes.bin, я создаю список блоков на основе спецификаций, которые я нашел выше.
Код, который я создаю использование для упаковки YUV в блок выглядит следующим образом:

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

#pragma pack (push,1)
class V210Block
{
public:
void Init(uint16_t y[], uint16_t u[], uint16_t v[])
{
Init(y[0], u[0], v[0],
y[1], u[1], v[1],
y[2], u[2], v[2],
y[3], u[3], v[3],
y[4], u[4], v[4],
y[5], u[5], v[5]
);
}

void Init(uint16_t y0, uint16_t u0, uint16_t v0,
uint16_t y1, uint16_t u1, uint16_t v1,
uint16_t y2, uint16_t u2, uint16_t v2,
uint16_t y3, uint16_t u3, uint16_t v3,
uint16_t y4, uint16_t u4, uint16_t v4,
uint16_t y5, uint16_t u5, uint16_t v5
)
{
PackValuesToBlockbe(u0, y0, v0, 0);
PackValuesToBlockbe(y1, u2, y2, 1);
PackValuesToBlockbe(v2, y3, u4, 2);
PackValuesToBlockbe(y4, v4, y5, 3);
}
private:
uint32_t block[4] = { 0 };
inline void PackValuesToBlockle(uint16_t value1, uint16_t value2, uint16_t value3, int blockNo)
{
// Little-endian packing (least significant bits to lower memory addresses)
block[blockNo] = (value1 

Подробнее здесь: [url]https://stackoverflow.com/questions/78497756/how-to-creating-v210-encoder-in-pure-c-c-code[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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