Git Product home page Git Product logo

theora-exp's Introduction

These libraries were created to allow me to run my own personal experiments
 with Theora.
They are not currently part of the official Theora distribution.
Although they are based upon the VP3.2 and Theora source, which as of the time
 of this writing serve as the only complete documentation of the VP3 and Theora
 formats, they were written from scratch.

Decoder:
The decoder here is feature-complete, up to and including all planned bitstream
 features for the initial Theora release.
Some of these are not yet present even in the reference decoder. This decoder
is strictly better than the reference decoder - it is both more complete, more
secure, and faster.
These include:
- Support for non-VP3 style quantization matrices (i.e., complete support for
   the additional flexibility added to the quantization matrix specification).
- Support for additional pixel formats: 4:4:4 and 4:2:2 (in addition to the
   4:2:0 format supported by VP3).
- Support for block-level qi values.
Additional features of the new library design:
- Improved API design.
  Internal structures are hidden better, making it easier to upgrade the
   library and maintain binary compatibility.
  Generic ioctl-style API allows some encoder and decoder parameters to be
   modified on the fly, and provides a route of future extensibility.
  Additional minor improvements.
- The decoder library is completely separated from the encoder library, so
   applications need only link against the portions they use.
- Hardened against invalid video data.
  Special attention has been paid to eliminate possible buffer overflows and
   access violations when receiving invalid video data, for better security.
- A backwards-compatibility API wrapper, for applications that use the older
  libtheora API.
Algorithmic optimizations:
- DCT token and motion vector decoding have been optimized to use fewer calls
   to oggpackB_read().
- All DCT tokens are decoded in an initial pass.
  This allows us to buffer the tokens, instead of the complete set of DCT
   coefficients, yielding a reduced memory footprint and increased cache
   coherency.
- Striped decoding API.
  After the tokens are decoded, the remaining steps are pipelined and clients
   receive decoded frame data as soon as it is available, while it is still in
   cache.
Currently missing features:
- Advanced buffering API: Client-specified buffers.
  Clients could provide external buffers to decode into when out-of-loop
   post-processing is enabled (if it isn't enabled, a copy has to be done
   anyway).

Encoder:
The encoder is highly experimental.
It currently generates bitstreams using ALL of the decoder features supported
 above.
There are still a few outstanding bugs, and the HVS model is very experimental.
The encoder is not built by default.

Compatibility Layer:
theora-exp comes with a compatibility layer for libtheora so it can be used
as a drop in replacement(only decoding right now). To do so, just change your
pkg-config call from "theora" to "theoracompat"

Building:
On Unix or Cygwin, building through automake is now supported.
On a fresh checkout, run:
./autogen.sh --enable-encode
From a distribution tarball, run:
./configure --enable-encode
Then run:
make
make install

For Windows, MSVC++ 6 project files are provided.

A simple GNU Makefile is also provided.
Edit to taste.
This will likely disappear in a future version.

theora-exp's People

Watchers

James Cloos avatar Roy Tam avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.