Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

apps-videoplayer

A small desktop video player example application implemented in Objective-C and built with GNUstep/Gorm.

This repository contains the source, interface definition, and build files for a simple VideoPlayer demo app. It's intended as an example or starting point for building GNUStep/Cocoa-style desktop apps that present a GUI (designed with Gorm) and provide basic video playback functionality.

Features

  • Objective-C source for app controller and main entry point (AppController.h/.m, VideoPlayer_main.m).
  • Gorm UI resources in Resources/VideoPlayer.gorm (interface builder files generated by Gorm).
  • GNUstep-style build using the included GNUmakefile.
  • Closing the video window stops video and audio playback and clears the time and position controls. Opening another video reuses the window and preserves volume and mute settings.

Requirements

  • GNUstep toolchain (gnustep-make, gnustep-base, gnustep-gui). On macOS you can install GNUstep via Homebrew or your package manager.
  • A working video backend / codecs on your system. Playback relies on whatever multimedia frameworks are available to the platform; if some formats fail you may need to install additional codec support (ffmpeg, GStreamer, etc.).

Build & Run (macOS / Unix with GNUstep)

  1. Install GNUstep (follow the official instructions at https://www.gnustep.org/).
  2. Source the GNUstep environment script from your installation so make knows where to find GNUstep makefiles. Common locations include:
# Example
. /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh
  1. Build the project:
make
  1. Run the app. Depending on the makefile and platform this repository may build an application bundle (e.g. VideoPlayer.app) or a runnable binary. Try one of:
# If an .app bundle was created
gopen ./VideoPlayer.app

# Or run the binary produced by the build (if present)
./VideoPlayer.app/VideoPlayer

If make fails, inspect the GNUmakefile output for missing GNUstep dependencies or incorrect GNUstep environment setup.

Run make check to run the playback tests (requires Clang, FFmpeg with libx264, Xvfb, and a working audio output). The tests check repeated video changes with audio and silent movies, playback controls, closing and reopening the video window, and stopping a slow file reader before reusing its decoder. A failed test causes make check to fail.

Video changes reuse the existing movie view to avoid overlapping audio backends and preserve control connections, volume, and mute settings.

Project layout

  • AppController.h / AppController.m — main Objective-C class that manages the user interface and player logic.
  • VideoPlayer_main.m — application entry point (main).
  • Resources/VideoPlayer.gorm/ — Gorm (Interface Builder) files describing windows and UI objects.
  • VideoPlayerInfo.plist — application info property list.
  • GNUmakefile, GNUmakefile.preamble, GNUmakefile.postamble — GNUstep build files used by make.
  • VideoPlayer.pcproj/ — ProjectCenter project metadata (optional, for editing in ProjectCenter).

Troubleshooting

  • "Undefined symbols" or missing headers during build: ensure you sourced the correct GNUstep.sh and installed gnustep-make, gnustep-base and gnustep-gui.
  • App launches but video won't play: confirm your system has appropriate codecs. Try installing ffmpeg or a GStreamer backend if available for your platform.
  • If the UI doesn't appear correctly, open Resources/VideoPlayer.gorm with Gorm or inspect AppController.m to see how UI objects are connected.

Contributing

Small fixes, documentation updates, and bug reports are welcome. If you add features please document build/runtime requirements and update this README.

License

This repository does not include a license file. Add a LICENSE or LICENSE.md to clarify usage and contribution terms.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages