JavaDecoderProject
From Diracvideo
[edit] Java Decoder Project
The Java decoder project is one of the Google Summer of Code projects assigned to Dirac and is being carried out by Bart Wiegmans. This page describes the project plan.
[edit] Prototype Stage
- Implement (new code and/or copying) the LeGall-5,3 2-D inverse wavelet transform in Java. This is basically translating schro_iiwt_5_3() into Java. This can be a standalone program, with the intent that the wavelet code will eventually be shifted into a library. (i.e., write it like a library, but don't do the library details yet).
- . Best would be to write it like testsuite/wavelet_2d -- as a comparison test between hand-verified 1-D code and the actual library 2-D code. However, it doesn't actually have to be 100% correct at this stage.
- Implement SchroUnpack (new code and/or copying) as a java class. Some testing may be interesting, but it's pretty easy to know if it's right or not.
- Implement schro_decoder_parse_picture() in java (new code and/or copying). This should focus on intra frame decoding.
- Implement schro_decoder_decode_transform_data() in java (new code and/or copying). Many features can be ignored, such as arithmetic coding and code blocks.
- Implement prototype glue code necessary to combine everything above into a prototype decoder that is capable of decoding intra-only Dirac with the 5,3 wavelet filter. The glue code will likely cover:
- Conversion from the 16-bit signed array used for wavelet transforms into the representation used by Cortado.
- Conversion of Dirac stream packets in Cortado's representation into something that can be parsed by SchroUnpack and schro_decoder_parse_picture.
- Some quick-and-dirty replacement for SchroParams, SchroPictureSubbandContext, and SchroVideoFormat.
- Combine everything together to get a decoder capable of decoding a very simple and specific format of Dirac stream.
The goal of this stage is to learn what is necessary to plan the next stages.
[edit] Design Stage
Once we get to this stage, we should have enough information to resolve remaining design issues. The current issues:
- How do we create a maintainable dual-language code base?
- Which areas of the code will need completely separate implementations in Java and C?
- Does Cortado need any structural improvements to handle Dirac?
