wiki:MEDIA_ENGINE_IMPL_MAIN_R2
Last modified 16 years ago Last modified on 08/26/09 17:51:27

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=MEDIA_ENGINE_IMPL_MAIN_R2, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block

Analysis

Overview

To support video frame in Sophie2 we need this frame to be:

  • rotatable
  • support opacity
  • be part of the scene implementation

So we need media framework that can extract an image from a video. On the other hand the video frame display the image. If the video frame is refreshed 24 times in a second we have a video playing ;). Currently the JMF media library is used for audio and video playback and for audio recording. JMF is outdated and doesn't support much of the new codecs that exist. Also it has mucher richer functionality that we need. As an alternative FFmpeg C library is supported on all platforms targeted by Sophie and is a live project. Also it supports many codecs and it is basicly the funcionality we need (a framework to extract frames from various video formats and codecs). It can encode/decode most of the existing formats/encodings with few exceptions. FFmpeg is a C library so we need to have a native wrapper for it.

Task requirements

  • Write a C++ program that uses ffmpeg to render a frame from a video and send it back to Sophie2
  • Compite this program on every platform Sophie2 support
  • Write a simple demo that plays a video

Task result

Demo, usage wiki page for the C++ application.

Implementation idea

Use FFmpeg.
Extende JavaBridge and NativeBridge defined in GROUP_WRAPPERS_R0

GROUP_WRAPPERS_R0

How to demo

  • Start the demo
  • Show the tutorial page

Design

Implementation

(Describe and link the implementation results here (from the wiki or the repository).)

Testing

(Place the testing results here.)

Comments

(Write comments for this or later revisions here.)