[PROPOSAL] Component Wide Configuration

Markus, Feb 2016.

    Disclaimer:
    This document is not finalized and the real implementation may slightly differ to work around with obstacles, keep pace with coworkers, etc.
    This design is mainly for WooGeen 3.1 release.
    Further effort is required for future developement after 3.1.

Goals

Directory Structure

.
├── contrib                             - configuration templates, patches, certifications, etc.
├── doc                                 - documentation for architecture, usage, design, etc.
├── scripts                             - helper scripts.
├── source
│   ├── common                          - common node modules.
│   ├── portal                          - Portal.
│   ├── agent                           - Agent.
│   │   ├── access                      - accessNode.
│   │   │   ├── rtspIn                  - woogeen-rtsp-in module.
│   │   │   ├── rtspOut                 - woogeen-rtsp-out module.
│   │   │   ├── mediaFile               - woogeen-mediafile-io module.
│   │   │   └── webrtc                  - woogeen-webrtc module.
│   │   ├── audio                       - audioNode.
│   │   │   └── audioMixer              - woogeen-audiomixer module.
│   │   ├── video                       - videoNode.
│   │   │   └── videoMixer              - woogeen-videomixer module.
│   │   └── addons                      - videoNode.
│   │       ├── internal                - woogeen-internal-io module.
│   │       └── mediaFrameMulticaster   - woogeen-mediaframemulticaster module.
│   ├── lib
│   │   ├── liberizo                    - liberizo.so.
│   │   ├── woogeen_base                - libwoogeen_base.so.
│   │   └── mcu                         - libmcu.so.
│   └── nuve
├── test
└── third_party             - only *source code*
    ├── mediaprocessor
    ├── srtp
    └── webrtc

Phase out

Addons in source/erizo

Current Dependencies:

  Node.js Layer         Node.js Layer               Node Addon Functionality


  accessNode     ->                     ->          Internal{In,Out}
                                                    MediaFile{In,Out}
                                                    RtspOut
                        rtspIn          ->          RtspIn
                        wrtcConnection  ->          WebRtcConnection
                                                    AudioFrameConstructor
                                                    VideoFrameConstructor
                                                    AudioFramePacketizer
                                                    VideoFramePacketizer


  audioNode      ->                                 Internal{In,Out}
                                                    MediaFrameMulticaster
                                                    AudioMixer

  videoNode      ->                                 Internal{In,Out}
                                                    MediaFrameMulticaster
                                                    VideoMixer

The addon would become these modules:

The C++ Layer would remain untouched, or have minimal modifications.