You're starting to become annoying. If you think you can do this better, do it and show us an example of an mp4 player on a 3ds+tell us how you did it. Rinnegatamante probably has his reasons for not using mp4 and using JPGV instead.Too bad OP wont swap to making his homebrew play another format like MP4.
look at this file size lul (can make it smaller but then quality would take a hit)
and heres the potential of running it through an actual video conversion not OPs shitting JPG making resize script. (btw still worse quality than the MP4) screenshots dont show blocking in scenes
Too bad MJPEG avi doesnt support 2pass encoding VBR/CRF
You're starting to become annoying. If you think you can do this better, do it and show us an example of an mp4 player on a 3ds+tell us how you did it. Rinnegatamante probably has his reasons for not using mp4 and using JPGV instead.
- MPEG4, H.264
- Hardware acceleration with Y2R for YUV -> RGB conversions
The new3ds is way faster
- 400x240 mpeg4 -> 37fps
- 400x240 h264 -> 16fps
Videos up to 1024x1024 are supported (but eh, that won't run fullspeed you know)
Prefer simple MPEG4 to H.264 ! (H.264 is ~4 times slower)
- Actually only if width < 800 if you set up the framebuffers to be using RGBA
Hey Rinnegatamante thanks for this is awesome!
I'm porting this to mac (almost done) but can you tell me what exactly is hex_set.exe?
Thanks!
3DAmnesic is still under development. JPGV is more stable and older than what 3DAmnesic is right now. That's because it's been around for quite a while (longer than 3damnesic) and uses an engine that is probably the most popular homebrew development... thingy for the 3ds.You mean like https://github.com/Lectem/3Damnesic
https://gbatemp.net/threads/release-3damnesic-a-poc-video-player.396184/
Problem is devs are focusing on useless stuff like JPGV when theres is stuff like above
But hey we his PoC is 6 months old and practically untouched but its miles ahead, now imagine what it would be like with an optimized code.
Like i said we have ARM cpus at least one guy is compiling FFMPEG for it.
But hey gotta give this thread more focus, its going places.
Uses an engine MJPEG has been around since the 90s yeah its more stable because it literally is just playing JPG images at a set framerate aka its a fast slideshow. Literally any device that can view a JPG image.3DAmnesic is still under development. JPGV is more stable and older than what 3DAmnesic is right now. That's because it's been around for quite a while (longer than 3damnesic) and uses an engine that is probably the most popular homebrew development... thingy for the 3ds.
Technology improvements can be found in the designs of H.263v2 Annex I and MPEG-4 Part 2, that use frequency-domain prediction of transform coefficient values, and in H.264/MPEG-4 AVC, that use spatial prediction and adaptive transform block size techniques. There are also more sophisticated entropy coding than what was practical when the first JPEG design was developed. All of these new developments make M-JPEG an inefficient recording mechanism.
Ok, thankshex_set just make a little change through a simple fopen / fwrite / fclose in binary mode to change unique_id in cia_workaround.rsf file
Don't think so. It's not really a video file but a few of jpg images in one file, so...Any chances of reading subtitles from a mkv or a srt?
Great work btw.
Reading subtitles? not sure. But you can draw subtitles in Lua Script:Any chances of reading subtitles from a mkv or a srt?
Great work btw.
-- Drawing lyrics
if (Timer.getTime(timer) <= 3500) then
Screen.debugPrint(0,14,"Seid ihr das Essen?",white,TOP_SCREEN)
Screen.debugPrint(0,28,"Nein, wir sind der Jaegar",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 14500 and Timer.getTime(timer) <= 20500) then
Screen.debugPrint(0,14,"Fumareta hana no",white,TOP_SCREEN)
Screen.debugPrint(0,28,"namae mo shirazu ni",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 20500 and Timer.getTime(timer) <= 25500) then
Screen.debugPrint(0,14,"Chi ni ochita tori wa",white,TOP_SCREEN)
Screen.debugPrint(0,28,"kaze wo machiwabiru",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 25500 and Timer.getTime(timer) <= 31500) then
Screen.debugPrint(0,14,"Inotta tokoro de",white,TOP_SCREEN)
Screen.debugPrint(0,28,"nani mo kawaranai",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 31500 and Timer.getTime(timer) <= 36500) then
Screen.debugPrint(0,14,"Ima wo kaeru no wa",white,TOP_SCREEN)
Screen.debugPrint(0,28,"tatakau kakugo da",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 36500 and Timer.getTime(timer) <= 41500) then
Screen.debugPrint(0,14,"Shikabane fumikoete",white,TOP_SCREEN)
Screen.debugPrint(0,28,"susumu ishi wo",white,TOP_SCREEN)
Screen.debugPrint(0,42,"warau buta yo ",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 41500 and Timer.getTime(timer) <= 47500) then
Screen.debugPrint(0,14,"Kachiku no annei",white,TOP_SCREEN)
Screen.debugPrint(0,28,"kyogi no han'ei",white,TOP_SCREEN)
Screen.debugPrint(0,42,"shiseru garou Jiyuu wo!",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 47500 and Timer.getTime(timer) <= 57500) then
Screen.debugPrint(0,14,"Torawareta kutsujoku wa",white,TOP_SCREEN)
Screen.debugPrint(0,28,"hangeki no Koushi da",white,TOP_SCREEN)
Screen.debugPrint(0,42,"jouheki no sono kanata",white,TOP_SCREEN)
Screen.debugPrint(0,56,"emono wo hofuru Jaeger ",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 57500 and Timer.getTime(timer) <= 65500) then
Screen.debugPrint(0,14,"Hotobashiru Shoudou ni",white,TOP_SCREEN)
Screen.debugPrint(0,28,"sono mi wo yakinagara",white,TOP_SCREEN)
Screen.debugPrint(0,42,"tasogare ni hi wo ugatsu",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 65500 and Timer.getTime(timer) <= 70500) then
Screen.debugPrint(0,14,"GUREN NO YUMIYA!",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 75000) then
Screen.debugPrint(0,14,"Shingeki no Kyojin Opening",white,TOP_SCREEN)
Screen.debugPrint(0,28,"Title: Guren no Yumiya",white,TOP_SCREEN)
Screen.debugPrint(0,42,"Song by Linked Horizon",white,TOP_SCREEN)
else
Screen.debugPrint(0,0,"Lyrics:",white,TOP_SCREEN)
end
if (Timer.getTime(timer) > 78000) then
Screen.debugPrint(0,60,"Achieved with LPP!",white,TOP_SCREEN)
end