Homebrew Homebrew app [Release] Video player for 3DS

MarioKartFan

Well-Known Member
Member
Joined
Aug 27, 2019
Messages
596
Trophies
0
XP
2,319
Country
Algeria
The argument that the screen resolution is too low to make watching movies on the 3DS credible belies the fact that people watch movies on their phones all the time even though many of them have tablets, iPads, kindle fires, and laptops right next to them, all of which provide a technically superior solution. It's not always about fidelity. Sometimes its about convenience and flexibility. I have found myself in situations many times where I wished I could bust out my 3DS and throw on a movie. At these resolutions, the file sizes will be small - and Handbrake makes encoding a breeze. It'll be trivial to load a few dozen movies onto the 3DS for pinch situations.

I cannot wait for this application to mature just a bit more more.
 
  • Like
Reactions: Core_2_Extreme

Halbour

Love yourself
Member
Joined
Jan 8, 2021
Messages
246
Trophies
1
XP
1,080
Country
Israel
Just fired this up (3dsx build), but I'm not sure how to use it. Where do I put my videos? How do I open them? I don't see any explanation in the readme or anything.
press X friend

--------------------- MERGED ---------------------------

Just fired this up (3dsx build), but I'm not sure how to use it. Where do I put my videos? How do I open them? I don't see any explanation in the readme or anything.
Just press X my friend...
 
  • Like
Reactions: Core_2_Extreme

IGHOR

Well-Known Member
Newcomer
Joined
Sep 16, 2017
Messages
59
Trophies
0
Website
t.me
XP
398
Country
United States
v1.1.0

Added hardware decoder β

Performance
854x480(480p)@40~50fps(H.264) on NEW 3DS
Known issues :
Video won't play in some resolution
Video will not be decoded correctly at first
It does not work in .cia

Sounds cool!
Can you please share ffmpeg command line to convert video for the best performance?
 

Steven Lopez

Member
Newcomer
Joined
Feb 3, 2011
Messages
15
Trophies
1
XP
481
Country
United States
Thank you for this contribution to the 3DS homebrew scene! I am super excited for this project's future development. I've been waiting for a fully featured 3DS video player without audio desync and that uses a common video format for quite a while. I've been watching the commits and just tested out the hardware decoder release on my New 3DS XL... wow!

480p runs almost perfectly (slight slowdowns at certain points). Keep in mind that I got the tested file from some place I can't remember a long time ago and haven't done any prior conversion to playing, so I don't know if the file was optimal for performance.

I think 360p will be the sweet spot for great quality (given 3DS screen size and resolution) and perfect performance (given how that 240p runs perfectly and 480p runs almost perfectly).

Three more things I would like to suggest/request to make this even better:

1.) While hardware decoding performance seems to no longer be an issue at all with 240p and, I imagine, 360p (and is only sometimes slightly an issue in 480p), there is still a choppiness to the video regardless of resolution when the video is panning or things are moving fast (choppiness that doesn't exist with the web browser's hardware video decoding). It *looks* like an FPS drop due to the lack of smoothness, but I'm not sure what exactly causes it. If this is fixable, then in my opinion, this fix would make this video player perfect quality and anything else is cherries on top. Here is a 12 second example of this happening (240p): https://drive.google.com/file/d/1zDWiqchRJLLBH__LTj4rVCHur8miynNb/view?usp=sharing

2.) Add a theater mode. How I'm imagining it, you would press a button (Select for example) and the video goes full screen on the top screen and the bottom screen goes black. By full screen, I mean the video either is stretched to take up the full top screen or the top screen is black where the video isn't being played (ie: if the video aspect ratio is different than the screen and can't be stretched).

3.) I know you are probably working on this, but a CIA fix for the hardware decoder would be super nice.

Edit: just changed sharing options on video so anyone can watch it from that link
 
Last edited by Steven Lopez,
  • Like
Reactions: Core_2_Extreme

MarioKartFan

Well-Known Member
Member
Joined
Aug 27, 2019
Messages
596
Trophies
0
XP
2,319
Country
Algeria
@Steven Lopez

That's a really good post and does a nice job of summarizing my own reaction to this beta. It's remarkable how quickly @Core_2_Extreme implemented hardware decoding and the performance improvement is equally remarkable. The UI is looking prettier too :)

