Frameserving capabilities for OpenCine
Open, NormalPublic

Description

To apply for this task please complete this mandatory coding challenge together with your application: T872
Applications without matching coding challenge completed will not be considered.

Read our Google Summer of Code Overview page:
https://wiki.apertus.org/index.php/GSoC_Overview


OpenCine currently has capabilities to parse a few RAW file formats such as RAW12 (from AXIOM cameras), MLV (magic lantern's RAW file format), AdobeDNG etc. However, most video editing software and video players do not support RAW file formats. Even if they do, they do not work with special data formats like RAW12, since it is not that widely used. We want to use the the capabilities of these advanced editors with file formats that OpenCine can parse already.

For such case so called frame server is used. It is an application which provides video data through some virtual file, e.g. in AVI or MPEG format. Most approaches use FUSE (Filesystem in Userspace) to intercept call to such a file and to provide data to the calling video player/editor.

Additionally it has to be ensured that memory usage is low enough and performance acceptable. Next step would be a mechanism to provide proxy of the clips for not high-end machines. The focus of this task is to implement OpenCine module, which re-uses OCcore lib to provide video data through libfuse/Dokany as dummy AVI file.

Goals:

  • Create a frame server module using libfuse and attach OCcore as data provider
  • Extend OCcore for providing consequent frames, so the video is playable in a video player
  • Add user interface to control frame server settings, like frames per second (FPS) or de-Bayering processor
  • Add Dokany, to be able to run frame server on Windows and adjust CMake scripts accordingly, for consistent build process without user intervention, like on Linux

Addition Goals:

  • Extend OCcore with LibRaw, to be able to process more RAW formats

Prerequisites:

You are expected to have working knowledge of (most of) the following:

  • C and C++ and their coding standards (Any IDE)
  • CMake
  • FUSE (filesystem in user space for linux)
  • RAW12, MLV, AVI, BMP, Adobe DNG file formats
  • Qt 5.10 and higher (for creating the User Interface)
  • Dynamic libraries (and their linking - see T872 for appropriate task that tests this)
  • Git based workflow, Github account and Git client
  • Debayering methods and their implementation in OpenCine (T872 tests this)
  • Basic image processing

Difficulty level: Medium

Mentors: Andrej (main mentor), Supragya (backup/co mentor)

Links

To get in touch with any mentor check the Mentor Contact List.

Related Objects

BAndiT1983 updated the task description. (Show Details)
BAndiT1983 raised the priority of this task from to Needs Triage.
BAndiT1983 moved this task to Open Cine on the Google Summer of Code 2019 board.
BAndiT1983 renamed this task from Create OCcore plugin for VapourSynth to OpenCine: Create OCcore plugin for VapourSynth.
BAndiT1983 updated the task description. (Show Details)
BAndiT1983 added a subscriber: BAndiT1983.
sebastian updated the task description. (Show Details)Jan 22 2018, 9:00 AM
sebastian updated the task description. (Show Details)
sebastian updated the task description. (Show Details)Jan 22 2018, 9:02 AM
sebastian updated the task description. (Show Details)Mar 8 2018, 8:26 PM
BAndiT1983 updated the task description. (Show Details)Feb 5 2019, 8:21 AM
supragyaraj updated the task description. (Show Details)Feb 6 2019, 11:16 AM
supragyaraj added a subscriber: supragyaraj.
BAndiT1983 updated the task description. (Show Details)Feb 6 2019, 11:16 AM
supragyaraj renamed this task from OpenCine: Create OCcore plugin for VapourSynth to Frameserving capabilities for OpenCine.Feb 6 2019, 11:20 AM
supragyaraj claimed this task.
supragyaraj updated the task description. (Show Details)
BAndiT1983 updated the task description. (Show Details)Feb 6 2019, 11:21 AM
BAndiT1983 updated the task description. (Show Details)
BAndiT1983 updated the task description. (Show Details)Feb 6 2019, 11:28 AM
BAndiT1983 updated the task description. (Show Details)Feb 6 2019, 11:31 AM
BAndiT1983 updated the task description. (Show Details)Feb 6 2019, 11:38 AM
BAndiT1983 updated the task description. (Show Details)

Any reason that we are using Andrej, supragya and not @BAndiT1983 , @supragyaraj ??

Yes, consistency, people should read the mentor page also, it's about making binds, so it's not totally unpersonal interaction there

BAndiT1983 updated the task description. (Show Details)Feb 6 2019, 11:47 AM
BAndiT1983 updated the task description. (Show Details)
supragyaraj updated the task description. (Show Details)Feb 6 2019, 11:53 AM
supragyaraj updated the task description. (Show Details)Feb 6 2019, 11:59 AM
supragyaraj updated the task description. (Show Details)Feb 6 2019, 12:03 PM
BAndiT1983 updated the task description. (Show Details)Feb 6 2019, 12:10 PM
BAndiT1983 updated the task description. (Show Details)
supragyaraj updated the task description. (Show Details)Feb 6 2019, 12:13 PM
sebastian updated the task description. (Show Details)Feb 6 2019, 12:36 PM
sebastian moved this task from Open Cine to Misc on the Google Summer of Code 2019 board.
sebastian triaged this task as Normal priority.
sebastian removed supragyaraj as the assignee of this task.Feb 6 2019, 12:49 PM
sebastian added a project: Open Cine.
aleb added a subscriber: aleb.Mar 14 2019, 11:44 PM
sebastian updated the task description. (Show Details)Sat, Apr 6, 12:39 PM