Skip to content

Movian Media Player - Developer Documentation

Build Status License: GPL v3

Movian is a cross-platform media player designed for home theater PCs, set-top boxes, and embedded devices. This comprehensive documentation provides everything developers need to understand, extend, and contribute to the Movian ecosystem.

🎯 What is Movian?

Movian is a powerful, extensible media player that combines:

  • Cross-Platform: Runs on Linux, macOS, Windows, Android, PlayStation 3, and Raspberry Pi
  • Plugin Architecture: JavaScript-based plugin system for content providers and extensions
  • Media Focus: Optimized for video playback with support for numerous codecs and formats
  • Native Performance: Written in C/C++ for optimal performance on resource-constrained devices
  • Custom UI Engine: GLW (OpenGL Widget) system for creating responsive, themeable interfaces

Target Audiences

This documentation serves four primary developer audiences:

Audience Primary Goals Key Document
Plugin Developers Create content providers, scrapers, and extensions Plugin Development Guide
UI Designers Customize themes, skins, and user interfaces UI & Theming Guide
Core Contributors Modify core functionality and add features Architecture Overview
System Integrators Embed Movian in other applications Installation & Build Guide

🏗️ Architecture Overview

Movian's architecture is built around several key subsystems that work together to provide a complete media experience:

graph TB
    subgraph "User Interface Layer"
        GLW[GLW Rendering Engine]
        Skins[Skins & Themes]
        Views[View Files]
    end

    subgraph "Application Layer"
        Nav[Navigator]
        Pages[Page System]
        Settings[Settings Manager]
        Events[Event System]
    end

    subgraph "Plugin System"
        JSEngine[ECMAScript Runtime]
        PluginAPI[Plugin APIs]
        Plugins[JavaScript Plugins]
    end

    subgraph "Media Engine"
        Backends[Media Backends]
        Codecs[Audio/Video Codecs]
        Streaming[Network Streaming]
    end

    subgraph "Core Services"
        Storage[Storage & Database]
        Network[HTTP Client]
        I18N[Internationalization]
        Metadata[Metadata Services]
    end

    GLW --> Nav
    Skins --> GLW
    Views --> GLW

    Nav --> Pages
    Pages --> Events
    Events --> Settings

    JSEngine --> PluginAPI
    PluginAPI --> Plugins
    Plugins --> Pages

    Backends --> Codecs
    Codecs --> Streaming

    Storage --> Network
    Network --> I18N
    I18N --> Metadata

    Pages --> Backends
    PluginAPI --> Storage
    Settings --> Storage

Core Components

  • GLW (OpenGL Widget) System: Custom UI rendering engine for creating responsive interfaces
  • ECMAScript Runtime: JavaScript execution environment for plugins with native API bindings
  • Navigator & Page System: Application flow control and page lifecycle management
  • Media Pipeline: Multi-format playbook with codec abstraction and streaming support
  • Plugin Architecture: Sandboxed JavaScript environment for third-party extensions

📚 Documentation Structure

Quick Start Guides

Core Documentation

🔧 Installation & Build System

Complete guides for building Movian from source on all supported platforms.

🏛️ Architecture Documentation

Deep dive into Movian's internal design and component interactions.

🔌 Plugin Development

Complete guide to creating JavaScript plugins for Movian.

🎨 UI System & Theming

Master Movian's GLW rendering engine and create custom interfaces.

🎬 Media System

Understanding Movian's media playback pipeline and backend architecture.

Reference Documentation

📖 Complete API Reference

Comprehensive reference materials for quick lookup.

🛠️ Developer Tools

Practical guides for development workflows.

🚀 Quick Start

For Plugin Developers

# 1. Clone and build Movian
git clone https://github.com/andoma/movian.git
cd movian
./configure
make

# 2. Create your first plugin
mkdir my-plugin
cd my-plugin
# Follow the plugin guide: plugins/getting-started.md

For UI Designers

# 1. Examine existing skins
cd movian/glwskins/flat
# Study the view files and theme structure

# 2. Create custom theme
# Follow the theming guide: ui/theming/creating-skins.md

For Core Contributors

# 1. Set up development environment
# Follow: guides/development-setup.md

# 2. Understand the architecture
# Read: architecture/overview.md

🤝 Contributing

We welcome contributions to both Movian and its documentation!

Documentation Contributions

  • Found an error? Open an issue or submit a pull request
  • Missing information? Help us fill the gaps
  • Better examples? Share your working code

Code Contributions

  • Plugin development - Create and share useful plugins
  • Core improvements - Bug fixes and feature enhancements
  • Platform support - Help with new platform ports

See our Contributing Guide for detailed information.

📄 License

Movian is licensed under the GNU General Public License v3.0. See the LICENSE file in the Movian source repository for details.

This documentation is licensed under Creative Commons Attribution 4.0 International.


Documentation Version: 1.0.0
Last Updated: November 2025
Movian Version Compatibility: 4.8+
Accuracy Status: 🟢 Verified from source code analysis

This documentation is actively maintained and updated with each Movian release. For the most current information, always refer to the latest version.