I need to write a software that does:
- Get an uncompressed video from disk
- Compress it into MPEG-1 or MPEG-2 being able to change quantization matrix, GOP size and/or macroblock size for DCT/motion search
- Apply a repetition code to add redundancy
- Simulate transmission over a noisy channel with given error rate
- Reconstruct the original stream from the repetition code
- Decode the video and compare it with the original one by gathering stats like frame-by-frame difference, file size and stuff like that
This should by done by a nice GUI to show the input and output videos, alongside their frame difference.
Given what I need to do, I can write some requirements:
- An encoder which allows me to change some of the parameters (needed for point 2)
- A language that allows me to work at bit level (needed for points 3 and 5)
- A language that allows me to build a nice GUI using a designer (GUI is not the core of the project so I can't afford wasting time by writing one)
So far my searches have led to mixed results that are not giving me enough resources to start.
My first find was this MATLAB project which implements MPEG and has some parameters that can be tweaked (like quantization matrix and GOP pattern for example). The problem here is that I don't know MATLAB at all, so I have no idea on how to link everything and build a GUI.
So the next step was to move to JAVA, and I found a LOT of FFMPEG wrappers, but none seems to allow me to set the parameters that I need. My last try was with Xuggler but the Wiki is down and the documentation does not talk about what I need. Plus, JAVA doesn't work at bit level so I'd have issues applying the repetition code.
Failing with JAVA led me to C# and DirectShowNet, but the documentation is quite lacking and I don't know how to start because I didn't find anything related to setting the parameters that I need using Filters.
The question now is: is there any language/framework/platform that allows me to do what I need without having to deal with pure C/C++? I'd expect a lot of stuff on this matter since we're talking about well known codecs, still I'm having a hard time finding what I need.