Соотношение между lineSize, width, height в FFMPEG - PullRequest
0 голосов
/ 19 декабря 2018

Я запутался между linesize, height, width в AVFrame.

Насколько я понимаю, linesize - это шаги, которые в идеале должны быть шириной изображения, верно?

Однако значения width и linesize не совпадают.

AVFrame pFrame; 
cout<<"PFrame Linesize :"<<pFrame->data.linesize[0]<<endl;
cout<<"PFrame Width :"<<pFrame->width<<endl;

Вывод:

PFrame Linesize : 64
PFrame width : 12

Мой кадр имеет размер 12 * 12,

Согласно ответам на эту запись , размер линии должен быть таким же, как ширина.Но я не могу понять, почему они здесь разные.

1 Ответ

0 голосов
/ 27 февраля 2019

Я цитирую документы здесь:

 * For video, size in bytes of each picture line.
 * For audio, size in bytes of each plane.
 *
 * For audio, only linesize[0] may be set. For planar audio, each channel
 * plane must be the same size.
 *
 * For video the linesizes should be multiples of the CPUs alignment
 * preference, this is 16 or 32 for modern desktop CPUs.
 * Some code requires such alignment other code can be slower without
 * correct alignment, for yet other it makes no difference.
 *
 * @note The linesize may be larger than the size of usable data -- there
 * may be extra padding present for performance reasons.

Таким образом, размер строки для видео составляет

ширина * байтов на пиксель + заполнение строк

Он берет вас от начала одной строки данных изображения / кадра до начала следующей строки.

...