   =========================================================================
   ==  NOTICE file corresponding to the section 4 d of                    ==
   ==  the Apache License, Version 2.0,                                   ==
   ==  in this case for the Apache Maven distribution.                    ==
   =========================================================================

This product includes software developed by
CoreMedia AG (http://www.coremedia.com/).

This product includes software developed by
castLabs GmbH (http://www.castlabs.com/).

This product includes software developed by
Sebastian Annies (Sebastian.Annies@gmail.com)

This product includes software (Base64 Encoder extracted from commons-codec) developed by
The Apache Software Foundation (http://www.apache.org/).

This product includes software (Hex Encoder extracted from commons-codec) developed by
The Apache Software Foundation (http://www.apache.org/).

This product includes software (package com.googlecode.mp4parser.h264) developed by
Stanislav Vitvitskiy and originally licensed under MIT license (http://www.opensource.org/licenses/mit-license.php)






