[theora] More information on GSoC project

saulgoode at flashingtwelve.brickfilms.com saulgoode at flashingtwelve.brickfilms.com
Mon Apr 7 01:10:26 PDT 2008

Quoting Ribamar Santarosa de Sousa <ribamar.santarosa at gmail.com>:

> How does the data retrieved from GIMP looks like? Does the plugin
> receive simply N frames with widthXheight 8-bit rgb pixels only
> waiting to be encoded?

Each frame of video will be a separate image file (they are named in a  
manner such as \"file_0001.xcf\", \"file_0002.xcf\", etc) and will  
have to be loaded and processed sequentially. Since an image may be  
composed of several layers and masks, it is necessary to create a new,  
temporary layer which contains the composited result.

A plug-in can access the data in this layer either as single pixels,  
single rows, single colums, or as rectangular regions. The pixels may  
consist of 1 to 4 bytes, depending upon whether the data is grayscale,  
grayscale+alpha, RGB, or RGB+A.

Since the Theora page may require that the layer be padded to 16-pixel  
boundaries with blank pixels, fetching the data row-by-row would be  
the best approach -- converting to Y\'CrCb as you go.

Once the entire frame is processed, it will be necessary to scale the  
chroma buffers to half their original widths and heights (YUV420  

If you\'ve used GIMP and are concerned that this would be too slow  
since loading an image itself can take a second or two, it should be  
noted that the vast majority of this load time is spent creating the  
menus and display for the image; a task which is not necessary for our  


Quoting Nuwan Millawitiya <millawitiya at gmail.com>:

> I downloaded the code for GAP. Can you tell me the effective path
> (which files to be understand in much more details) to get a good idea
> about the flow of GAP.

I would advise examining the source for encoding AVIs  
and mirroring that functionality with Theora. There is a limited  
amount of information in the docs directory but it is presented more  
from the users point of view  

If you define a GAP_DEBUG system variable when invoking GIMP (in BASH  
this would be \"GAP_DEBUG=1 gimp\"), you will be provided a lot of  
technical details in the console as you run GAP commands. What OS are  
you using?

I will try to compose a more complete description of the other  
components sometime this week.

More information about the theora mailing list