[FFmpeg-devel] AVFrame linesize and OpenGL GL_UNPACK_ROW_LENGTH

Pavel Koshevoy pkoshevoy at gmail.com
Tue May 7 06:06:39 CEST 2013


I've added a couple of clarifications below.

On 05/06/2013 09:45 PM, Pavel Koshevoy wrote:
> Hi,
>
> OpenGL requires that texture row stride must be pixel aligned, because 
> GL_UNPACK_ROW_LENGTH parameter is expressed in pixels, not bytes.

Here are the docs on GL_UNPACK_ROW_LENGTH
http://www.opengl.org/sdk/docs/man/xhtml/glPixelStore.xml


>
> AVFrame linesize is byte aligned on 32-byte boundary.  This means that for 
> bgr24 and similar pixel formats rows are usually not pixel aligned and AVFrame 
> data can not be used directly as an OpenGL texture.
>

If AVFrame data rows are not pixel aligned then data has to be copied row-by-row 
into an intermediate frame with compatible alignment.  It's wasteful and I would 
like to avoid this because it noticably hurts playback performance in my player.

     Pavel



More information about the ffmpeg-devel mailing list