Haiku Media Editor

Related tags

Multimedia Medo
Overview

Medo

Alt text

Haiku Media Editor

Copyright Zen Yes Pty Ltd 2019-2021

Melbourne, Australia.

Released under Open Source MIT license.

Written by Zenja Solaja

Medo is a modern Media Editor built exclusively for the open source Haiku OS (aka the Media OS). Medo allows customisation using OpenGL based GLSL plugins, and allows 3rd party developers to create dynamically loaded Addons and Plugins.

There are many bundled media effects, including:

  • Colour grading effects (Saturation/Exposure/Temperature etc)
  • Colour correction curves and white balance.
  • Support for Adobe LUT (Look Up Tables)
  • Create masks and keyframes
  • Several bundled transitions
  • Several special effects (Blur, Night Vision, Chroma Key etc)
  • Spatial tools to transform media (scale/rotate/position/crop)
  • Multiple text effects, including 3D extruded fonts.
  • Audio effects (20 band equaliser, fade)

Medo can edit UHD 4K videos, export to any Haiku supported codec, is optimised for many CPU-core systems, and has low system resource requirements. Medo is multilingual (currently supports 10 user languages), and is themable. The Medo.HPKG (Haiku package file) can fit on a floppy disk with no external dependancies other than what ships with a default Haiku release (it's less than 1.44Mb).

Alt text

Development Requirements

  • Haiku development environment, 64 bit only (c++17 minimum standard)
  • QtCreator as the IDE for code navigation and code completion
  • ffmpeg development package
  • cmake (optional)

Build Scripts

  1. Clean all object files, remove temporary build directories

./clean_all

  1. Build the source (either with jam or cmake)

a) jam build (default primary build method), debug build (-g -O0)

jam -j16 (option -j16 is parallel build, replace 16 with number of CPU cores, eg. -j8)

./build_addons

b) cmake + make (optional secondary build method), debug build (-g -O0)

cmake CMakeLists.txt

make -j16 (option -j16 is parallel build, replace 16 with number of CPU cores, eg. -j8)

./build_addons

  1. Setup attributes, file icon

./setup_attributes

  1. Build HPKG (release), which will build an installer package, (no debug code, -03)

./create_package

The Medo.hpkg file will be created in the Package directory.

Source code layout

3rdparty/ - external 3rd party code

Actor/ - Actor programming model framework

AddOns/ - dynamically loaded add-ons. Each add-on must be compiled separately.

Docs/ - developer documentation

Editor/ - the core application

Effects/ - bundled effects

Gui/ - custom GUI widgets

Plugins/ - dynamically loaded GLSL plugins.

rapidjson/ - embedded library

Resources/ - application icons etc

Yarra/ - OpenGL based rendering library

Software Architecture

The BeAPI is based on C++ pre-ISO/IEC 14882:1998 standard (published in 1998, ie. pre Standard Template Library). The API uses the Actor programming model (it's interesting that nowhere in the BeBook do they mention the term Actor, so it's quite likely that they independantly implemented the Actor model). Each BWindow object runs in its own thread with a dedicated message queue. Medo also incorporates a proper Actor library for parallel processing (eg. thumbnail generation, OpenGL rendering, audio buffer creation, exporting etc).

Medo is a 64 bit application, compiled with C++20 gcc compile flag (c++2a). Medo uses OpenGL 3.3 Core profile, with GLSL 330 for video effects rendering. An OpenGL wrapper called Yarra is used to abstract the raw OpenGL calls.

Users can implement custom GLSL shader effects by creating their own plugins. Effects from websites like ShaderToy can easily be converted to work with Medo (please use the developer guide in the Docs/ directory for more information). Please look at the Plugins/ directory for some simple examples.

Medo also supports external binary addons, which allows 3rd party developers to add complex audio and video effects. Please use the developer guide (Docs/ directory) and see the examples in the AddOns directory.

Media decoding uses the native Haiku MediaKit. As of Dec 2020, the MediaKit encoders still have stability issues, therefore, Medo also provides an ffmpeg Encoder based code path (which is the default encoder).