480p videos look surprisingly sharp on the N3DS. The sound and video decode in perfect sync, and the videos do not stutter or anything. But I notice the same thing as you with panning or zooming in with my own custom 480p h.264 encode.
 

Steven Lopez

Member
Newcomer
Joined
Feb 3, 2011
Messages
15
Trophies
1
XP
481
Country
United States
Okay, updated testing results (using first hardware decoder beta v1.1.0 on New 3DS XL):

Previously, I tested a 240p (400x240) video that performed great, but was choppy when the camera panned (linked example above). I have since reconverted that file, testing if the fact that my converter had changed the fps from the native 23.976 to 24.000 was the cause. But strangely, I have been unable to reproduce that choppiness with any reconverted version of this file that I throw at the player (other than the original file with the issue).

Results for an anime episode (same video, newly converted from original source), h.264 480p (854x480), 96kbps AAC audio, freshly converted with AnyVideoConverter: You are right @MarioKartFan , this freshly converted video runs perfectly 99.6% of the time with only the slightest of audio hiccups from CPU/GPU over-utilization. It looks super sharp. It runs almost perfectly performance-wise (it rivals the Netflix app, which runs absolutely perfectly with no exceptions ever).

Quality-wise, this video looks perfect most of the time (way better than Netflix!), with a notable exception: Sometimes, some of the colors persist on the screen, (most often) when the scene changes. This happens in blurred blocks usually. It can even get very messy at moments, turning a character into an amorphous set of blurred blocks. While this issue occurs most often during scene changes, it can occur when a character is standing still. This happens 100% of the time when seeking and persists for a very long time (though this does not occur at all in the first choppy video I mentioned in this post). I am guessing (merely speculating) that this issue **when caused by seeking specifically** is due to the same thing that causes the video to not be correctly decoded at first.

Here is a 21-second example: https://drive.google.com/file/d/17VB4pZzL80fLMeHAjsiizUYDf9hS2cEO/view?usp=sharing
The first blur across the face of the character wearing red happened on its own. The next three full screen blurs happened exactly when I deliberately seeked to three different places in the video, waiting a few seconds between each seek. You'll notice that each time the blur starts (which is at the instant I seek), it lasts for a few seconds, covering up the scene.

This issue occurs much more frequently (meaning much of the time) on its own with a converted YouTube video I tested out.

*btw, the videos are from the anime Hunter X Hunter, which can be watched with a Crunchyroll subscription! I highly recommend it!
 
Last edited by Steven Lopez,
  • Like
Reactions: Core_2_Extreme

Steven Lopez

Member
Newcomer
Joined
Feb 3, 2011
Messages
15
Trophies
1
XP
481
Country
United States
After years of trying off and on to get 3DS homebrew to compile from source into a .3dsx, I have finally succeeded, which means more testing results!

I've tested the third commit since v1.1.0 ("Added buffering"). Performance seems to be the same, but all of the blurred blocks and other image/color distortions (both during normal video and when seeking) have disappeared! Visual playback is now perfect! This was the result for not just Hunter x Hunter, but other shows and converted YouTube videos (though I've only test 2 YouTube videos). Super excited with this progress!

I also tested the fourth and final commit since v1.1.0 ("Improved hardware decoding performance"). Unfortunately, this commit seems to crash the system upon attempting to load any kind of video. I've included the crash output.

I have some slightly intensive 480p videos ready for testing performance when the time comes that currently slightly stutter at certain points.

p.s. - I've noticed for all versions, closing the software by either pressing the Home button and "clicking" Close or by pressing the Home button and then switching software leads to a crash.
 

Attachments

  • crashexample1.jpg
    crashexample1.jpg
    1.4 MB · Views: 152
Last edited by Steven Lopez,

Core_2_Extreme

Well-Known Member
OP
Member
Joined
Feb 11, 2019
Messages
153
Trophies
0
Age
22
XP
1,163
Country
Japan
After years of trying off and on to get 3DS homebrew to compile from source into a .3dsx, I have finally succeeded, which means more testing results!

I've tested the third commit since v1.1.0 ("Added buffering"). Performance seems to be the same, but all of the blurred blocks and other image/color distortions (both during normal video and when seeking) have disappeared! Visual playback is now perfect! This was the result for not just Hunter x Hunter, but other shows and converted YouTube videos (though I've only test 2 YouTube videos). Super excited with this progress!

