August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)

Project Task Page: Mobile Reframer and RTP New Components

Status: Completed
Current Developers: MPS
Current "inflight" dev location: /branches/private_MH_20070429_newcomponents
Start Date: 29 April 2007
End Date: 5 Aug 2007
Date this page last updated: 5 Aug 2007
Estimated effort so far: 14


Description

Merging of new components developed for RTP and Mobile Reframer work (in /trunk/Sketches/MH ) into the main Kamaelia codebase thereby increasing Kamaelia's capabilities and facilitating the incorporation of the Mobile Reframe and RTP work as official examples or tools.

Note that this does not include components that were developed as modifications or rewrites of existing components that are not essential to the operation of the mobile reframer - such as the Multicast and Selector modifications. It does include the 'new' UnixProcess component and modifications to the Carousel.

Inputs

Task Sponsor: MH,MPS

Task Owner: MPS

Developers: MH,MPS

Users: n/a

Interested third parties: MPS

Requirements

Outputs

Expected

New sourcefiles in

Actual

Branch /branches/private_MH_20070429_newcomponents/

...containing new components:

Removed (moved elsewhere)

New bindings/pyrex based optimised library

New tests

New tool: Video player:

New tool: Video Reframer:

New tool: Video shot change detector:

New examples: RTP:

Modified

Realistic possibilities arising as a result of activity on this task

Tasks that directly enable this task (dependencies)

Sub Tasks

Task Log

Discussion

I originally opted to separate the merging of these completely new components from the merging of ones that modify/rewrite existing components. These components independently add new functionality that should not have any knockon impact on existing Kamaelia components and systems. Modifications/rewrites may do.

I eventually decided it made sense to bundle everything to get mobile reframer (renamed Video Reframer) working, including the reframer itself into one branch. In practice most components are new. There is only one rewrite - the Carousel - which I've tested and added a long overdue test suite for that illustrates how it improves on the existing Carousel design. Finally, I've added the reframer itself and supplementary video player tool.

It made sense to rename the Mobile Reframer to Video Reframer since the first name implies an unnecessary limitation on the range of applications it could be used for. In reality it could be used to process any re-editing and reframing of video for any purpose.

This is taking longer than originally anticipated becuase various small bugs and fixes have been identified along the way - both due to the reframer and also asides from helping Google SoC students. In addition it took longer to rationalise these components; tidy up and fix documentation; and figure out how to neatly fit them into the main codebase.

The SupportCode pyrex based library was introduced (and the SoftDemux one deprecated) because several of the components introduced for the video reframer, video player and cut detector require various optimised alogirthms (image difference comparisons, YUV->RGB conversion, etc). It feels sensible to bundle these together as generic support code as they have no dependencies on external libraries. I also chose to get them to appear under the Kamaelia.Support.Optimised namespace - as opposed to allowing them to litter the top level. SoftDemux naturally fitted into the category and so was rolled in too. Perhaps this should have been done as a separate branch. If so, it is relatively easy to separate out from this set of changes.

-- Matt, 16 May 2007