Issues
  • Settings are not saved?

    Settings are not saved?

    Hi,

    First of all, thanks for creating and open-sourcing this project!

    I built it using cmake+make. When i launch it and try to switch theme from settings window, "restart" button shows up. Application exits when i click it, but does not restart. After i restart it manually, nothing seems to be changed and settings window shows "dark" theme as "selected". Same happens if i change selected theme, close settings window and close application myself.

    One thing i did not try (yet) is to build package, install it and then try switching settings. Should i do that, or it wouldn't make a difference?

    opened by ahwayakchih 4
  • Settings dialog: various drawing and layout artifacts

    Settings dialog: various drawing and layout artifacts

    This is Medo-R1.0.0~Beta1-1.x86_64.hpkg
    Haiku hrev54776.

    Problems:

    1. Dialog background has white color, not system dialog background color.
    2. Tab drawing glitches on resize.
    3. View size in tab become wrong after switching tabs and window resize.

    See my HaikuUtils (Users, SystemManager) for reference how to use Layout API.

    MedoSettings

    opened by X547 3
  • Clip splitting is inaccurate

    Clip splitting is inaccurate

    When I try to split a clip, it is highly likely to split a few seconds to either side of the playhead.

    Or maybe it actually splits at the position you right-clicked - I haven't investigated.

    opened by parnikkapore 2
  • Medo crashes on launch (32bit)

    Medo crashes on launch (32bit)

    Updated the work @pulkomandy did on recipe at haikuports at https://github.com/haikuports/haikuports/pull/5509 The build and install is working fine, but the app crashes on launch (will add a debug report later for this)

    opened by Begasus 2
  • [SUGGESTION] (FFMPEG) color space

    [SUGGESTION] (FFMPEG) color space "legalization"

    This feature helps all videomakers to "legalize" color space (recorded by their cameras) for broadcast standard.

    All started from this discussion started by me for solving the problem with "Canon HF100 colorspace".

    After evaluating a clip, Gyan (an FFMPEG maintainer) suggested me:

    You can use the geq filter to remap the pixel value ranges.

    ffmpeg -i input -vf "geq=lum='(p(X,Y)-16)/(255-16)*(235-16)+16':cb='(p(X,Y)-16)/(255-16)*(240-16)+16'" -c:v libx264 -c:a copy out.mp4

    The geq filter rescales the input luma from 16-255 to 16-235, and both the input chroma from 16-255 to 16-240, which is the legal range for broadcast 8-bit signals.

    Hope that inspires !

    opened by forart 1
  • Use LayoutKit

    Use LayoutKit

    Although it's not noticeable on the main window, dialogs and secondary windows look pretty out of place/alignment. Using Haiku LayoutKit would ensure the best native look for Medo.

    Not the most important thing, but would be nice to have nevertheless.

    opened by bitigchi 1
  • [FEATURE REQ] Audio/Video multitracks synch by audio aligning

    [FEATURE REQ] Audio/Video multitracks synch by audio aligning

    It would be really cool - and almost uniqe, at least between open source NLEs - to have an automatic integrated function that helps (multicam, expecially) editors to have synched multitracks in a snap.

    I found some interesting resources that may help to integrate it:

    • https://github.com/protyposis/AudioAlign - a tool written for research purposes to automatically synchronize audio and video recordings that have either been recorded in parallel at the same event or contain the same aural information.
    • https://github.com/alopatindev/sync-audio-tracks - a tool (based on Miles McCoo's cross-correlation implementation) that calculates a delay between two audios and produces a shifted audio.
    • https://github.com/benfmiller/audalign - Python package for aligning audio files using audio fingerprinting.
    • https://github.com/recastrodiaz/align-audio-recordings-julia - Aligning video recordings with Julia

    Hope that inspires.

    opened by forart 1
  • Instability with music files with album art

    Instability with music files with album art

    Medo seems to behave really weirdly when dealing with music files that have album art. For example, on nightly Haiku, it has both a video track and an audio track, but the video track points to some corrupt-looking garbage (uninitialized buffer?).

    This might be caused by false assumptions on whether different parts of the API report that the file has a video track or not.

    My test file also crashed Medo once rendering finishes. Traceback

    opened by parnikkapore 1
  • add executable permission to build scripts

    add executable permission to build scripts

    I set the executable permission (chmod +x) on the 4 build scripts. This is preserved when cloning it via git and also should be when downloading it as zip or tar.gz file, so the user doesn´t have to do it. Also removed the corresponding instructions from README.md

    opened by andimachovec 0
  • [REQ] More videoFX, more fun !

    [REQ] More videoFX, more fun !

    For the next release, it would be very interesting to integrate some (free) videoFX libs:

    https://github.com/forart/HyMPS/blob/main/VideoFXs.md

    Hope that inspires !

    opened by forart 2
  • I look for a easy way to translate/correct some typos in German language file.

    I look for a easy way to translate/correct some typos in German language file.

    How to correct a typo? Possible to copy and paste the whole language file correct it and upload it (but where to?) Do I have to clone the repo? Make a Git project just for translating some text?

    There are some bad typo in German.lang file:

    One is in miscellaneous: Nahmen/Abwerfen should be: aufnehmen/ablegen or nehmen/ablegen

    There are a lot more but I look for a easy way to translate/correct them. Thanks

    opened by Brunobasta 1
  • Medo settings doesn't work well with Haiku dark colour schemes

    Medo settings doesn't work well with Haiku dark colour schemes

    Medo settings window uses a fixed colour (white) for background but uses a user defined colour for text. As you can see in the screenshot, this can cause problems with dark colour schemes for Haiku.

    screenshot2

    I see two solutions:

    • Use a fixed colour for both background and text.
    • Use a pair of user defined colours (panel background colour and panel text colour) for both.

    For testing, the package flatstyle, available in HaikuDepot, is containing such dark colour schemes.

    opened by Briseur 1
  • [SUGGESTION] Intelligent scene cut detection for automated clip splitting

    [SUGGESTION] Intelligent scene cut detection for automated clip splitting

    It could be very useful - expecially for editors - to have an option for automated clip splitting based on scene cuts.

    PySceneDetect can help to implement it:

    PySceneDetect is a command-line application and a Python library for detecting scene changes in videos, and automatically splitting the video into separate clips. Not only is it free and open-source software (FOSS), but there are several detection methods available (see Features), from simple threshold-based fade in/out detection, to advanced content aware fast-cut detection of each shot.

    Here are some of the things people are using PySceneDetect for:

    • splitting home videos or other source footage into individual scenes
    • automated detection and removal of commercials from PVR-saved video sources
    • processing and splitting surveillance camera footage
    • statistical analysis of videos to find suitable "loops" for looping GIFs/cinemagraphs
    • academic analysis of film and video (e.g. finding mean shot length)

    https://pyscenedetect.readthedocs.io/en/latest/

    Hope that inspires !

    opened by forart 1