I also tested the fourth and final commit since v1.1.0 ("Improved hardware decoding performance"). Unfortunately, this commit seems to crash the system upon attempting to load any kind of video. I've included the crash output.

I have some slightly intensive 480p videos ready for testing performance when the time comes that currently slightly stutter at certain points.

p.s. - I've noticed for all versions, closing the software by either pressing the Home button and "clicking" Close or by pressing the Home button and then switching software leads to a crash.

I changed some code last commit should work now.
 
  • Like
Reactions: Steven Lopez

Steven Lopez

Member
Newcomer
Joined
Feb 3, 2011
Messages
15
Trophies
1
XP
481
Country
United States
^Yeah, I've been waiting for a long time for something like this! Thanks again to Core_2_Extreme!

More testing results:
  • I can confirm that v1.1.1 fixes the bug where the homebrew crashes upon loading a video that was introduced in commit 'Improved hardware decoding performance'.
  • Previously I mentioned how the video player crashes upon pressing Home and then Close. I've since discovered this only happens if there is a video currently being played (exiting the video beforehand seems to fix the issue). Definitely a minor thing, but I thought I'd point it out.
  • From the user-side v1.1.1 introduced, most notably, fixes to all graphical/color glitches during normal video playback and when seeking. These fixes seem to have been fully implemented sometime by commit "Added buffering". Further commits seem to focus on optimization based on descriptions and code changes (I'm not a strong programmer though!). I was testing the "Added buffering" commit against the v1.1.1 release earlier, and it seems to me that v1.1.1 has (very) slightly decreased performance compared to the "Added buffering" commit. I measured this by how often I heard the audio slightly stutter, indicating lag. I tested this with Hunter X Hunter (HxH) episodes and a converted YouTube video (both 480p 854x480 H.264 23.976fps / 30fps (HxH/YouTube video) video and 96kbps AAC audio). Neither version has much lag at all and the lag is just an almost instantaneous blip most times, except for noticeable lag in very intensive scenes (ie: Disney movies with lots of pixie dust moving all over the screen). Note: I have not tested this in ECO mode where you can see the number of rendered frames yet.
Edit: I just tested a random unconverted 1280x720 YouTube video I found and while I couldn't see the improvement because it was a music video with a relatively static background that doesn't move much, the FPS did go from 41-44 to 50-53 by switching from the "Added buffering" commit to the v1.1.1 release. Very laggy sound either way.
 
Last edited by Steven Lopez,
  • Like
Reactions: Core_2_Extreme

Core_2_Extreme

Well-Known Member
OP
Member
Joined
Feb 11, 2019
Messages
153
Trophies
0
Age
22
XP
1,163
Country
Japan
^Yeah, I've been waiting for a long time for something like this! Thanks again to Core_2_Extreme!

More testing results:
  • I can confirm that v1.1.1 fixes the bug where the homebrew crashes upon loading a video that was introduced in commit 'Improved hardware decoding performance'.
  • Previously I mentioned how the video player crashes upon pressing Home and then Close. I've since discovered this only happens if there is a video currently being played (exiting the video beforehand seems to fix the issue). Definitely a minor thing, but I thought I'd point it out.
  • From the user-side v1.1.1 introduced, most notably, fixes to all graphical/color glitches during normal video playback and when seeking. These fixes seem to have been fully implemented sometime by commit "Added buffering". Further commits seem to focus on optimization based on descriptions and code changes (I'm not a strong programmer though!). I was testing the "Added buffering" commit against the v1.1.1 release earlier, and it seems to me that v1.1.1 has (very) slightly decreased performance compared to the "Added buffering" commit. I measured this by how often I heard the audio slightly stutter, indicating lag. I tested this with Hunter X Hunter (HxH) episodes and a converted YouTube video (both 480p 854x480 H.264 23.976fps / 30fps (HxH/YouTube video) video and 96kbps AAC audio). Neither version has much lag at all and the lag is just an almost instantaneous blip most times, except for noticeable lag in very intensive scenes (ie: Disney movies with lots of pixie dust moving all over the screen). Note: I have not tested this in ECO mode where you can see the number of rendered frames yet.
Edit: I just tested a random unconverted 1280x720 YouTube video I found and while I couldn't see the improvement because it was a music video with a relatively static background that doesn't move much, the FPS did go from 41-44 to 50-53 by switching from the "Added buffering" commit to the v1.1.1 release. Very laggy sound either way.

For better performance, I recommend you turn the eco mode on.
If you turn the eco mode on, rendering framerate will fit to decoding framerate so CPU and GPU usage will decrease and decoding speed would increase.

note : framerate on the top screen is 'rendering fps' not 'decoding fps'.
 
  • Like
Reactions: Steven Lopez

placebo_yue

Well-Known Member
Member
Joined
Aug 7, 2019
Messages
739
Trophies
0
Age
33
XP
1,263
Country
Argentina
  • Like
Reactions: Core_2_Extreme

Steven Lopez

Member
Newcomer
Joined
Feb 3, 2011
Messages
15
Trophies
1
XP
481
Country
United States
i've read before the CIA version wasn't useable? should i install 3DSX or can i use CIA now? I'm on O3DS btw so i know performance will be less than perfect but i'm curious about the improvements made since i last tested it. I'll make sure to run a video that matches the screen resolution this time

Both the .3dsx and .cia versions can play videos; however the hardware decoder will not function with a .cia installation as of right now. The hardware decoder provides massive performance enhancements on the New 3DS.

If my understanding is correct, I do not believe that the Old 3DS has hardware decoding abilities and would thus be unable to take advantage of the hardware decoder anyways. I would install the v1.1.1 .cia and use the software decoder.

Also, any video that is of a resolution width / height = 1.77777 will be "full screen" automatically (the info bar will still be there regardless, otherwise it would be 1.6666666). 427x240 will approximately give you this. 640x360 will give you this. 854x480 will give you this. I would recommend 240p for old 3DS, though I haven't tested it.
 
Last edited by Steven Lopez,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • K3Nv2 @ K3Nv2:
    We just question @AncientBoi
  • ZeroT21 @ ZeroT21:
    it wasn't a question, it was fact
  • BigOnYa @ BigOnYa:
    He said he had 3 different doctors apt this week, so he prob there. Something about gerbal extraction, I don't know.
    +1
  • ZeroT21 @ ZeroT21:
    bored, guess i'll spread more democracy
  • LeoTCK @ LeoTCK:
    @K3Nv2 one more time you say such bs to @BakerMan and I'll smack you across the whole planet
  • K3Nv2 @ K3Nv2:
    Make sure you smack my booty daddy
    +1
  • LeoTCK @ LeoTCK:
    telling him that my partner is luke...does he look like someone with such big ne
    eds?
  • LeoTCK @ LeoTCK:
    do you really think I could stand living with someone like luke?
  • LeoTCK @ LeoTCK:
    I suppose luke has "special needs" but he's not my partner, did you just say that to piss me off again?
  • LeoTCK @ LeoTCK:
    besides I had bigger worries today
  • LeoTCK @ LeoTCK:
    but what do you know about that, you won't believe me anyways
  • K3Nv2 @ K3Nv2:
    @BigOnYa can answer that
  • BigOnYa @ BigOnYa:
    BigOnYa already left the chat
  • K3Nv2 @ K3Nv2:
    Biginya
  • BigOnYa @ BigOnYa:
    Auto correct got me, I'm on my tablet, i need to turn that shit off
  • K3Nv2 @ K3Nv2:
    With other tabs open you perv
  • BigOnYa @ BigOnYa:
    I'm actually in my shed, bout to cut 2-3 acres of grass, my back yard.
  • K3Nv2 @ K3Nv2:
    I use to have a guy for that thanks richard
  • BigOnYa @ BigOnYa:
    I use my tablet to stream to a bluetooth speaker when in shed. iHeartRadio, FlyNation
  • K3Nv2 @ K3Nv2:
    While the victims are being buried
  • K3Nv2 @ K3Nv2:
    Grave shovel
  • BigOnYa @ BigOnYa:
    Nuh those goto the edge of the property (maybe just on the other side of)
  • K3Nv2 @ K3Nv2:
    On the neighbors side
    +1
  • BigOnYa @ BigOnYa:
    Yup, by the weird smelly green bushy looking plants.
    BigOnYa @ BigOnYa: Yup, by the weird smelly green bushy looking plants.