Не могу придумать, что делать с этой проблемой. При транскодировании большого видео(от часа) в оперативу натекает просто кошмарно, а что делать - не знаю. Дебажил, но с разными видео память выделяется разными функциями и я уже запутался, где - что. Конечно, ещё пару дней красноглазого выискивания и, возможно, всё найду, но как-то не хочется идти этим путём. Вот тут схожая проблема, но решение заключается в обёртке QtFFmpegwrapper, которая, по сути, ничем не отличается от моего кода(или я что-то пропустил).
текст моего метода ниже. То, что выделено маллоком, освобождается вне метода. Пакет тоже освобождается, всё проверено. Есть у кого какие идеи? :)
int
Videocut::encode(
	AVStream *anOutputStream,
	AVFrame *aFrame,
	AVPacket *aPacket
)
{
	AVCodecContext *outputCodec = anOutputStream->codec;
	if (!anOutputStream ||
        !aFrame ||
        !aPacket)
	{
		return 1;
		/* NOTREACHED */
	}
	uint8_t * buffer = (uint8_t *)malloc(
		sizeof(uint8_t) * _DefaultEncodeBufferSize
		);
    	if (NULL == buffer) {
        	return 2;
        	/* NOTREACHED */
   	}
	int packetSize = avcodec_encode_video(
		outputCodec,
        	buffer,
        	_DefaultEncodeBufferSize,
        	aFrame
		);
	if (packetSize < 0) {
		free(buffer);
		return 1;
		/* NOTREACHED */
	}
	aPacket->data = buffer;
	aPacket->size = packetSize;
	return 0;
}

