MCPcopy Index your code
hub / github.com/Eiim/Chokistream

github.com/Eiim/Chokistream @v2.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.2 ↗ · + Follow
326 symbols 873 edges 45 files 45 documented · 14%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Chokistream

Codacy BadgeGitHub Actions Workflow Status GitHub commits since latest release

Nintendo 3DS wireless video capture software, compatible with NTR, NTR-HR, HzMod, and ChirunoMod, and the only cross-platform video capture software to support HzMod.

A from-scratch reimplementation of Snickerstream.

Notable features: * Pure Java - works on essentially any platform. Tested on Windows and Linux, and lightly tested on Mac and FreeBSD. * Various display output options to get it looking just right * Chokistream can also run entirely headless and stream straight to a video file, or output frames to image files.

Plus even more planned: * Better NTR support * Fullscreen support * And more!

Currently under development by Eiim and ChainSwordCS. Previously developed by herronjo.

Getting Started

Make sure NTR, NTR-HR, HzMod, or ChirunoMod is installed and running on the 3DS. NTR and NTR-HR only support the New 3DS family.

See the basic usage wiki page. See Options for more comprehensive documentation.

Supported OSs

As we're pure Java 17 SE, a very broad range of OSs should work. We have different tiers of support: * Windows and Linux - we develop on these, so we continuously test on them. However, we don't do every test on both, so there may still be OS-specific bugs. Please report these! * Mac OS and FreeBSD - @herronjo has run Chokistream on these and it seemed fine, but they're not really tested. Can probably fix OS-specific bugs if they occur. * Haiku, others - untested but theoretically should work fine. Let us know about OS-specific bugs, but they won't be a high priority.

Note: Old versions prior to 2.0 support Windows, Linux, and Mac, with OS-specific builds. Builds may not be available for all platforms for all releases.

Build Instructions

Written in Java 17 with Gradle 7.5, requires Java 17 to be installed :)

No other requirements. Run gradlew build in Windows Command Prompt or ./gradlew build in a Unix terminal. The jar is built to build/libs/chokistream.jar.

Known issues

Besides GitHub issues: * Error "The muxer track has finished muxing" when ending file streaming. This is perfectly safe.

Licensing

NTRClient.java includes work derived from NTRClient and NTR, projects which are licensed under GPLv2. Therefore, this file is licensed under GPLv2-only. All other files are licensed under GPLv2-or-later.

Prior to commit 5ac6e58, HzModClient.java (and at times other files) contained work derived from Snickerstream, which is licensed under GPLv3-only, and so the entire repository was licensed under GPLv3-only. However, this is no longer the case. As such, the repository as a whole is now licensed under GPLv2, and the repository excluding NTRClient.java is licensed under GPLv2-or-later. The GPLv2-licensed additions from NTRClient were added after the removal of GPLv3-licensed code from Snickstream.

Extension points exported contracts — how you extend this code

VideoOutputInterface (Interface)
A class to extend to provide an output location for a video. Intended to be very agnostic of format, so you could for ex [6 …
src/main/java/chokistream/VideoOutputInterface.java
StreamingInterface (Interface)
Defines an interface that all streaming clients must implement. [6 implementers]
src/main/java/chokistream/StreamingInterface.java
EnumProp (Interface)
(no doc) [11 implementers]
src/main/java/chokistream/props/EnumProp.java

Core symbols most depended-on inside this repo

log
called by 142
src/main/java/chokistream/Logger.java
add
called by 87
src/main/java/chokistream/SwingGUI.java
get
called by 40
src/main/java/chokistream/ChokiKeybinds.java
toString
called by 38
src/main/java/chokistream/Input.java
add
called by 35
src/main/java/chokistream/ControlButtonsHandler.java
getPropEnum
called by 35
src/main/java/chokistream/SwingGUI.java
equals
called by 32
src/main/java/chokistream/props/Prop.java
getHeight
called by 31
src/main/java/chokistream/ImageComponent.java

Shape

Method 270
Class 37
Enum 16
Interface 3

Languages

Java100%

Modules by API surface

src/main/java/chokistream/SwingGUI.java35 symbols
src/main/java/chokistream/NTRClient.java28 symbols
src/main/java/chokistream/ChirunoModClient.java26 symbols
src/main/java/chokistream/ImageManipulator.java12 symbols
src/main/java/chokistream/INIParser.java12 symbols
src/main/java/chokistream/HZModClient.java12 symbols
src/main/java/chokistream/ImageComponent.java11 symbols
src/main/java/chokistream/Logger.java10 symbols
src/main/java/chokistream/Input.java10 symbols
src/main/java/chokistream/IconLoader.java9 symbols
src/main/java/chokistream/ControlButtonsHandler.java9 symbols
src/main/java/chokistream/props/Prop.java8 symbols

For agents

$ claude mcp add Chokistream \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact