SchroCodeWalkthrough

From Diracvideo

Jump to: navigation, search

Contents

[edit] Schroedinger Code Walkthrough

[edit] Code Layout, Top Level

[edit] doc

Documentation in GtkDoc form. Mostly just a skeleton of reference documentation.

[edit] gst

GStreamer elements. Contains the encoder and decoder elements, plus a few other unimportant elements that wrap some of libschroedinger's signal processing code.

[edit] misc

Random junk that ds uses for manual testing.

[edit] tools

Tools for maipulating Dirac bitstreams.

[edit] testsuite

An unsorted, uncategorized jumble of test programs decipherable mainly by ds.

[edit] transcode

Ignore this directory and its contents. It should be moved outside of the schroedinger tree.

[edit] Code Layout, schroedinger/

[edit] schro.c

Library initialization.

[edit] schroanalysis.c

Generic signal processing related to encoder. Not related to Dirac algorithms.

[edit] schroarith-i386.c

Junk.

[edit] schroarith.c

Arithmetic coding and decoding. Implements Dirac algorithms.

[edit] schroasync-none.c

SchroAsync is a class that provides an abstraction to threading. A "task" is a single stage of encoding or decoding a picture, which is executed asynchronously in a separate thread controlled by SchroAsync. This file implements the non-threaded option.

[edit] schroasync-pthread.c

Same as schroasync-none.c, except that it uses the pthread library.

[edit] schrobuffer.c

Buffers are reference counted areas of memory that represent raw data. Usually this means packets or portions of packets of a Dirac stream. This code is nearly identical to the buffer code in swfdec. Unrelated to Dirac algorithms.

[edit] schrocog.c

An aborted attempt to move some of the signal processing to a separate library.

[edit] schrocuda.c

Some code related specifically to the CUDA backend.

[edit] schrodebug.c

Debugging subsystem.

[edit] schrodecoder.c

Implements SchroDecoder, the class that handles decoding Dirac streams and rendering into images. Includes parsing code for Dirac streams. Includes scheduling for decoding of pictures. (These three concepts are not clearly delineated in the code, which is unfortunate.)

[edit] schrodomain.c

Implements SchroMemoryDomain and SchroExecDomain, which represent categories of memory and execution resources that are available to the encoder or decoder. For example, memory can either be local to the CPU (i.e., obtained by malloc() or similar), available only to a GPU, or shared between the two. These concepts are represented by three memory domains.

[edit] schroencoder.c

Implements SchroEncoder, the class that handles encoding Dirac streams from images. Includes creation of the Dirac bitstream. Includes scheduling for encoding of pictures. Includes encoder parameters. Includes some decision making in the encoder. Similar to the encoder, these concepts are not separate in the code, but should be.

[edit] schroengine.c

Some high-level decision making code for the encoder. Mixed in with details about handling GOP structures, setting up encoding parameters.

[edit] schrofft.c

Implementation of Fast Fourier Transforms, used by the phase correlation code. Not related to Dirac algorithms.

[edit] schrofilter.c

Pre-filtering signal processing for the encoder, which are choosable via encoder parameters. Not related to Dirac algorithms.

[edit] schroframe.c

Implementation of SchroFrame class. SchroFrames hold arrays of data, particularly data that represents images. Also includes a lot of signal processing for images, some of which is related to Dirac algorithms, some not.

[edit] schrogpuframe.c

Signal processing for SchroFrames, but implemented for CUDA.

[edit] schrogpumotion.c

Motion rendering implemented for CUDA.

[edit] schrohistogram.c

Generic code for exponentially binned histograms.

[edit] schrolist.c

[edit] schrolowdelay.c

[edit] schrometric.c

[edit] schromotion.c

[edit] schromotionest.c

[edit] schrooil.c

[edit] schropack.c

[edit] schroparams.c

[edit] schrophasecorrelation.c

[edit] schroquantiser.c

[edit] schroqueue.c

[edit] schrossim.c

[edit] schrotables.c

[edit] schrounpack.c

Decodes variable bit rate integers encoded with exp-golomb encoding. exp-golomb encoding is used in various parts of the schroedinger bitstream, most notably the sequence header and the picture parse headers.

[edit] schrounpacktables.c

[edit] schroutils.c

[edit] schrovideoformat.c

Contains the code for managing the video format structure. This specifies most properties of the output video. The actual code for parsing the video format is in schrodecoder.c.

[edit] schrowavelet.c

Contains the code for transforming and inverse transforming data using the Dirac algorithms. Most of the actual work is done by liboil.

[edit] schrowavelettables.c

Personal tools