Hey guys, I was thinking of trying to port some Video Codecs to the 3DS, considering people seem to be using MJPEG. In particular I was thinking of writing a more efficient video player, and some maybe a new screen capture program (SD/Wifi). While I have experience in signals and image processing/compression, I've never needed to deal with a video/audio codec before (though I'm planning just going to port it over, so I don't suspect this will be much of a problem).
Unfortunately between work, university and Pokemon it may take a few months.
So here's the preliminary planning:
Unfortunately between work, university and Pokemon it may take a few months.
So here's the preliminary planning:
- Does anyone know if this has been attempted before? If anyone has a better starting point that would be awesome. I've looked around, but from what I can tell, we've only done MJPEG.
- Codec Choice for Video: I want to start out with something that has very low CPU usage for both encoding and decoding video; in particular I was thinking MPEG-1 part 2 for video. Any thoughts on this? I don't readily know of anything else that does this.
- Codec Choice for Audio: I'm not sure how much CPU we'll have to spare, but atleast for N3DS users, I think we can encode audio. Again, I want to choose something that has very low CPU usage. I'm not sure that the obvious choice, MPEG-1 part 3 Layer II, is best here.
- Something I'll need to research is the implementations available for these codecs. The two prominent choices being FFMPEG and VLC. I could also look into smaller scale implementations such as http://www.uow.edu.au/~nabg/MPEG/mpeg1.html.
- When choosing an implementation, I'll also want to keep in mind that the ARM11 should have DSP & SIMD instructions. Do any codecs take advantage of these already? Can any codecs take advantage of these?
- Another possibility for optimization is using the GPU. I'm not sure how necessary this would be, but if anyone has an educated guess...
- My 3DS specific knowledge is a bit limited here, but I assume for video capture, it's a matter of SVC backdoor to spawn a kernel11 thread and read from video memory. Anyone have any experience with this?
- I don't know the the 3DS audio systems well enough to perform capture, but I assume it's a case of hooking dsp or something. Is there any documentation out there on this already?
Last edited by sixtails,