On sobota, 15 marca 2008, Justin Ruggles wrote:
I agree that this would be a good task, and also that it won't be as easy as the others. The qualification task is so that we have some example of your coding abilities and dedication to the task. Having another sample of your code won't really help us. We already have that.
:) I would like to see your dedication to last year's task by helping
to get it ready-for and into FFmpeg SVN.
I have just been very busy lately with other stuff. If I can get help with getting these things done, and then a final patch made which makes it into SVN, that would go a long way. I do want to be clear that this would not guarantee a spot, but it would qualify you to be considered on the merits of your proposal and all of the other factors we use to decide which projects get chosen.
Here is my current plan of action regarding AC3 and E-AC3, which is subject to change if needed.
1. Get the fast, simple AC3 downmixing working based on Rich's suggestion of doing the short-block downmixing after the IMDCT but before the overlap/add/window. I want to do this first because it will likely change the structure of the decoder a bit, which will be easier before E-AC3 is integrated. Right now I'm getting artifacts. My plan is to analyze a single frame, in depth, to find out where the problem lies.
2. Right now AC3 is suffering from a major stability problem. There are many coded values which affect how many bits are read, and the bitstream reader does not have any built-in protection from reading past the input buffer. So malformed or damaged streams can (and do) cause memory access problems (detected by valgrind) and/or segfaults. I have several ideas for solutions to this, but I need time to test each one to see which is the fastest.
3. Go through the list of invalid bitstream conditions in the specs and add as many of those checks as possible. Some may not be needed if they significantly decrease decoding speed and do not affect stability. I have already started on this...it just needs to be tested and applied.
4. Do the same condition checks for E-AC3 as well, but we don't have a nicely prepared list to work from.
Ok. Unfortunately, most of the conditions from AC3 hasn't much in common with E-AC3, but I'll try to think of some correctness tests of the stream.
5. Update the E-AC3 decoder to include all the changes since last update and any subsequent changes.
I should do it before or after those 3 points which I was given?
6. There are a couple of samples which seem to be 7.1-channel. It would be nice to get this working before SVN inclusion.
I haven't seen 7.1 files. Where can I find them?
7. Error conclealment. Simple error concealment is fairly trivial. For more robust detection and concealment, Michael made some great suggestions for guidelines. It would require some reworking of the AC3 parser.
Can you give me some more explanations on this topic, because I think I don't understand what do you mean properly
8. Prepare a final patch and go through the ffmpeg-devel review process.
So that's about it. :) If anyone feels I should skip any of these steps or change the priority, I am open to suggestions.
That said, I think a good SoC qualification task would be to work on #4 to #7 while I concentrate on #1 to #3. Then once that's all ready, do #8. I will, of course, help with all of this and would make sure to prioritize this over my other on-going projects.
Ok, so I treat #4 to #7 as a qualification task, I'll try to do them as soon as I have some free time:) -- Bartlomiej Wolowiec