Вручную кормить x264 моими собственными данными о движении?

Я пытаюсь кодировать поток, используя x264 (путем подачи отдельных изображений), но необычно то, что у меня уже есть некоторая информация о движении для моих кадров. Я точно знаю, какие области были изменены в каждом кадре, и я знаю, где произошло движение в кадре.

Есть ли способ передать x264 мою собственную информацию о движении? Я хотел бы дать ему векторы движения для заданных областей в кадре и как-то сказать, что определенные области в кадре гарантированно не имеют никакого движения в них.

Я думаю, что это может значительно улучшить производительность кодирования (потому что я позволяю кодеку полностью пропустить фазу оценки движения), а также должно несколько повысить качество в случаях, когда алгоритмы оценки движения кодера могли пропустить фактически произошедшее движение,

Нужно ли изменять кодировщик, чтобы сделать это, или это поддерживается в существующем API?

1 ответ

Решение

Краткий ответ: Нет, вы не можете подать свои данные оценки движения в x264.

Длинный ответ: IIRC, x264 выполняет свою работу, передаваясь в необработанном фрейме без дополнительных данных. Чтобы приспособить данные оценки движения, которые у вас есть, вы должны изменить исходный код x264, чтобы выполнить это.

Вы можете найти то, что вам нужно в течение common\mvpred.c или же encoder\me.c, Я не уверен, сколько разработчиков x264 действительно посещают переполнение стека (я знаю, что у одного из их ведущих разработчиков есть учетная запись здесь), но вы можете попробовать поговорить с ними по их обычным каналам на их IRC-канале или на форумах doom9.

Хотел бы я дать вам больше информации, но, к сожалению, я не особо разбираюсь в кодовой базе. Разработчики всегда готовы и могут помочь всем, кто хочет работать на x264.

Другие вопросы по тегам