Owner
Zenja Solaja
Zenja Solaja
TengineGst is a streaming media analytics framework, based on GStreamer multimedia framework, for creating varied complex media analytics pipelines.

TengineGst is a streaming media analytics framework, based on GStreamer multimedia framework, for creating varied complex media analytics pipelines. It ensures pipeline interoperability and provides optimized media, and inference operations using Tengine Toolkit Inference Engine backend, across varied architecture - CPU, iGPU and VPU.

OAID 64 May 30, 2022
Kodi is an award-winning free and open source software media player and entertainment hub for digital media

website • docs • community • add-ons Welcome to Kodi Home Theater Software! Kodi is an award-winning free and open source software media player and en

Team Kodi 13.9k Jun 24, 2022
Simple text editor in C++ - Simple editor built upon kilo editor.

GUMBO editor Simple editor built upon kilo editor. Still big work in progress although this is just fun side project to learn more C/C++. From 0.0.2->

Filip Ivanušec 3 Sep 15, 2021
This is my very own text editor inspired by the kilo text editor

Xenon-text-editor This is my very own text editor inspired by the kilo text editor which you can find here: https://github.com/snaptoken/kilo-src/blob

Arin 15 Aug 28, 2021
Cycles Shader Editor is a cross-platform C++ library that provides a graphical editor for creating Cycles shader graphs

Cycles Shader Editor Cycles Shader Editor is a cross-platform C++ library that provides a graphical editor for creating Cycles shader graphs with a si

null 6 Feb 18, 2022
C++14 evented IO libraries for high performance networking and media based applications

LibSourcey C++ Networking Evolved LibSourcey is a collection of cross platform C++14 modules and classes that provide developers with an arsenal for r

Sourcey 1.2k Jun 9, 2022
Media Downloader is a Qt/C++ front end to youtube-dl

media-downloader This project is a Qt/C++ based frontend to youtube-dl and it can be used to download any media file supported by youtube-dl. Features

null 347 Jun 24, 2022
[WIP] A media playback library for Dart & Flutter apps on Windows & Linux. Based on libVLC & libVLC++.

dart_vlc Bringing power of VLC to Flutter & Dart apps on Windows & Linux Installation dependencies: ... dart_vlc: ^0.0.1 Documentation Create a ne

Hitesh Kumar Saini 335 Jun 29, 2022
🎥 mpv is a free (as in freedom) media player for the command line.

mpv is a free (as in freedom) media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types.

mpv 19.2k Jul 1, 2022
MediaPipe offers cross-platform, customizable ML solutions for live and streaming media.

Cross-platform, customizable ML solutions for live and streaming media.

Google 17.7k Jun 25, 2022
Free Media Player for Windows and Linux with Youtube support.

SMPLAYER SMPlayer is a free media player for Windows and Linux with Youtube support.

Ricardo 251 Jun 26, 2022
Jellyfin Desktop Client based on Plex Media Player

Jellyfin Media Player Based on (but not affiliated with) Plex Media Player. Please see: Corresponding web client: Repo Release API Docs in client-api.

