Developing Plug-ins for NMM

April, 30th 2003

Copyright (c) 2002-2005
  NMM work group,
  Computer Graphics Lab,
  Saarland University, Germany,
  http://www.networkmultimedia.org

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 no Invariant Sections,
no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be
found in the file COPYING.FDL.

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, several texts provide an introduction to NMM. Read 'The Network-Integrated Multimedia Middleware (NMM) : Basic Introduction', 'Hello World! Welcome to NMM application development :)', and 'States and State Transitions of NMM Nodes'.

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