User:Chris48/Proposal

From MozillaWiki
Jump to: navigation, search

Abstract

JPEG XR is an image compression format originally developed and patented by Microsoft. The specification has been made available under the Microsoft Open Specification Promise, permitting an open source implementation. Though a Microsoft have release a ”HD Photo Device Porting Kit”, complete with source code and build configurations for multiple platforms, the licensing terms prohibit its use in systems which use strong copyleft licensing.


Proposal

I propose to build an open source library for performing JPEG XR decoding in a similair vein to the widely used libjpeg library. The proposal is based on the specification (available here http://www.itu.int/rec/T-REC-T.832-200903-I/en) though a more recent (and not freely available) specification exists which should be obtained before the project begins.

The interface to the library should mimic that of libjpeg as far as is sensible.


Outline of JPEG XR decoding process

We distinguish between the parsing process and the decoding process

Taken directly from the specification:

Parsing consists of:

  • Image layer and tile layer codestream parsing
  • Macroblock layer codestream parsing which includes parsing the transform coefficients and inverse scanning
  • Adaptation of VLC table selection and context models.

The decoding process consists of the following stages:

  • Coefficient remapping
  • Coefficient prediction
  • Dequantization
  • Sample reconstruction, which consists of the following stages:
  • When indicated, a first-level overlap filter
  • Second-level inverse transform
  • First-level inverse transform
  • When indicated, a second-level overlap filter
  • Output Formatting


Project Timeline

April 25th 
Community bonding period begins. IDE and revision control should be set up. An up to date specification needs to be aquired and read thouroughly - with problem areas identified. Any theoretical understanding required should be obtained. Reference software is available; this should be obtained to discern whether it would be of use (must be careful to avoid copyright issues, however may help with testing). The appropriate software engineering approach should be considered and plans for testing should be laid out (conformance tests are provided by the specification). A more detailed workplan should be ironed out with weekly deliverables. Structure and interface of the library should be sketched out.
May 14th
My final year exams are during the last half of May, so unfortunately I will be busy during this peroid.
June 1st
Coding begins. Interface to the library should be implemented. Psuedocode from the specification should be converted in to documented skeleton methods.
June 15th
Begin concrete implementation of specific decode processes. Focus will be on those identified as problem areas - most likely the transform functions and coefficient remapping. Unit test completed code.
June 29th
Complete the remainder of code for the decoding process. If possible, decoding process can be tested independently using input from parsing with the reference software (this may be too tricky to do to be worth it).
July 27th
Implement parsing stage. Begin testing and debugging complete decode process.
August 3rd
Full conformance testing and more debugging. Possibly test also for performance against reference software and Microsoft HD photo libraries.
August 15th
Suggested deadline. Final week to be spent ”scrubbing code, writing tests, improving documentation”.
August 22nd
Final deadline.