Hi Gericom! I hope you don't mind me reaching out.
I've been working on a project called
internearchiveds, a project based on your YoutubeDS project from 10 years ago. Since the YouTube API shut down years ago, the original YouTubeDS unfortunately can't function anymore. Rather than letting it become lost, I'm trying to preserve as much of the original project as possible by adapting it to play videos from the Internet Archive instead. The goal isn't to remake YouTubeDS from scratch—it's to keep the original application alive while changing as little of your code as possible.
I've managed to get the source compiling with modern devkitPro, restored the missing API key support, and produced a working .nds build. I've also compared the rebuilt ROM against an older working backup and reverse-engineered quite a bit of the code to understand how everything fits together.
However, I've run into one major problem.
The playback code (PlayVideo()) expects two things to already exist:
- mVideoHeader, which contains the MP4/MOV header used by the MPEG-4 decoder.
- mRingBufferHttpStream, which streams the video data over HTTP.
The strange part is that nowhere in the source tree are these ever initialized. PlayVideo() reads mVideoHeader, and later frees it, but it's never assigned anywhere. Likewise, the only creation of RingBufferHttpStream is inside an old commented-out test block.
I've searched the entire repository, disassembled the built ELF, checked the Git history (there's only one commit), looked through every source file, and compared the compiled ROM. As far as I can tell, the code that downloads/parses the video header and starts playback is simply missing from the repository.
I was wondering if you happen to remember this part of the project. Was there another source file that never made it into Git? Or perhaps an older backup, branch, ZIP, or local copy that still contains the playback initialization code?
Even a rough description of how it originally worked would be incredibly helpful. I'm trying to preserve the original codebase as faithfully as possible while adapting it to work with a service that's still available today.
Thanks for creating YouTubeDS in the first place, and thanks for taking the time to read this!