Developing Plug-ins for NMM

Motama GmbH, Saarbruecken, Germany

http://www.motama.com

April 2007

  Copyright (C) 2007,
  Motama GmbH, Saarbruecken, Germany
  http://www.motama.com
 
  Permission is granted to copy, distribute and/or modify this
  document under the terms of the GNU Free Documentation License,
  Version 1.2 or any later version published by the Free Software
  Foundation; with the Invariant Sections being all sections, no
  Front-Cover Texts, and no Back-Cover Texts. A copy of the license
  can be found in the file COPYING.FDL.

  THE DOCUMENT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
  NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE
  DISTRIBUTING THE DOCUMENT BE LIABLE FOR ANY DAMAGES OR OTHER
  LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
  OF OR IN CONNECTION WITH THE DOCUMENT OR THE USE OR OTHER DEALINGS
  IN THE DOCUMENT.

This document describes the development of plug-ins (called nodes) for NMM.


Table of Contents
1. Introduction
2. Step A: Thinking
3. Step B: What kind of node? One node or many nodes?
4. Step C: What interfaces should be supported?
5. Step D: What formats will be supported?
6. Step E: What needs to be done during state transitions?
7. Step F: What functionality has to be performed? Handling instream messages
7.1. The processBuffer()-method
7.2. General strategy - processor, converter, and filter nodes
7.3. The working-flag
7.4. Upstream and downstream messages
7.5. Sink nodes
7.6. Source nodes and the producing-flag
7.7. Multiplexer nodes
7.8. Demultiplexer nodes
7.9. Multiplexer-demultiplexer nodes
7.10. Developing a processBuffer()-method for a new node
7.11. Summary
8. Step G: How can a node be registered?

1. Introduction

By now, you should be familiar with the core concepts of NMM, namely nodes, jacks, messages, and formats. You should know what a flow graph of NMM nodes is. If not, please read the corresponding documentation first.

Developing a plug-in or node in NMM consists of several steps. Each of these steps will be described with some examples.