video - mmpeg - ffmpeg wiki
¿Alguien puede ayudar a comprender AVFrame.linesize[]? (2)
Echa un vistazo a la descripción de los formatos de cuadros de video:
Verá que los formatos se dividen en dos grandes grupos: empaquetado y plano, dependiendo de si los componentes se mantienen separados o intercalados. Las zancadas tienen un significado ligeramente diferente para ellas, y básicamente son la cantidad de bytes que debe omitir para avanzar una fila.
Intenté encontrar lo que significa cada celda de AVFrame.linesize[]
, pero no lo encontré.
Como entendí el linesize[0]
es el ancho, el linesize[1]
es la altura.
- Si tengo razón, ¿qué significan otras células?
- ¿Por qué después de
avcodec_decode_video2(codecCtxDecode, frameDecoded, &frameFinished, &packet);
solo el tamaño de línea [0] tiene el valor y las otras celdas son siempre 0?
ACTUALIZADO
Creo que AVFrame.data [i] y AVFrame.linesize [i] son los datos de un color específico en la fila y la longitud de la fila, ¿estoy en lo cierto?
En el caso de datos planares, como YUV420
, el linesize[i]
contiene zancada para el i
-ésimo plano.
Por ejemplo, para el cuadro 640x480
data[0]
contienen un puntero al componente Y
, los data[1]
y los data[2]
contienen punteros a los planos U
y V
En este caso, linesize[0] == 640
, linesize[1] == linesize[2] == 320
(porque los planos U
y V
son menores que la mitad del plano Y
)
En el caso de datos de píxeles ( RGB24
), solo hay un plano ( data[0]
) y linesize[0] == width * channels
( 640 * 3
para RGB24
)