Ian Walton 914 Jul 1, 2022
C++ lib and CLI for playing media files on a Chromecast

castr - a CLI and C++ library to cast media files to Chromecast devices using the built in Default Media Receiver

null 31 Jun 19, 2022
TIP (translate it, please) is a plugin for VLC media player that helps you to study languages by watching videos.

vlc-tip-plugin TIP (translate it, please) is a plugin for VLC media player that helps you to study languages by watching videos. Features The plugin a

Aleksey Koltakov 41 May 2, 2022
Jellyfin Desktop Client based on Plex Media Player

Desktop client using jellyfin-web with embedded MPV player. Supports Windows, Mac OS, and Linux. Media plays within the same window using the jellyfin-web interface unlike Jellyfin Desktop. Supports audio passthrough. Based on Plex Media Player.

Jellyfin 911 Jun 30, 2022
kmp - kale media player

kmp - kale's media player simple media player with gstreamer installing/Building You need to have gstreamer installed, find the proper packages for yo

kalekale 7 Aug 23, 2021
A clone of Media Player Classic reimplemented in Qt.

Media Player Classic Qute Theater A clone of Media Player Classic reimplemented in Qt. Media Player Classic Home Cinema (mpc-hc) is considered by many

Media Player Classic Qute Theater 112 Jun 26, 2022
A next generation media player, with vim-like bindings

MusicKid A next generation media player, with vim-like bindings Installation Clone the repo git clone <git-url> cd MusicKid/Final Install dependencies

null 4 Jan 10, 2022
media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Alex.CR 137 Jun 26, 2022
🎵 A cross-platform media playback library for C/C++ with good number of features (only Windows & Linux).

libwinmedia A cross-platform media playback library for C/C++ & Flutter with good number of features. Example A very simple example can be as follows.

Harmonoid 38 Jun 24, 2022
Plex media server local privilige escalation poc - CVE-2021-42835

Local Privilege PlEXcalasion - CVE-2021-42835 Plex Media Server for Windows prior to version 1.25.0.5282, vulnerable to Time Of Check Time Of Use (TOC

null 6 May 24, 2022
Smartstreaming is a high-performance and scalable streaming media server.

1. introduction Smartstreaming is a high-performance and scalable streaming media server. 2. design | io | Coroutine | | transport | tcp/udp/srt/quic

null 2 Jan 7, 2022
An indie game marketing size guide for social media presence

BRINDIE FREE - an .ai sourcefile with sizes for art assets needed to create Facebook page, Twitter profile, Steam Store page and Steam Developer page

Laura Bularca 150 Apr 11, 2022
A multimedia framework developed from scratch in C/C++, bundled with test programs and a neat media analyzer.

MiniVideo framework MiniVideo is a multimedia framework developed from scratch in C/C++, bundled with small testing programs and a neat media analyser

Emeric 79 Mar 21, 2022
Official repository of the ISO Base Media File Format Reference Software

ISO Base Media File Format (ISOBMFF) This repository is the official repository for the ISO Base Media File Format Reference Software. The ISO base me

null 77 May 26, 2022
The Dolby MP4 streaming muxer (dlb_mp4base) is a software implementation of a muxer of fragmented or unfragmented ISO base media file format (mp4)

The Dolby MP4 streaming muxer (dlb_mp4base) is a software implementation of a muxer of fragmented or unfragmented ISO base media file format (mp4). It supports muxing of Dolby Digital (AC-3), Dolby Digital Plus (E-AC-3), and Dolby AC-4 audio formats as well as Dolby Vision.

Dolby Laboratories 177 Jun 25, 2022
The Dolby MP4 streaming demuxer (dlb_mp4demux) is a software implementation of a demuxer of fragmented or unfragmented ISO base media file format (mp4).

The Dolby MP4 streaming demuxer (dlb_mp4demux) is a software implementation of a demuxer of fragmented or unfragmented ISO base media file format (mp4). It supports demuxing of Dolby Digital (AC-3), Dolby Digital Plus (E-AC-3), and Dolby AC-4 audio formats as well as Dolby Vision. It is designed for use on architectures with limited resources.

Dolby Laboratories 61 Jun 18, 2022
Free and open-source media player written in C++

Liquid Media Player Free and open-source media player written in C++. Currently in development. Build Guide Windows Install the MSYS2 Building Platfor

Arrow Interactive 3 Apr 1, 2022
Jittey - A public domain text editor written in C and Win32

Jittey (Jacob's Terrific Text Editor) is a single-file basic text editor written in pure C and Win32, there is no real reason to use it, but it

Jakub Šebek 24 Feb 22, 2022