GStreamer
open source multimedia framework
Home
Features
News
Annual Conference
Planet (Blogs)
Download
Applications
Developers
Documentation
Mailing Lists
File a Bug
Bug Lists
Artwork
Follow @gstreamer on Twitter

GStreamer Google Summer of Code: Static Compilation for ORC

Compile assembly code generated by Orc at build time.

Interested Mentors:

  • Sebastian Dröge
  • Wim Taymans
  • Luis de Bethencourt

Description

Orc is basically a simplified assembly language for data processing (no loops/jumps etc.), it's supposed to map to SIMD instructions on various architectures curently there are two things:

  • liborc, which is a JIT compiler that will at run-time take orc code (in some byte format) and generate machine code for the architecture in question on the fly and then execute that whenever there's a function call
  • we have C backup functions as .c files in the gstreamer source code, which are also compiled in when orc can't compile some code (for various reasons), or liborc is not available, then the C backup function will be used that's the current state of things.

ORC is currently mostly used as a JIT, however this does not work on iOS and code generation at build time would also decrease the overhead on other embedded platforms. While ORC has support for generating assembly at build time, this does not work well yet and is also not integrated with the GStreamer build system.

For this project the ORC compiler should be able to output C code and assembly for a set of targets, which is then compiled together and at runtime an appropriate assembly implementation is selected based on the CPU capabilities, or as a fallback the backup function is used. This could use C inline assembly or separate assembly source code files.

Required Skills:

  • GStreamer Basics
  • Assembly Language

Student Notes:

Related links:


Report a problem on this page.