Para codificar o vídeo, você ainda terá que obter os dados de cada quadro em um formato interno, de onde pode ser alimentado ao codificador.
AVFrame
é usado para representar quadros internamente e pode usar qualquer formato de pixel desejado - você basta alocá-lo corretamente.
E é por isso que a decodificação leva o tempo da CPU, mesmo que os formatos de pixel de entrada e saída sejam os mesmos: você precisa alocar memória para cada quadro, lê-lo (mesmo que seja dados brutos) e passar esse quadro para o codificador. Um exemplo de como a codificação e a decodificação são tratadas pode ser visto aqui .