Initial public release of the 2024A software.
This commit is contained in:
parent
7b9ad3edfd
commit
303e9e1dad
361 changed files with 60083 additions and 2 deletions
|
|
@ -0,0 +1 @@
|
|||
c8ac1998e9af863bc41b57e592f88d1a5791a0f891485122336ddabbf7a65033
|
||||
27
managed_components/chmorgan__esp-audio-player/CMakeLists.txt
Normal file
27
managed_components/chmorgan__esp-audio-player/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
set(srcs
|
||||
"audio_player.cpp"
|
||||
)
|
||||
|
||||
set(includes
|
||||
"include"
|
||||
)
|
||||
|
||||
set(requires "")
|
||||
|
||||
if(CONFIG_AUDIO_PLAYER_ENABLE_MP3)
|
||||
list(APPEND srcs "audio_mp3.cpp")
|
||||
endif()
|
||||
|
||||
# TODO: move inside of the 'if(CONFIG_AUDIO_PLAYER_ENABLE_MP3)' when everything builds correctly
|
||||
list(APPEND requires "esp-libhelix-mp3")
|
||||
|
||||
if(CONFIG_AUDIO_PLAYER_ENABLE_WAV)
|
||||
list(APPEND srcs "audio_wav.cpp")
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
REQUIRES "${requires}"
|
||||
INCLUDE_DIRS "${includes}"
|
||||
REQUIRES driver
|
||||
)
|
||||
20
managed_components/chmorgan__esp-audio-player/Kconfig
Normal file
20
managed_components/chmorgan__esp-audio-player/Kconfig
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
menu "Audio playback"
|
||||
|
||||
config AUDIO_PLAYER_ENABLE_MP3
|
||||
bool "Enable mp3 decoding."
|
||||
default y
|
||||
help
|
||||
The audio player can play mp3 files using libhelix-mp3.
|
||||
config AUDIO_PLAYER_ENABLE_WAV
|
||||
bool "Enable wav file playback"
|
||||
default y
|
||||
help
|
||||
Audio player can decode wave files.
|
||||
|
||||
config AUDIO_PLAYER_LOG_LEVEL
|
||||
int "Audio Player log level (0 none - 3 highest)"
|
||||
default 0
|
||||
range 0 3
|
||||
help
|
||||
Specify the verbosity of Audio Player log output.
|
||||
endmenu
|
||||
201
managed_components/chmorgan__esp-audio-player/LICENSE
Normal file
201
managed_components/chmorgan__esp-audio-player/LICENSE
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
80
managed_components/chmorgan__esp-audio-player/README.md
Normal file
80
managed_components/chmorgan__esp-audio-player/README.md
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# Audio player component for esp32
|
||||
|
||||
|
||||
[](https://github.com/chmorgan/esp-audio-player/actions/workflows/cppcheck.yml)
|
||||
|
||||
## Capabilities
|
||||
|
||||
* MP3 decoding (via libhelix-mp3)
|
||||
* Wav/wave file decoding
|
||||
|
||||
## Who is this for?
|
||||
|
||||
Decode only audio playback on esp32 series of chips, where the features and footprint of esp-adf are not
|
||||
necessary.
|
||||
|
||||
## What about esp-adf?
|
||||
|
||||
This component is not intended to compete with esp-adf, a much more fully developed
|
||||
audio framework.
|
||||
|
||||
It does however have a number of advantages at the moment including:
|
||||
|
||||
* Fully open source (esp-adf has a number of binary modules at the moment)
|
||||
* Minimal size (it's less capable, but also simpler, than esp-adf)
|
||||
|
||||
## Getting started
|
||||
|
||||
### Examples
|
||||
|
||||
* [esp-box mp3_demo](https://github.com/espressif/esp-box/tree/master/examples/mp3_demo) uses esp-audio-player.
|
||||
* The [test example](https://github.com/chmorgan/esp-audio-player/tree/main/test) is a simpler example than mp3_demo that also uses the esp-box hardware.
|
||||
|
||||
### How to use this?
|
||||
[esp-audio-player is a component](https://components.espressif.com/components/chmorgan/esp-audio-player) on the [Espressif component registry](https://components.espressif.com).
|
||||
|
||||
In your project run:
|
||||
```
|
||||
idf.py add-dependency chmorgan/esp-audio-player
|
||||
```
|
||||
|
||||
to add the component dependency to the project's manifest file.
|
||||
|
||||
|
||||
## Dependencies
|
||||
|
||||
For MP3 support you'll need the [esp-libhelix-mp3](https://github.com/chmorgan/esp-libhelix-mp3) component.
|
||||
|
||||
## Tests
|
||||
|
||||
Unity tests are implemented in the [test/](../test) folder.
|
||||
|
||||
## States
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> Idle : new(), cb(IDLE)
|
||||
Idle --> Playing : play(), cb(PLAYING)
|
||||
Playing --> Paused : pause(), cb(PAUSE)
|
||||
Paused --> Playing : resume(), cb(PLAYING)
|
||||
Playing --> Playing : play(), cb(COMPLETED_PLAYING_NEXT)
|
||||
Paused --> Idle : stop(), cb(IDLE)
|
||||
Playing --> Idle : song complete, cb(IDLE)
|
||||
[*] --> Shutdown : delete(), cb(SHUTDOWN)
|
||||
Shutdown --> Idle : new(), cb(IDLE)
|
||||
```
|
||||
|
||||
Note: Diagram shortens callbacks from AUDIO_PLAYER_EVENT_xxx to xxx, and functions from audio_player_xxx() to xxx(), for clarity.
|
||||
|
||||
|
||||
## Release process - Pushing component to the IDF Component Registry
|
||||
|
||||
The github workflow, .github/workflows/esp_upload_component.yml, pushes data to the espressif
|
||||
[IDF component registry](https://components.espressif.com).
|
||||
|
||||
To push a new version:
|
||||
|
||||
* Apply a git tag via 'git tag vA.B.C'
|
||||
* Push tags via 'git push --tags'
|
||||
|
||||
The github workflow *should* run and automatically push to the IDF component registry.
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
typedef enum {
|
||||
DECODE_STATUS_CONTINUE, /*< data remaining, call decode again */
|
||||
DECODE_STATUS_NO_DATA_CONTINUE, /*< data remaining but none in this call */
|
||||
DECODE_STATUS_DONE, /*< no data remaining to decode */
|
||||
DECODE_STATUS_ERROR /*< unrecoverable error */
|
||||
} DECODE_STATUS;
|
||||
|
||||
typedef struct {
|
||||
int sample_rate;
|
||||
uint32_t bits_per_sample;
|
||||
uint32_t channels;
|
||||
} format;
|
||||
|
||||
/**
|
||||
* Decoded audio data ready for playback
|
||||
*
|
||||
* Fields in this structure are expected to be updated
|
||||
* upon each cycle of the decoder, as the decoder stores
|
||||
* audio data to be played back.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* NOTE: output_samples is flushed each decode cycle
|
||||
*
|
||||
* NOTE: the decode format determines how to convert samples to frames, ie.
|
||||
* whether these samples are stero or mono samples and what the bits per sample are
|
||||
*/
|
||||
uint8_t *samples;
|
||||
|
||||
/** capacity of samples */
|
||||
size_t samples_capacity;
|
||||
|
||||
/**
|
||||
* 2x samples_capacity to allow for in-place conversion of
|
||||
* mono to stereo
|
||||
*/
|
||||
size_t samples_capacity_max;
|
||||
|
||||
/**
|
||||
* Number of frames in samples,
|
||||
* Note that each frame consists of 'fmt.channels' number of samples,
|
||||
* for example for stereo output the number of samples is 2x the
|
||||
* frame count.
|
||||
*/
|
||||
size_t frame_count;
|
||||
|
||||
format fmt;
|
||||
} decode_data;
|
||||
|
||||
|
||||
#define BYTES_IN_WORD 2
|
||||
#define BITS_PER_BYTE 8
|
||||
26
managed_components/chmorgan__esp-audio-player/audio_log.h
Normal file
26
managed_components/chmorgan__esp-audio-player/audio_log.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#pragma once
|
||||
|
||||
#include "esp_log.h"
|
||||
|
||||
#if CONFIG_AUDIO_PLAYER_LOG_LEVEL >= 1
|
||||
#define LOGI_1(FMT, ...) \
|
||||
ESP_LOGI(TAG, "[1] " FMT, ##__VA_ARGS__)
|
||||
#else
|
||||
#define LOGI_1(FMT, ...) { (void)TAG; }
|
||||
#endif
|
||||
|
||||
#if CONFIG_AUDIO_PLAYER_LOG_LEVEL >= 2
|
||||
#define LOGI_2(FMT, ...) \
|
||||
ESP_LOGI(TAG, "[2] " FMT, ##__VA_ARGS__)
|
||||
#else
|
||||
#define LOGI_2(FMT, ...) { (void)TAG;}
|
||||
#endif
|
||||
|
||||
#if CONFIG_AUDIO_PLAYER_LOG_LEVEL >= 3
|
||||
#define LOGI_3(FMT, ...) \
|
||||
ESP_LOGI(TAG, "[3] " FMT, ##__VA_ARGS__)
|
||||
#define COMPILE_3(x) x
|
||||
#else
|
||||
#define LOGI_3(FMT, ...) { (void)TAG; }
|
||||
#define COMPILE_3(x) {}
|
||||
#endif
|
||||
169
managed_components/chmorgan__esp-audio-player/audio_mp3.cpp
Normal file
169
managed_components/chmorgan__esp-audio-player/audio_mp3.cpp
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
#include <string.h>
|
||||
#include "audio_log.h"
|
||||
#include "audio_mp3.h"
|
||||
|
||||
static const char *TAG = "mp3";
|
||||
|
||||
bool is_mp3(FILE *fp) {
|
||||
bool is_mp3_file = false;
|
||||
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
// see https://en.wikipedia.org/wiki/List_of_file_signatures
|
||||
uint8_t magic[3];
|
||||
if(sizeof(magic) == fread(magic, 1, sizeof(magic), fp)) {
|
||||
if((magic[0] == 0xFF) &&
|
||||
(magic[1] == 0xFB))
|
||||
{
|
||||
is_mp3_file = true;
|
||||
} else if((magic[0] == 0xFF) &&
|
||||
(magic[1] == 0xF3))
|
||||
{
|
||||
is_mp3_file = true;
|
||||
} else if((magic[0] == 0xFF) &&
|
||||
(magic[1] == 0xF2))
|
||||
{
|
||||
is_mp3_file = true;
|
||||
} else if((magic[0] == 0x49) &&
|
||||
(magic[1] == 0x44) &&
|
||||
(magic[2] == 0x33)) /* 'ID3' */
|
||||
{
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
/* Get ID3 head */
|
||||
mp3_id3_header_v2_t tag;
|
||||
if (sizeof(mp3_id3_header_v2_t) == fread(&tag, 1, sizeof(mp3_id3_header_v2_t), fp)) {
|
||||
if (memcmp("ID3", (const void *) &tag, sizeof(tag.header)) == 0) {
|
||||
is_mp3_file = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// seek back to the start of the file to avoid
|
||||
// missing frames upon decode
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
return is_mp3_file;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if data remains, false on error or end of file
|
||||
*/
|
||||
DECODE_STATUS decode_mp3(HMP3Decoder mp3_decoder, FILE *fp, decode_data *pData, mp3_instance *pInstance) {
|
||||
MP3FrameInfo frame_info;
|
||||
|
||||
size_t unread_bytes = pInstance->bytes_in_data_buf - (pInstance->read_ptr - pInstance->data_buf);
|
||||
|
||||
/* somewhat arbitrary trigger to refill buffer - should always be enough for a full frame */
|
||||
if (unread_bytes < 1.25 * MAINBUF_SIZE && !pInstance->eof_reached) {
|
||||
uint8_t *write_ptr = pInstance->data_buf + unread_bytes;
|
||||
size_t free_space = pInstance->data_buf_size - unread_bytes;
|
||||
|
||||
/* move last, small chunk from end of buffer to start,
|
||||
then fill with new data */
|
||||
memmove(pInstance->data_buf, pInstance->read_ptr, unread_bytes);
|
||||
|
||||
size_t nRead = fread(write_ptr, 1, free_space, fp);
|
||||
|
||||
pInstance->bytes_in_data_buf = unread_bytes + nRead;
|
||||
pInstance->read_ptr = pInstance->data_buf;
|
||||
|
||||
if ((nRead == 0) || feof(fp)) {
|
||||
pInstance->eof_reached = true;
|
||||
}
|
||||
|
||||
LOGI_2("pos %ld, nRead %d, eof %d", ftell(fp), nRead, pInstance->eof_reached);
|
||||
|
||||
unread_bytes = pInstance->bytes_in_data_buf;
|
||||
}
|
||||
|
||||
LOGI_3("data_buf 0x%p, read 0x%p", pInstance->data_buf, pInstance->read_ptr);
|
||||
|
||||
if(unread_bytes == 0) {
|
||||
LOGI_1("unread_bytes == 0, status done");
|
||||
return DECODE_STATUS_DONE;
|
||||
}
|
||||
|
||||
/* Find MP3 sync word from read buffer */
|
||||
int offset = MP3FindSyncWord(pInstance->read_ptr, unread_bytes);
|
||||
|
||||
LOGI_2("unread %d, total %d, offset 0x%x(%d)",
|
||||
unread_bytes, pInstance->bytes_in_data_buf, offset, offset);
|
||||
|
||||
if (offset >= 0) {
|
||||
COMPILE_3(int starting_unread_bytes = unread_bytes);
|
||||
uint8_t *read_ptr = pInstance->read_ptr + offset; /*!< Data start point */
|
||||
unread_bytes -= offset;
|
||||
LOGI_3("read 0x%p, unread %d", read_ptr, unread_bytes);
|
||||
int mp3_dec_err = MP3Decode(mp3_decoder, &read_ptr, (int*)&unread_bytes, reinterpret_cast<int16_t *>(pData->samples),
|
||||
0);
|
||||
|
||||
pInstance->read_ptr = read_ptr;
|
||||
|
||||
if(mp3_dec_err == ERR_MP3_NONE) {
|
||||
/* Get MP3 frame info */
|
||||
MP3GetLastFrameInfo(mp3_decoder, &frame_info);
|
||||
|
||||
pData->fmt.sample_rate = frame_info.samprate;
|
||||
pData->fmt.bits_per_sample = frame_info.bitsPerSample;
|
||||
pData->fmt.channels = frame_info.nChans;
|
||||
|
||||
pData->frame_count = (frame_info.outputSamps / frame_info.nChans);
|
||||
|
||||
LOGI_3("mp3: channels %d, sr %d, bps %d, frame_count %d, processed %d",
|
||||
pData->fmt.channels,
|
||||
pData->fmt.sample_rate,
|
||||
pData->fmt.bits_per_sample,
|
||||
frame_info.outputSamps,
|
||||
starting_unread_bytes - unread_bytes);
|
||||
} else {
|
||||
if (pInstance->eof_reached) {
|
||||
ESP_LOGE(TAG, "status error %d, but EOF", mp3_dec_err);
|
||||
return DECODE_STATUS_DONE;
|
||||
} else if (mp3_dec_err == ERR_MP3_MAINDATA_UNDERFLOW) {
|
||||
// underflow indicates MP3Decode should be called again
|
||||
LOGI_1("underflow read ptr is 0x%p", read_ptr);
|
||||
return DECODE_STATUS_NO_DATA_CONTINUE;
|
||||
} else {
|
||||
// NOTE: some mp3 files result in misdetection of mp3 frame headers
|
||||
// and during decode these misdetected frames cannot be
|
||||
// decoded
|
||||
//
|
||||
// Rather than give up on the file by returning
|
||||
// DECODE_STATUS_ERROR, we ask the caller
|
||||
// to continue to call us, by returning DECODE_STATUS_NO_DATA_CONTINUE.
|
||||
//
|
||||
// The invalid frame data is skipped over as a search for the next frame
|
||||
// on the subsequent call to this function will start searching
|
||||
// AFTER the misdetected frmame header, dropping the invalid data.
|
||||
//
|
||||
// We may want to consider a more sophisticated approach here at a later time.
|
||||
ESP_LOGE(TAG, "status error %d", mp3_dec_err);
|
||||
return DECODE_STATUS_NO_DATA_CONTINUE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// if we are dropping data there were no frames decoded
|
||||
pData->frame_count = 0;
|
||||
|
||||
// drop an even count of words
|
||||
size_t words_to_drop = unread_bytes / BYTES_IN_WORD;
|
||||
size_t bytes_to_drop = words_to_drop * BYTES_IN_WORD;
|
||||
|
||||
// if the unread bytes is less than BYTES_IN_WORD, we should drop any unread bytes
|
||||
// to avoid the situation where the file could have a few extra bytes at the end
|
||||
// of the file that isn't at least BYTES_IN_WORD and decoding would get stuck
|
||||
if(unread_bytes < BYTES_IN_WORD) {
|
||||
bytes_to_drop = unread_bytes;
|
||||
}
|
||||
|
||||
// shift the read_ptr to drop the bytes in the buffer
|
||||
pInstance->read_ptr += bytes_to_drop;
|
||||
|
||||
/* Sync word not found in frame. Drop data that was read until a word boundary */
|
||||
ESP_LOGE(TAG, "MP3 sync word not found, dropping %d bytes", bytes_to_drop);
|
||||
}
|
||||
|
||||
return DECODE_STATUS_CONTINUE;
|
||||
}
|
||||
48
managed_components/chmorgan__esp-audio-player/audio_mp3.h
Normal file
48
managed_components/chmorgan__esp-audio-player/audio_mp3.h
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include "audio_decode_types.h"
|
||||
#include "mp3dec.h"
|
||||
|
||||
typedef struct {
|
||||
char header[3]; /*!< Always "TAG" */
|
||||
char title[30]; /*!< Audio title */
|
||||
char artist[30]; /*!< Audio artist */
|
||||
char album[30]; /*!< Album name */
|
||||
char year[4]; /*!< Char array of year */
|
||||
char comment[30]; /*!< Extra comment */
|
||||
char genre; /*!< See "https://en.wikipedia.org/wiki/ID3" */
|
||||
} __attribute__((packed)) mp3_id3_header_v1_t;
|
||||
|
||||
typedef struct {
|
||||
char header[3]; /*!< Always "ID3" */
|
||||
char ver; /*!< Version, equals to3 if ID3V2.3 */
|
||||
char revision; /*!< Revision, should be 0 */
|
||||
char flag; /*!< Flag byte, use Bit[7..5] only */
|
||||
char size[4]; /*!< TAG size */
|
||||
} __attribute__((packed)) mp3_id3_header_v2_t;
|
||||
|
||||
typedef struct {
|
||||
// Constants below
|
||||
uint8_t *data_buf;
|
||||
|
||||
/** number of bytes in data_buf */
|
||||
size_t data_buf_size;
|
||||
|
||||
// Values that change at runtime are below
|
||||
|
||||
/**
|
||||
* Total bytes in data_buf,
|
||||
* not the number of bytes remaining after the read_ptr
|
||||
*/
|
||||
size_t bytes_in_data_buf;
|
||||
|
||||
/** Pointer to read location in data_buf */
|
||||
uint8_t *read_ptr;
|
||||
|
||||
// set to true if the end of file has been reached
|
||||
bool eof_reached;
|
||||
} mp3_instance;
|
||||
|
||||
bool is_mp3(FILE *fp);
|
||||
DECODE_STATUS decode_mp3(HMP3Decoder mp3_decoder, FILE *fp, decode_data *pData, mp3_instance *pInstance);
|
||||
608
managed_components/chmorgan__esp-audio-player/audio_player.cpp
Normal file
608
managed_components/chmorgan__esp-audio-player/audio_player.cpp
Normal file
|
|
@ -0,0 +1,608 @@
|
|||
/**
|
||||
* @file
|
||||
* @version 0.1
|
||||
*
|
||||
* @copyright Copyright 2021 Espressif Systems (Shanghai) Co. Ltd.
|
||||
* @copyright Copyright 2022 Chris Morgan <chmorgan@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/unistd.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "esp_check.h"
|
||||
#include "esp_log.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "freertos/queue.h"
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#include "audio_player.h"
|
||||
|
||||
#include "audio_wav.h"
|
||||
#include "audio_mp3.h"
|
||||
|
||||
static const char *TAG = "audio";
|
||||
|
||||
typedef enum {
|
||||
AUDIO_PLAYER_REQUEST_NONE = 0,
|
||||
AUDIO_PLAYER_REQUEST_PAUSE, /**< pause playback */
|
||||
AUDIO_PLAYER_REQUEST_RESUME, /**< resumed paused playback */
|
||||
AUDIO_PLAYER_REQUEST_PLAY, /**< initiate playing a new file */
|
||||
AUDIO_PLAYER_REQUEST_STOP, /**< stop playback */
|
||||
AUDIO_PLAYER_REQUEST_SHUTDOWN_THREAD, /**< shutdown audio playback thread */
|
||||
AUDIO_PLAYER_REQUEST_MAX
|
||||
} audio_player_event_type_t;
|
||||
|
||||
typedef struct {
|
||||
audio_player_event_type_t type;
|
||||
|
||||
// valid if type == AUDIO_PLAYER_EVENT_TYPE_PLAY
|
||||
FILE* fp;
|
||||
} audio_player_event_t;
|
||||
|
||||
typedef enum {
|
||||
FILE_TYPE_UNKNOWN,
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_MP3)
|
||||
FILE_TYPE_MP3,
|
||||
#endif
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_WAV)
|
||||
FILE_TYPE_WAV
|
||||
#endif
|
||||
} FILE_TYPE;
|
||||
|
||||
typedef struct audio_instance {
|
||||
/**
|
||||
* Set to true before task is created, false immediately before the
|
||||
* task is deleted.
|
||||
*/
|
||||
bool running;
|
||||
|
||||
decode_data output;
|
||||
|
||||
QueueHandle_t event_queue;
|
||||
|
||||
/* **************** AUDIO CALLBACK **************** */
|
||||
audio_player_cb_t s_audio_cb;
|
||||
void *audio_cb_usrt_ctx;
|
||||
audio_player_state_t state;
|
||||
|
||||
audio_player_config_t config;
|
||||
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_WAV)
|
||||
wav_instance wav_data;
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_MP3)
|
||||
HMP3Decoder mp3_decoder;
|
||||
mp3_instance mp3_data;
|
||||
#endif
|
||||
} audio_instance_t;
|
||||
|
||||
static audio_instance_t instance;
|
||||
|
||||
audio_player_state_t audio_player_get_state() {
|
||||
return instance.state;
|
||||
}
|
||||
|
||||
esp_err_t audio_player_callback_register(audio_player_cb_t call_back, void *user_ctx)
|
||||
{
|
||||
#if CONFIG_IDF_TARGET_ARCH_XTENSA
|
||||
ESP_RETURN_ON_FALSE(esp_ptr_executable(reinterpret_cast<void*>(call_back)), ESP_ERR_INVALID_ARG,
|
||||
TAG, "Not a valid call back");
|
||||
#else
|
||||
ESP_RETURN_ON_FALSE(reinterpret_cast<void*>(call_back), ESP_ERR_INVALID_ARG,
|
||||
TAG, "Not a valid call back");
|
||||
#endif
|
||||
instance.s_audio_cb = call_back;
|
||||
instance.audio_cb_usrt_ctx = user_ctx;
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
// This function is used in some optional logging functions so we don't want to
|
||||
// have a cppcheck warning here
|
||||
// cppcheck-suppress unusedFunction
|
||||
const char* event_to_string(audio_player_callback_event_t event) {
|
||||
switch(event) {
|
||||
case AUDIO_PLAYER_CALLBACK_EVENT_IDLE:
|
||||
return "AUDIO_PLAYER_CALLBACK_EVENT_IDLE";
|
||||
case AUDIO_PLAYER_CALLBACK_EVENT_COMPLETED_PLAYING_NEXT:
|
||||
return "AUDIO_PLAYER_CALLBACK_EVENT_COMPLETED_PLAYING_NEXT";
|
||||
case AUDIO_PLAYER_CALLBACK_EVENT_PLAYING:
|
||||
return "AUDIO_PLAYER_CALLBACK_EVENT_PLAYING";
|
||||
case AUDIO_PLAYER_CALLBACK_EVENT_PAUSE:
|
||||
return "AUDIO_PLAYER_CALLBACK_EVENT_PAUSE";
|
||||
case AUDIO_PLAYER_CALLBACK_EVENT_SHUTDOWN:
|
||||
return "AUDIO_PLAYER_CALLBACK_EVENT_SHUTDOWN";
|
||||
case AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN_FILE_TYPE:
|
||||
return "AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN_FILE_TYPE";
|
||||
case AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN:
|
||||
return "AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN";
|
||||
}
|
||||
|
||||
return "unknown event";
|
||||
}
|
||||
|
||||
static audio_player_callback_event_t state_to_event(audio_player_state_t state) {
|
||||
audio_player_callback_event_t event = AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN;
|
||||
|
||||
switch(state) {
|
||||
case AUDIO_PLAYER_STATE_IDLE:
|
||||
event = AUDIO_PLAYER_CALLBACK_EVENT_IDLE;
|
||||
break;
|
||||
case AUDIO_PLAYER_STATE_PAUSE:
|
||||
event = AUDIO_PLAYER_CALLBACK_EVENT_PAUSE;
|
||||
break;
|
||||
case AUDIO_PLAYER_STATE_PLAYING:
|
||||
event = AUDIO_PLAYER_CALLBACK_EVENT_PLAYING;
|
||||
break;
|
||||
case AUDIO_PLAYER_STATE_SHUTDOWN:
|
||||
event = AUDIO_PLAYER_CALLBACK_EVENT_SHUTDOWN;
|
||||
break;
|
||||
};
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
static void dispatch_callback(audio_instance_t *i, audio_player_callback_event_t event) {
|
||||
LOGI_1("event '%s'", event_to_string(event));
|
||||
|
||||
#if CONFIG_IDF_TARGET_ARCH_XTENSA
|
||||
if (esp_ptr_executable(reinterpret_cast<void*>(i->s_audio_cb))) {
|
||||
#else
|
||||
if (reinterpret_cast<void*>(i->s_audio_cb)) {
|
||||
#endif
|
||||
audio_player_cb_ctx_t ctx = {
|
||||
.audio_event = event,
|
||||
.user_ctx = i->audio_cb_usrt_ctx,
|
||||
};
|
||||
i->s_audio_cb(&ctx);
|
||||
}
|
||||
}
|
||||
|
||||
static void set_state(audio_instance_t *i, audio_player_state_t new_state) {
|
||||
if(i->state != new_state) {
|
||||
i->state = new_state;
|
||||
audio_player_callback_event_t event = state_to_event(new_state);
|
||||
dispatch_callback(i, event);
|
||||
}
|
||||
}
|
||||
|
||||
static void audio_instance_init(audio_instance_t &i) {
|
||||
i.event_queue = NULL;
|
||||
i.s_audio_cb = NULL;
|
||||
i.audio_cb_usrt_ctx = NULL;
|
||||
i.state = AUDIO_PLAYER_STATE_IDLE;
|
||||
}
|
||||
|
||||
static esp_err_t mono_to_stereo(uint32_t output_bits_per_sample, decode_data &adata)
|
||||
{
|
||||
size_t data = adata.frame_count * (output_bits_per_sample / BITS_PER_BYTE);
|
||||
data *= 2;
|
||||
|
||||
// do we have enough space in the output buffer to convert mono to stereo?
|
||||
if(data > adata.samples_capacity_max) {
|
||||
ESP_LOGE(TAG, "insufficient space in output.samples to convert mono to stereo, need %d, have %d", data, adata.samples_capacity_max);
|
||||
return ESP_ERR_NO_MEM;
|
||||
}
|
||||
|
||||
size_t new_sample_count = adata.frame_count * 2;
|
||||
|
||||
// convert from back to front to allow conversion in-place
|
||||
//
|
||||
// NOTE: -1 is because we want to shift to the sample at position X
|
||||
// but if we do (ptr + X) we end up at the sample at index X instead
|
||||
// which is one further
|
||||
int16_t *out = reinterpret_cast<int16_t*>(adata.samples) + (new_sample_count - 1);
|
||||
int16_t *in = reinterpret_cast<int16_t*>(adata.samples) + (adata.frame_count - 1);
|
||||
size_t samples = adata.frame_count;
|
||||
while(samples) {
|
||||
// write right channel
|
||||
*out = *in;
|
||||
out--;
|
||||
|
||||
// write left channel
|
||||
*out = *in;
|
||||
out--;
|
||||
|
||||
// move input buffer back and decrement samples
|
||||
in--;
|
||||
samples--;
|
||||
}
|
||||
|
||||
// adjust channels to 2
|
||||
adata.fmt.channels = 2;
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static esp_err_t aplay_file(audio_instance_t *i, FILE *fp)
|
||||
{
|
||||
LOGI_1("start to decode");
|
||||
|
||||
format i2s_format;
|
||||
memset(&i2s_format, 0, sizeof(i2s_format));
|
||||
|
||||
esp_err_t ret = ESP_OK;
|
||||
audio_player_event_t audio_event = { .type = AUDIO_PLAYER_REQUEST_NONE, .fp = NULL };
|
||||
|
||||
FILE_TYPE file_type = FILE_TYPE_UNKNOWN;
|
||||
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_MP3)
|
||||
if(is_mp3(fp)) {
|
||||
file_type = FILE_TYPE_MP3;
|
||||
LOGI_1("file is mp3");
|
||||
|
||||
// initialize mp3_instance
|
||||
i->mp3_data.bytes_in_data_buf = 0;
|
||||
i->mp3_data.read_ptr = i->mp3_data.data_buf;
|
||||
i->mp3_data.eof_reached = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_WAV)
|
||||
// This can be a pointless condition depending on the build options, no reason to warn about it
|
||||
// cppcheck-suppress knownConditionTrueFalse
|
||||
if(file_type == FILE_TYPE_UNKNOWN)
|
||||
{
|
||||
if(is_wav(fp, &i->wav_data)) {
|
||||
file_type = FILE_TYPE_WAV;
|
||||
LOGI_1("file is wav");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// cppcheck-suppress knownConditionTrueFalse
|
||||
if(file_type == FILE_TYPE_UNKNOWN) {
|
||||
ESP_LOGE(TAG, "unknown file type, cleaning up");
|
||||
dispatch_callback(i, AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN_FILE_TYPE);
|
||||
goto clean_up;
|
||||
}
|
||||
|
||||
do {
|
||||
/* Process audio event sent from other task */
|
||||
if (pdPASS == xQueuePeek(i->event_queue, &audio_event, 0)) {
|
||||
LOGI_2("event in queue");
|
||||
if (AUDIO_PLAYER_REQUEST_PAUSE == audio_event.type) {
|
||||
// receive the pause event to take it off of the queue
|
||||
xQueueReceive(i->event_queue, &audio_event, 0);
|
||||
|
||||
set_state(i, AUDIO_PLAYER_STATE_PAUSE);
|
||||
|
||||
// wait until an event is received that will cause playback to resume,
|
||||
// stop, or change file
|
||||
while(1) {
|
||||
xQueuePeek(i->event_queue, &audio_event, portMAX_DELAY);
|
||||
|
||||
if((AUDIO_PLAYER_REQUEST_PLAY != audio_event.type) &&
|
||||
(AUDIO_PLAYER_REQUEST_STOP != audio_event.type) &&
|
||||
(AUDIO_PLAYER_REQUEST_RESUME != audio_event.type))
|
||||
{
|
||||
// receive to discard the event
|
||||
xQueueReceive(i->event_queue, &audio_event, 0);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(AUDIO_PLAYER_REQUEST_RESUME == audio_event.type) {
|
||||
// receive to discard the event
|
||||
xQueueReceive(i->event_queue, &audio_event, 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
// else fall out of this condition and let the below logic
|
||||
// handle the other event types
|
||||
}
|
||||
|
||||
if ((AUDIO_PLAYER_REQUEST_STOP == audio_event.type) ||
|
||||
(AUDIO_PLAYER_REQUEST_PLAY == audio_event.type)) {
|
||||
ret = ESP_OK;
|
||||
goto clean_up;
|
||||
} else {
|
||||
// receive to discard the event, this event has no
|
||||
// impact on the state of playback
|
||||
xQueueReceive(i->event_queue, &audio_event, 0);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
set_state(i, AUDIO_PLAYER_STATE_PLAYING);
|
||||
|
||||
DECODE_STATUS decode_status = DECODE_STATUS_ERROR;
|
||||
|
||||
switch(file_type) {
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_MP3)
|
||||
case FILE_TYPE_MP3:
|
||||
decode_status = decode_mp3(i->mp3_decoder, fp, &i->output, &i->mp3_data);
|
||||
break;
|
||||
#endif
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_WAV)
|
||||
case FILE_TYPE_WAV:
|
||||
decode_status = decode_wav(fp, &i->output, &i->wav_data);
|
||||
break;
|
||||
#endif
|
||||
case FILE_TYPE_UNKNOWN:
|
||||
ESP_LOGE(TAG, "unexpected unknown file type when decoding");
|
||||
break;
|
||||
}
|
||||
|
||||
// break out and exit if we aren't supposed to continue decoding
|
||||
if(decode_status == DECODE_STATUS_CONTINUE)
|
||||
{
|
||||
// if mono, convert to stereo as es8311 requires stereo input
|
||||
// even though it is mono output
|
||||
if(i->output.fmt.channels == 1) {
|
||||
LOGI_3("c == 1, mono -> stereo");
|
||||
ret = mono_to_stereo(i->output.fmt.bits_per_sample, i->output);
|
||||
if(ret != ESP_OK) {
|
||||
goto clean_up;
|
||||
}
|
||||
}
|
||||
|
||||
/* Configure I2S clock if the output format changed */
|
||||
if ((i2s_format.sample_rate != i->output.fmt.sample_rate) ||
|
||||
(i2s_format.channels != i->output.fmt.channels) ||
|
||||
(i2s_format.bits_per_sample != i->output.fmt.bits_per_sample)) {
|
||||
i2s_format = i->output.fmt;
|
||||
LOGI_1("format change: sr=%d, bit=%d, ch=%d",
|
||||
i2s_format.sample_rate,
|
||||
i2s_format.bits_per_sample,
|
||||
i2s_format.channels);
|
||||
i2s_slot_mode_t channel_setting = (i2s_format.channels == 1) ? I2S_SLOT_MODE_MONO : I2S_SLOT_MODE_STEREO;
|
||||
ret = i->config.clk_set_fn(i2s_format.sample_rate,
|
||||
i2s_format.bits_per_sample,
|
||||
channel_setting);
|
||||
ESP_GOTO_ON_ERROR(ret, clean_up, TAG, "i2s_set_clk");
|
||||
}
|
||||
|
||||
/**
|
||||
* Block until all data has been accepted into the i2s driver, however
|
||||
* the i2s driver has been configured with a buffer to allow for the next round of
|
||||
* audio decoding to occur while the previous set of samples is finishing playback, in order
|
||||
* to ensure playback without interruption.
|
||||
*/
|
||||
size_t i2s_bytes_written = 0;
|
||||
size_t bytes_to_write = i->output.frame_count * i->output.fmt.channels * (i2s_format.bits_per_sample / 8);
|
||||
LOGI_2("c %d, bps %d, bytes %d, frame_count %d",
|
||||
i->output.fmt.channels,
|
||||
i2s_format.bits_per_sample,
|
||||
bytes_to_write,
|
||||
i->output.frame_count);
|
||||
|
||||
i->config.write_fn(i->output.samples, bytes_to_write, &i2s_bytes_written, portMAX_DELAY);
|
||||
if(bytes_to_write != i2s_bytes_written) {
|
||||
ESP_LOGE(TAG, "to write %d != written %d", bytes_to_write, i2s_bytes_written);
|
||||
}
|
||||
} else if(decode_status == DECODE_STATUS_NO_DATA_CONTINUE)
|
||||
{
|
||||
LOGI_2("no data");
|
||||
} else { // DECODE_STATUS_DONE || DECODE_STATUS_ERROR
|
||||
LOGI_1("breaking out of playback");
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
|
||||
clean_up:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void audio_task(void *pvParam)
|
||||
{
|
||||
audio_instance_t *i = static_cast<audio_instance_t*>(pvParam);
|
||||
audio_player_event_t audio_event;
|
||||
|
||||
while (true) {
|
||||
// pull items off of the queue until we run into a PLAY request
|
||||
while(true) {
|
||||
// zero delay in the case where we are playing as we want to
|
||||
// send an event indicating either
|
||||
// PLAYING -> IDLE (IDLE) or PLAYING -> PLAYING (COMPLETED PLAYING NEXT)
|
||||
// and thus don't want to block until the next request comes in
|
||||
// in the case when there are no further requests pending
|
||||
int delay = (i->state == AUDIO_PLAYER_STATE_PLAYING) ? 0 : portMAX_DELAY;
|
||||
|
||||
int retval = xQueuePeek(i->event_queue, &audio_event, delay);
|
||||
if (pdPASS == retval) { // item on the queue, process it
|
||||
xQueueReceive(i->event_queue, &audio_event, 0);
|
||||
|
||||
// if the item is a play request, process it
|
||||
if(AUDIO_PLAYER_REQUEST_PLAY == audio_event.type) {
|
||||
if(i->state == AUDIO_PLAYER_STATE_PLAYING) {
|
||||
dispatch_callback(i, AUDIO_PLAYER_CALLBACK_EVENT_COMPLETED_PLAYING_NEXT);
|
||||
} else {
|
||||
set_state(i, AUDIO_PLAYER_STATE_PLAYING);
|
||||
}
|
||||
|
||||
break;
|
||||
} else if(AUDIO_PLAYER_REQUEST_SHUTDOWN_THREAD == audio_event.type) {
|
||||
set_state(i, AUDIO_PLAYER_STATE_SHUTDOWN);
|
||||
i->running = false;
|
||||
|
||||
// should never return
|
||||
vTaskDelete(NULL);
|
||||
break;
|
||||
} else {
|
||||
// ignore other events when not playing
|
||||
}
|
||||
} else { // no items on the queue
|
||||
// if we are playing transition to idle and indicate the transition via callback
|
||||
if(i->state == AUDIO_PLAYER_STATE_PLAYING) {
|
||||
set_state(i, AUDIO_PLAYER_STATE_IDLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i->config.mute_fn(AUDIO_PLAYER_UNMUTE);
|
||||
esp_err_t ret_val = aplay_file(i, audio_event.fp);
|
||||
if(ret_val != ESP_OK)
|
||||
{
|
||||
ESP_LOGE(TAG, "aplay_file() %d", ret_val);
|
||||
}
|
||||
i->config.mute_fn(AUDIO_PLAYER_MUTE);
|
||||
|
||||
if(audio_event.fp) fclose(audio_event.fp);
|
||||
}
|
||||
}
|
||||
|
||||
/* **************** AUDIO PLAY CONTROL **************** */
|
||||
static esp_err_t audio_send_event(audio_instance_t *i, audio_player_event_t event) {
|
||||
ESP_RETURN_ON_FALSE(NULL != i->event_queue, ESP_ERR_INVALID_STATE,
|
||||
TAG, "Audio task not started yet");
|
||||
|
||||
BaseType_t ret_val = xQueueSend(i->event_queue, &event, 0);
|
||||
|
||||
ESP_RETURN_ON_FALSE(pdPASS == ret_val, ESP_ERR_INVALID_STATE,
|
||||
TAG, "The last event has not been processed yet");
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t audio_player_play(FILE *fp)
|
||||
{
|
||||
LOGI_1("%s", __FUNCTION__);
|
||||
audio_player_event_t event = { .type = AUDIO_PLAYER_REQUEST_PLAY, .fp = fp };
|
||||
return audio_send_event(&instance, event);
|
||||
}
|
||||
|
||||
esp_err_t audio_player_pause(void)
|
||||
{
|
||||
LOGI_1("%s", __FUNCTION__);
|
||||
audio_player_event_t event = { .type = AUDIO_PLAYER_REQUEST_PAUSE, .fp = NULL };
|
||||
return audio_send_event(&instance, event);
|
||||
}
|
||||
|
||||
esp_err_t audio_player_resume(void)
|
||||
{
|
||||
LOGI_1("%s", __FUNCTION__);
|
||||
audio_player_event_t event = { .type = AUDIO_PLAYER_REQUEST_RESUME, .fp = NULL };
|
||||
return audio_send_event(&instance, event);
|
||||
}
|
||||
|
||||
esp_err_t audio_player_stop(void)
|
||||
{
|
||||
LOGI_1("%s", __FUNCTION__);
|
||||
audio_player_event_t event = { .type = AUDIO_PLAYER_REQUEST_STOP, .fp = NULL };
|
||||
return audio_send_event(&instance, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Can only shut down the playback thread if the thread is not presently playing audio.
|
||||
* Call audio_player_stop()
|
||||
*/
|
||||
static esp_err_t _internal_audio_player_shutdown_thread(void)
|
||||
{
|
||||
LOGI_1("%s", __FUNCTION__);
|
||||
audio_player_event_t event = { .type = AUDIO_PLAYER_REQUEST_SHUTDOWN_THREAD, .fp = NULL };
|
||||
return audio_send_event(&instance, event);
|
||||
}
|
||||
|
||||
static void cleanup_memory(audio_instance_t &i)
|
||||
{
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_MP3)
|
||||
if(i.mp3_decoder) MP3FreeDecoder(i.mp3_decoder);
|
||||
if(i.mp3_data.data_buf) free(i.mp3_data.data_buf);
|
||||
#endif
|
||||
if(i.output.samples) free(i.output.samples);
|
||||
|
||||
vQueueDelete(i.event_queue);
|
||||
}
|
||||
|
||||
esp_err_t audio_player_new(audio_player_config_t config)
|
||||
{
|
||||
BaseType_t task_val;
|
||||
|
||||
audio_instance_init(instance);
|
||||
|
||||
instance.config = config;
|
||||
|
||||
/* Audio control event queue */
|
||||
instance.event_queue = xQueueCreate(4, sizeof(audio_player_event_t));
|
||||
ESP_RETURN_ON_FALSE(NULL != instance.event_queue, -1, TAG, "xQueueCreate");
|
||||
|
||||
/** See https://github.com/ultraembedded/libhelix-mp3/blob/0a0e0673f82bc6804e5a3ddb15fb6efdcde747cd/testwrap/main.c#L74 */
|
||||
instance.output.samples_capacity = MAX_NCHAN * MAX_NGRAN * MAX_NSAMP;
|
||||
instance.output.samples_capacity_max = instance.output.samples_capacity * 2;
|
||||
instance.output.samples = static_cast<uint8_t*>(malloc(instance.output.samples_capacity_max));
|
||||
LOGI_1("samples_capacity %d bytes", instance.output.samples_capacity_max);
|
||||
int ret = ESP_OK;
|
||||
ESP_GOTO_ON_FALSE(NULL != instance.output.samples, ESP_ERR_NO_MEM, cleanup,
|
||||
TAG, "Failed allocate output buffer");
|
||||
|
||||
#if defined(CONFIG_AUDIO_PLAYER_ENABLE_MP3)
|
||||
instance.mp3_data.data_buf_size = MAINBUF_SIZE * 3;
|
||||
instance.mp3_data.data_buf = static_cast<uint8_t*>(malloc(instance.mp3_data.data_buf_size));
|
||||
ESP_GOTO_ON_FALSE(NULL != instance.mp3_data.data_buf, ESP_ERR_NO_MEM, cleanup,
|
||||
TAG, "Failed allocate mp3 data buffer");
|
||||
|
||||
instance.mp3_decoder = MP3InitDecoder();
|
||||
ESP_GOTO_ON_FALSE(NULL != instance.mp3_decoder, ESP_ERR_NO_MEM, cleanup,
|
||||
TAG, "Failed create MP3 decoder");
|
||||
#endif
|
||||
|
||||
instance.running = true;
|
||||
task_val = xTaskCreatePinnedToCore(
|
||||
(TaskFunction_t) audio_task,
|
||||
"Audio Task",
|
||||
4 * 1024,
|
||||
&instance,
|
||||
(UBaseType_t) instance.config.priority,
|
||||
(TaskHandle_t * const) NULL,
|
||||
(BaseType_t) instance.config.coreID);
|
||||
|
||||
ESP_GOTO_ON_FALSE(pdPASS == task_val, ESP_ERR_NO_MEM, cleanup,
|
||||
TAG, "Failed create audio task");
|
||||
|
||||
// start muted
|
||||
instance.config.mute_fn(AUDIO_PLAYER_MUTE);
|
||||
|
||||
return ret;
|
||||
|
||||
// At the moment when we run cppcheck there is a lack of esp-idf header files this
|
||||
// means cppcheck doesn't know that ESP_GOTO_ON_FALSE() etc are making use of this label
|
||||
// cppcheck-suppress unusedLabelConfiguration
|
||||
cleanup:
|
||||
cleanup_memory(instance);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
esp_err_t audio_player_delete() {
|
||||
const int MAX_RETRIES = 5;
|
||||
int retries = MAX_RETRIES;
|
||||
while(instance.running && retries) {
|
||||
// stop any playback and shutdown the thread
|
||||
audio_player_stop();
|
||||
_internal_audio_player_shutdown_thread();
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
retries--;
|
||||
}
|
||||
|
||||
cleanup_memory(instance);
|
||||
|
||||
// if we ran out of retries, return fail code
|
||||
if(retries == 0) {
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
81
managed_components/chmorgan__esp-audio-player/audio_wav.cpp
Normal file
81
managed_components/chmorgan__esp-audio-player/audio_wav.cpp
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include "audio_wav.h"
|
||||
|
||||
static const char *TAG = "wav";
|
||||
|
||||
/**
|
||||
* @param fp
|
||||
* @param pInstance - Values can be considered valid if true is returned
|
||||
* @return true if file is a wav file
|
||||
*/
|
||||
bool is_wav(FILE *fp, wav_instance *pInstance) {
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
size_t bytes_read = fread(&pInstance->header, 1, sizeof(wav_header_t), fp);
|
||||
if(bytes_read != sizeof(wav_header_t)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
wav_header_t *wav_head = &pInstance->header;
|
||||
if((NULL == strstr(reinterpret_cast<char *>(wav_head->ChunkID), "RIFF")) ||
|
||||
(NULL == strstr(reinterpret_cast<char*>(wav_head->Format), "WAVE"))
|
||||
)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// decode chunks until we find the 'data' one
|
||||
wav_subchunk_header_t subchunk;
|
||||
while(true) {
|
||||
bytes_read = fread(&subchunk, 1, sizeof(wav_subchunk_header_t), fp);
|
||||
if(bytes_read != sizeof(wav_subchunk_header_t)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(memcmp(subchunk.SubchunkID, "data", 4) == 0)
|
||||
{
|
||||
break;
|
||||
} else {
|
||||
// advance beyond this subchunk, it could be a 'LIST' chunk with file info or some other unhandled subchunk
|
||||
fseek(fp, subchunk.SubchunkSize, SEEK_CUR);
|
||||
}
|
||||
}
|
||||
|
||||
LOGI_2("sample_rate=%d, channels=%d, bps=%d",
|
||||
wav_head->SampleRate,
|
||||
wav_head->NumChannels,
|
||||
wav_head->BitsPerSample);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if data remains, false on error or end of file
|
||||
*/
|
||||
DECODE_STATUS decode_wav(FILE *fp, decode_data *pData, wav_instance *pInstance) {
|
||||
// read an even multiple of frames that can fit into output_samples buffer, otherwise
|
||||
// we would have to manage what happens with partial frames in the output buffer
|
||||
size_t bytes_per_frame = (pInstance->header.BitsPerSample / BITS_PER_BYTE) * pInstance->header.NumChannels;
|
||||
size_t frames_to_read = pData->samples_capacity / bytes_per_frame;
|
||||
size_t bytes_to_read = frames_to_read * bytes_per_frame;
|
||||
|
||||
size_t bytes_read = fread(pData->samples, 1, bytes_to_read, fp);
|
||||
|
||||
pData->fmt.channels = pInstance->header.NumChannels;
|
||||
pData->fmt.bits_per_sample = pInstance->header.BitsPerSample;
|
||||
pData->fmt.sample_rate = pInstance->header.SampleRate;
|
||||
|
||||
if(bytes_read != 0)
|
||||
{
|
||||
pData->frame_count = (bytes_read / (pInstance->header.BitsPerSample / BITS_PER_BYTE)) / pInstance->header.NumChannels;
|
||||
} else {
|
||||
pData->frame_count = 0;
|
||||
}
|
||||
|
||||
LOGI_2("bytes_per_frame %d, bytes_to_read %d, bytes_read %d, frame_count %d",
|
||||
bytes_per_frame, bytes_to_read, bytes_read,
|
||||
pData->frame_count);
|
||||
|
||||
return (bytes_read == 0) ? DECODE_STATUS_DONE : DECODE_STATUS_CONTINUE;
|
||||
}
|
||||
34
managed_components/chmorgan__esp-audio-player/audio_wav.h
Normal file
34
managed_components/chmorgan__esp-audio-player/audio_wav.h
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include "audio_log.h"
|
||||
#include "audio_decode_types.h"
|
||||
|
||||
typedef struct {
|
||||
// The "RIFF" chunk descriptor
|
||||
uint8_t ChunkID[4];
|
||||
int32_t ChunkSize;
|
||||
uint8_t Format[4];
|
||||
// The "fmt" sub-chunk
|
||||
uint8_t Subchunk1ID[4];
|
||||
int32_t Subchunk1Size;
|
||||
int16_t AudioFormat;
|
||||
int16_t NumChannels;
|
||||
int32_t SampleRate;
|
||||
int32_t ByteRate;
|
||||
int16_t BlockAlign;
|
||||
int16_t BitsPerSample;
|
||||
} wav_header_t;
|
||||
|
||||
typedef struct {
|
||||
// The "data" sub-chunk
|
||||
uint8_t SubchunkID[4];
|
||||
int32_t SubchunkSize;
|
||||
} wav_subchunk_header_t;
|
||||
|
||||
typedef struct {
|
||||
wav_header_t header;
|
||||
} wav_instance;
|
||||
|
||||
bool is_wav(FILE *fp, wav_instance *pInstance);
|
||||
DECODE_STATUS decode_wav(FILE *fp, decode_data *pData, wav_instance *pInstance);
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
dependencies:
|
||||
chmorgan/esp-libhelix-mp3:
|
||||
version: '>=1.0.0,<2.0.0'
|
||||
idf:
|
||||
version: '>=5.0'
|
||||
description: Lightweight audio decoding component for esp processors
|
||||
url: https://github.com/chmorgan/esp-audio-player
|
||||
version: 1.0.7
|
||||
|
|
@ -0,0 +1,182 @@
|
|||
/**
|
||||
* @file
|
||||
* @version 0.1
|
||||
*
|
||||
* @copyright Copyright 2021 Espressif Systems (Shanghai) Co. Ltd.
|
||||
* @copyright Copyright 2022 Chris Morgan <chmorgan@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Design notes
|
||||
*
|
||||
* - There is a distinct event for playing -> playing state transitions.
|
||||
* COMPLETED_PLAYING_NEXT is helpful for users of the audio player to know
|
||||
* the difference between playing and transitioning to another audio file
|
||||
* vs. detecting that the audio file transitioned by looking at
|
||||
* events indicating IDLE and then PLAYING within a short period of time.
|
||||
*
|
||||
* State machine diagram
|
||||
*
|
||||
* cb is the callback function registered with audio_player_callback_register()
|
||||
*
|
||||
* cb(PLAYING) cb(PLAYING)
|
||||
* _______________________________ ____________________________________
|
||||
* | | | |
|
||||
* | | | |
|
||||
* | cb(IDLE) V V cb(PAUSE) |
|
||||
* Idle <------------------------ Playing ----------------------------> Pause
|
||||
* ^ |_____^ |
|
||||
* | cb(COMPLETED_PLAYING_NEXT) |
|
||||
* | |
|
||||
* |______________________________________________________________________|
|
||||
* cb(IDLE)
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include "esp_err.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "driver/i2s_std.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
AUDIO_PLAYER_STATE_IDLE,
|
||||
AUDIO_PLAYER_STATE_PLAYING,
|
||||
AUDIO_PLAYER_STATE_PAUSE,
|
||||
AUDIO_PLAYER_STATE_SHUTDOWN
|
||||
} audio_player_state_t;
|
||||
|
||||
/**
|
||||
* @brief Get the audio player state
|
||||
*
|
||||
* @return the present audio_player_state_t
|
||||
*/
|
||||
audio_player_state_t audio_player_get_state();
|
||||
|
||||
typedef enum {
|
||||
AUDIO_PLAYER_CALLBACK_EVENT_IDLE, /**< Player is idle, not playing audio */
|
||||
AUDIO_PLAYER_CALLBACK_EVENT_COMPLETED_PLAYING_NEXT, /**< Player is playing and playing a new audio file */
|
||||
AUDIO_PLAYER_CALLBACK_EVENT_PLAYING, /**< Player is playing */
|
||||
AUDIO_PLAYER_CALLBACK_EVENT_PAUSE, /**< Player is pausing */
|
||||
AUDIO_PLAYER_CALLBACK_EVENT_SHUTDOWN, /**< Player is shutting down */
|
||||
AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN_FILE_TYPE, /**< File type is unknown */
|
||||
AUDIO_PLAYER_CALLBACK_EVENT_UNKNOWN /**< Unknown event */
|
||||
} audio_player_callback_event_t;
|
||||
|
||||
typedef struct {
|
||||
audio_player_callback_event_t audio_event;
|
||||
void *user_ctx;
|
||||
} audio_player_cb_ctx_t;
|
||||
|
||||
/** Audio callback function type */
|
||||
typedef void (*audio_player_cb_t)(audio_player_cb_ctx_t *);
|
||||
|
||||
/**
|
||||
* @brief Play mp3 audio file.
|
||||
*
|
||||
* Will interrupt a present playback and start the new playback
|
||||
* as soon as possible.
|
||||
*
|
||||
* @param fp - If ESP_OK is returned, will be fclose()ed by the audio system
|
||||
* when the playback has completed or in the event of a playback error.
|
||||
* If not ESP_OK returned then should be fclose()d by the caller.
|
||||
* @return
|
||||
* - ESP_OK: Success in queuing play request
|
||||
* - Others: Fail
|
||||
*/
|
||||
esp_err_t audio_player_play(FILE *fp);
|
||||
|
||||
/**
|
||||
* @brief Pause playback
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: Success in queuing pause request
|
||||
* - Others: Fail
|
||||
*/
|
||||
esp_err_t audio_player_pause(void);
|
||||
|
||||
/**
|
||||
* @brief Resume playback
|
||||
*
|
||||
* Has no effect if playback is not in progress
|
||||
* @return esp_err_t
|
||||
* - ESP_OK: Success in queuing resume request
|
||||
* - Others: Fail
|
||||
*/
|
||||
esp_err_t audio_player_resume(void);
|
||||
|
||||
/**
|
||||
* @brief Stop playback
|
||||
*
|
||||
* Has no effect if playback is already stopped
|
||||
* @return esp_err_t
|
||||
* - ESP_OK: Success in queuing resume request
|
||||
* - Others: Fail
|
||||
*/
|
||||
esp_err_t audio_player_stop(void);
|
||||
|
||||
/**
|
||||
* @brief Register callback for audio event
|
||||
*
|
||||
* @param call_back Call back function
|
||||
* @param user_ctx User context
|
||||
* @return
|
||||
* - ESP_OK: Success
|
||||
* - Others: Fail
|
||||
*/
|
||||
esp_err_t audio_player_callback_register(audio_player_cb_t call_back, void *user_ctx);
|
||||
|
||||
typedef enum {
|
||||
AUDIO_PLAYER_MUTE,
|
||||
AUDIO_PLAYER_UNMUTE
|
||||
} AUDIO_PLAYER_MUTE_SETTING;
|
||||
|
||||
typedef esp_err_t (*audio_player_mute_fn)(AUDIO_PLAYER_MUTE_SETTING setting);
|
||||
typedef esp_err_t (*audio_reconfig_std_clock)(uint32_t rate, uint32_t bits_cfg, i2s_slot_mode_t ch);
|
||||
typedef esp_err_t (*audio_player_write_fn)(void *audio_buffer, size_t len, size_t *bytes_written, uint32_t timeout_ms);
|
||||
|
||||
typedef struct {
|
||||
audio_player_mute_fn mute_fn;
|
||||
audio_reconfig_std_clock clk_set_fn;
|
||||
audio_player_write_fn write_fn;
|
||||
UBaseType_t priority; /*< FreeRTOS task priority */
|
||||
BaseType_t coreID; /*< ESP32 core ID */
|
||||
} audio_player_config_t;
|
||||
|
||||
/**
|
||||
* @brief Initialize hardware, allocate memory, create and start audio task.
|
||||
* Call before any other 'audio' functions.
|
||||
*
|
||||
* @param port - The i2s port for output
|
||||
* @return esp_err_t
|
||||
*/
|
||||
esp_err_t audio_player_new(audio_player_config_t config);
|
||||
|
||||
/**
|
||||
* @brief Shut down audio task, free allocated memory.
|
||||
*
|
||||
* @return esp_err_t ESP_OK upon success, ESP_FAIL if unable to shutdown due to retries exhausted
|
||||
*/
|
||||
esp_err_t audio_player_delete();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
idf_component_register(SRC_DIRS "."
|
||||
PRIV_INCLUDE_DIRS "."
|
||||
PRIV_REQUIRES unity test_utils audio_player
|
||||
EMBED_TXTFILES gs-16b-1c-44100hz.mp3)
|
||||
|
|
@ -0,0 +1,282 @@
|
|||
// Copyright 2020 Espressif Systems (Shanghai) Co. Ltd.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "esp_log.h"
|
||||
#include "esp_check.h"
|
||||
#include "unity.h"
|
||||
#include "audio_player.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "test_utils.h"
|
||||
#include "freertos/semphr.h"
|
||||
|
||||
static const char *TAG = "AUDIO PLAYER TEST";
|
||||
|
||||
#define CONFIG_BSP_I2S_NUM 1
|
||||
|
||||
/* Audio */
|
||||
#define BSP_I2S_SCLK (GPIO_NUM_17)
|
||||
#define BSP_I2S_MCLK (GPIO_NUM_2)
|
||||
#define BSP_I2S_LCLK (GPIO_NUM_47)
|
||||
#define BSP_I2S_DOUT (GPIO_NUM_15) // To Codec ES8311
|
||||
#define BSP_I2S_DSIN (GPIO_NUM_16) // From ADC ES7210
|
||||
#define BSP_POWER_AMP_IO (GPIO_NUM_46)
|
||||
#define BSP_MUTE_STATUS (GPIO_NUM_1)
|
||||
|
||||
/**
|
||||
* @brief ESP-BOX I2S pinout
|
||||
*
|
||||
* Can be used for i2s_std_gpio_config_t and/or i2s_std_config_t initialization
|
||||
*/
|
||||
#define BSP_I2S_GPIO_CFG \
|
||||
{ \
|
||||
.mclk = BSP_I2S_MCLK, \
|
||||
.bclk = BSP_I2S_SCLK, \
|
||||
.ws = BSP_I2S_LCLK, \
|
||||
.dout = BSP_I2S_DOUT, \
|
||||
.din = BSP_I2S_DSIN, \
|
||||
.invert_flags = { \
|
||||
.mclk_inv = false, \
|
||||
.bclk_inv = false, \
|
||||
.ws_inv = false, \
|
||||
}, \
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Mono Duplex I2S configuration structure
|
||||
*
|
||||
* This configuration is used by default in bsp_audio_init()
|
||||
*/
|
||||
#define BSP_I2S_DUPLEX_MONO_CFG(_sample_rate) \
|
||||
{ \
|
||||
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(_sample_rate), \
|
||||
.slot_cfg = I2S_STD_PHILIP_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_MONO), \
|
||||
.gpio_cfg = BSP_I2S_GPIO_CFG, \
|
||||
}
|
||||
|
||||
static i2s_chan_handle_t i2s_tx_chan;
|
||||
static i2s_chan_handle_t i2s_rx_chan;
|
||||
|
||||
static esp_err_t bsp_i2s_write(void * audio_buffer, size_t len, size_t *bytes_written, uint32_t timeout_ms)
|
||||
{
|
||||
esp_err_t ret = ESP_OK;
|
||||
ret = i2s_channel_write(i2s_tx_chan, (char *)audio_buffer, len, bytes_written, timeout_ms);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static esp_err_t bsp_i2s_reconfig_clk(uint32_t rate, uint32_t bits_cfg, i2s_slot_mode_t ch)
|
||||
{
|
||||
esp_err_t ret = ESP_OK;
|
||||
i2s_std_config_t std_cfg = {
|
||||
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(rate),
|
||||
.slot_cfg = I2S_STD_PHILIP_SLOT_DEFAULT_CONFIG((i2s_data_bit_width_t)bits_cfg, (i2s_slot_mode_t)ch),
|
||||
.gpio_cfg = BSP_I2S_GPIO_CFG,
|
||||
};
|
||||
|
||||
ret |= i2s_channel_disable(i2s_tx_chan);
|
||||
ret |= i2s_channel_reconfig_std_clock(i2s_tx_chan, &std_cfg.clk_cfg);
|
||||
ret |= i2s_channel_reconfig_std_slot(i2s_tx_chan, &std_cfg.slot_cfg);
|
||||
ret |= i2s_channel_enable(i2s_tx_chan);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static esp_err_t audio_mute_function(AUDIO_PLAYER_MUTE_SETTING setting) {
|
||||
ESP_LOGI(TAG, "mute setting %d", setting);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
TEST_CASE("audio player can be newed and deleted", "[audio player]")
|
||||
{
|
||||
audio_player_config_t config = { .mute_fn = audio_mute_function,
|
||||
.write_fn = bsp_i2s_write,
|
||||
.clk_set_fn = bsp_i2s_reconfig_clk,
|
||||
.priority = 0,
|
||||
.coreID = 0 };
|
||||
esp_err_t ret = audio_player_new(config);
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
ret = audio_player_delete();
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
audio_player_state_t state = audio_player_get_state();
|
||||
TEST_ASSERT_EQUAL(state, AUDIO_PLAYER_STATE_SHUTDOWN);
|
||||
}
|
||||
|
||||
static esp_err_t bsp_audio_init(const i2s_std_config_t *i2s_config, i2s_chan_handle_t *tx_channel, i2s_chan_handle_t *rx_channel)
|
||||
{
|
||||
/* Setup I2S peripheral */
|
||||
i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(CONFIG_BSP_I2S_NUM, I2S_ROLE_MASTER);
|
||||
chan_cfg.auto_clear = true; // Auto clear the legacy data in the DMA buffer
|
||||
ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, tx_channel, rx_channel));
|
||||
|
||||
/* Setup I2S channels */
|
||||
const i2s_std_config_t std_cfg_default = BSP_I2S_DUPLEX_MONO_CFG(22050);
|
||||
const i2s_std_config_t *p_i2s_cfg = &std_cfg_default;
|
||||
if (i2s_config != NULL) {
|
||||
p_i2s_cfg = i2s_config;
|
||||
}
|
||||
|
||||
if (tx_channel != NULL) {
|
||||
ESP_ERROR_CHECK(i2s_channel_init_std_mode(*tx_channel, p_i2s_cfg));
|
||||
ESP_ERROR_CHECK(i2s_channel_enable(*tx_channel));
|
||||
}
|
||||
if (rx_channel != NULL) {
|
||||
ESP_ERROR_CHECK(i2s_channel_init_std_mode(*rx_channel, p_i2s_cfg));
|
||||
ESP_ERROR_CHECK(i2s_channel_enable(*rx_channel));
|
||||
}
|
||||
|
||||
/* Setup power amplifier pin */
|
||||
const gpio_config_t io_conf = {
|
||||
.intr_type = GPIO_INTR_DISABLE,
|
||||
.mode = GPIO_MODE_OUTPUT,
|
||||
.pin_bit_mask = BIT64(BSP_POWER_AMP_IO),
|
||||
.pull_down_en = GPIO_PULLDOWN_DISABLE,
|
||||
.pull_up_en = GPIO_PULLDOWN_DISABLE,
|
||||
};
|
||||
ESP_ERROR_CHECK(gpio_config(&io_conf));
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static audio_player_callback_event_t expected_event;
|
||||
static QueueHandle_t event_queue;
|
||||
|
||||
static void audio_player_callback(audio_player_cb_ctx_t *ctx)
|
||||
{
|
||||
TEST_ASSERT_EQUAL(ctx->audio_event, expected_event);
|
||||
|
||||
// wake up the test so it can continue to the next step
|
||||
TEST_ASSERT_EQUAL(xQueueSend(event_queue, &(ctx->audio_event), 0), pdPASS);
|
||||
}
|
||||
|
||||
TEST_CASE("audio player states and callbacks are correct", "[audio player]")
|
||||
{
|
||||
audio_player_callback_event_t event;
|
||||
|
||||
/* Configure I2S peripheral and Power Amplifier */
|
||||
i2s_std_config_t std_cfg = {
|
||||
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(44100),
|
||||
.slot_cfg = I2S_STD_PHILIP_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO),
|
||||
.gpio_cfg = BSP_I2S_GPIO_CFG,
|
||||
};
|
||||
esp_err_t ret = bsp_audio_init(&std_cfg, &i2s_tx_chan, &i2s_rx_chan);
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
audio_player_config_t config = { .mute_fn = audio_mute_function,
|
||||
.write_fn = bsp_i2s_write,
|
||||
.clk_set_fn = bsp_i2s_reconfig_clk,
|
||||
.priority = 0,
|
||||
.coreID = 0 };
|
||||
ret = audio_player_new(config);
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
event_queue = xQueueCreate(1, sizeof(audio_player_callback_event_t));
|
||||
TEST_ASSERT_NOT_NULL(event_queue);
|
||||
|
||||
ret = audio_player_callback_register(audio_player_callback, NULL);
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
audio_player_state_t state = audio_player_get_state();
|
||||
TEST_ASSERT_EQUAL(state, AUDIO_PLAYER_STATE_IDLE);
|
||||
|
||||
extern const char mp3_start[] asm("_binary_gs_16b_1c_44100hz_mp3_start");
|
||||
extern const char mp3_end[] asm("_binary_gs_16b_1c_44100hz_mp3_end");
|
||||
|
||||
// -1 due to the size being 1 byte too large, I think because end is the byte
|
||||
// immediately after the last byte in the memory but I'm not sure - cmm 2022-08-20
|
||||
//
|
||||
// Suppression as these are linker symbols and cppcheck doesn't know how to ensure
|
||||
// they are the same object
|
||||
// cppcheck-suppress comparePointers
|
||||
size_t mp3_size = (mp3_end - mp3_start) - 1;
|
||||
ESP_LOGI(TAG, "mp3_size %zu bytes", mp3_size);
|
||||
|
||||
FILE *fp = fmemopen((void*)mp3_start, mp3_size, "rb");
|
||||
TEST_ASSERT_NOT_NULL(fp);
|
||||
|
||||
|
||||
|
||||
///////////////
|
||||
expected_event = AUDIO_PLAYER_CALLBACK_EVENT_PLAYING;
|
||||
ret = audio_player_play(fp);
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
// wait for playing event to arrive
|
||||
TEST_ASSERT_EQUAL(xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)), pdPASS);
|
||||
|
||||
// confirm state is playing
|
||||
state = audio_player_get_state();
|
||||
TEST_ASSERT_EQUAL(state, AUDIO_PLAYER_STATE_PLAYING);
|
||||
|
||||
|
||||
|
||||
///////////////
|
||||
expected_event = AUDIO_PLAYER_CALLBACK_EVENT_PAUSE;
|
||||
ret = audio_player_pause();
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
// wait for paused event to arrive
|
||||
TEST_ASSERT_EQUAL(xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)), pdPASS);
|
||||
|
||||
state = audio_player_get_state();
|
||||
TEST_ASSERT_EQUAL(state, AUDIO_PLAYER_STATE_PAUSE);
|
||||
|
||||
|
||||
|
||||
////////////////
|
||||
expected_event = AUDIO_PLAYER_CALLBACK_EVENT_PLAYING;
|
||||
ret = audio_player_resume();
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
// wait for paused event to arrive
|
||||
TEST_ASSERT_EQUAL(xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)), pdPASS);
|
||||
|
||||
|
||||
|
||||
///////////////
|
||||
expected_event = AUDIO_PLAYER_CALLBACK_EVENT_IDLE;
|
||||
|
||||
// the track is 16 seconds long so lets wait a bit here
|
||||
int sleep_seconds = 16;
|
||||
ESP_LOGI(TAG, "sleeping for %d seconds for playback to complete", sleep_seconds);
|
||||
vTaskDelay(pdMS_TO_TICKS(sleep_seconds * 1000));
|
||||
|
||||
// wait for idle event to arrive
|
||||
TEST_ASSERT_EQUAL(xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)), pdPASS);
|
||||
|
||||
state = audio_player_get_state();
|
||||
TEST_ASSERT_EQUAL(state, AUDIO_PLAYER_STATE_IDLE);
|
||||
|
||||
|
||||
|
||||
///////////////
|
||||
expected_event = AUDIO_PLAYER_CALLBACK_EVENT_SHUTDOWN;
|
||||
ret = audio_player_delete();
|
||||
TEST_ASSERT_EQUAL(ret, ESP_OK);
|
||||
|
||||
// wait for idle event to arrive
|
||||
TEST_ASSERT_EQUAL(xQueueReceive(event_queue, &event, pdMS_TO_TICKS(100)), pdPASS);
|
||||
|
||||
state = audio_player_get_state();
|
||||
TEST_ASSERT_EQUAL(state, AUDIO_PLAYER_STATE_SHUTDOWN);
|
||||
|
||||
vQueueDelete(event_queue);
|
||||
|
||||
TEST_ESP_OK(i2s_channel_disable(i2s_tx_chan));
|
||||
TEST_ESP_OK(i2s_channel_disable(i2s_rx_chan));
|
||||
TEST_ESP_OK(i2s_del_channel(i2s_tx_chan));
|
||||
TEST_ESP_OK(i2s_del_channel(i2s_rx_chan));
|
||||
|
||||
ESP_LOGI(TAG, "NOTE: a memory leak will be reported the first time this test runs.\n");
|
||||
ESP_LOGI(TAG, "esp-idf v4.4.1 and v4.4.2 both leak memory between i2s_driver_install() and i2s_driver_uninstall()\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
#
|
||||
#Component Makefile
|
||||
#
|
||||
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
||||
COMPONENT_EMBED_TXTFILES += gs-16b-1c-44100hz.mp3
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
cbb76089dc2c5749f7b470e2e70aedc44c9da519e04eb9a67d4c7ec275229e53
|
||||
3
managed_components/chmorgan__esp-libhelix-mp3/.gitmodules
vendored
Normal file
3
managed_components/chmorgan__esp-libhelix-mp3/.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "libhelix-mp3"]
|
||||
path = libhelix-mp3
|
||||
url = https://github.com/chmorgan/libhelix-mp3.git
|
||||
11
managed_components/chmorgan__esp-libhelix-mp3/CMakeLists.txt
Normal file
11
managed_components/chmorgan__esp-libhelix-mp3/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
idf_component_register(
|
||||
SRC_DIRS
|
||||
"libhelix-mp3/."
|
||||
"libhelix-mp3/real"
|
||||
INCLUDE_DIRS
|
||||
"libhelix-mp3/pub"
|
||||
PRIV_INCLUDE_DIRS
|
||||
"libhelix-mp3/real")
|
||||
|
||||
# Some of warinings, block them.
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-unused-but-set-variable)
|
||||
201
managed_components/chmorgan__esp-libhelix-mp3/LICENSE
Normal file
201
managed_components/chmorgan__esp-libhelix-mp3/LICENSE
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
3
managed_components/chmorgan__esp-libhelix-mp3/README.md
Normal file
3
managed_components/chmorgan__esp-libhelix-mp3/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# esp-libhelix-mp3
|
||||
|
||||
ESP32 (and others) component for the libhelix-mp3 mp3 decoding library.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
dependencies:
|
||||
idf:
|
||||
version: '>=4.1.0'
|
||||
description: libhelix-mp3 (mp3 decoder) component
|
||||
url: https://github.com/chmorgan/esp-libhelix-mp3
|
||||
version: 1.0.3
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
#
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# Version: RCSL 1.0/RPSL 1.0
|
||||
#
|
||||
# Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
#
|
||||
# The contents of this file, and the files included with this file, are
|
||||
# subject to the current version of the RealNetworks Public Source License
|
||||
# Version 1.0 (the "RPSL") available at
|
||||
# http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
# the file under the RealNetworks Community Source License Version 1.0
|
||||
# (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
# in which case the RCSL will apply. You may also obtain the license terms
|
||||
# directly from RealNetworks. You may not use this file except in
|
||||
# compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
# applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
# RCSL for the rights, obligations and limitations governing use of the
|
||||
# contents of the file.
|
||||
#
|
||||
# This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
# developer of the Original Code and owns the copyrights in the portions
|
||||
# it created.
|
||||
#
|
||||
# This file, and the files included with this file, is distributed and made
|
||||
# available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
# EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
# FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
#
|
||||
# Technology Compatibility Kit Test Suite(s) Location:
|
||||
# http://www.helixcommunity.org/content/tck
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
#
|
||||
|
||||
UmakefileVersion(2,1)
|
||||
|
||||
# old C++ shim layer for backwards compatibility with Player
|
||||
# if you don't want to use this, just use the public C api
|
||||
# in mp3dec.c/.h
|
||||
project.AddSources("mpadecobj.cpp")
|
||||
|
||||
project.AddSources("mp3dec.c", "mp3tabs.c")
|
||||
|
||||
if (sysinfo.arch == 'arm') and project.IsDefined('HELIX_FEATURE_USE_IPP4'):
|
||||
project.AddDefines('USE_IPP_MP3')
|
||||
|
||||
if ('USE_IPP_MP3' in project.defines):
|
||||
project.AddSources("ipp/bitstream.c", "ipp/buffers.c", "ipp/dequant.c",
|
||||
"ipp/huffman.c", "ipp/imdct.c", "ipp/subband.c")
|
||||
if('_LINUX' in project.defines):
|
||||
project.AddIncludes('%s/include/' % GetSDKPath("ipp_mp3_tools"))
|
||||
else:
|
||||
project.AddIncludes('\"%s\include\"' % GetSDKPath("ipp_mp3_tools"))
|
||||
|
||||
else:
|
||||
project.AddSources("real/bitstream.c", "real/buffers.c", "real/dct32.c",
|
||||
"real/dequant.c", "real/dqchan.c", "real/huffman.c", "real/hufftabs.c",
|
||||
"real/imdct.c", "real/scalfact.c",
|
||||
"real/stproc.c", "real/subband.c", "real/trigtabs.c")
|
||||
if ('ARM_ADS' in project.defines):
|
||||
project.AddSources("real/arm/asmpoly.s")
|
||||
elif ('_WINCE' in project.defines and '_ARM' in project.defines):
|
||||
project.AddSources("real/arm/asmpoly.s", "real/arm/asmmisc.s")
|
||||
elif (('_SYMBIAN' in project.defines or '_LINUX' in project.defines ) and
|
||||
'ARM' in project.defines):
|
||||
project.AddSources("real/arm/asmpoly_gcc.s")
|
||||
else:
|
||||
project.AddSources("real/polyphase.c")
|
||||
|
||||
project.AddIncludes("./pub")
|
||||
project.AddModuleIncludes("common/include")
|
||||
project.AddModuleIncludes("common/runtime/pub")
|
||||
|
||||
LibraryTarget("mp3codecfixpt")
|
||||
|
||||
DependTarget()
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,484 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* mp3dec.c - platform-independent top level MP3 decoder API
|
||||
**************************************************************************************/
|
||||
|
||||
#include "string.h"
|
||||
//#include "hlxclib/string.h" /* for memmove, memcpy (can replace with different implementations if desired) */
|
||||
#include "mp3common.h" /* includes mp3dec.h (public API) and internal, platform-independent API */
|
||||
|
||||
|
||||
//#define PROFILE
|
||||
#ifdef PROFILE
|
||||
#include "systime.h"
|
||||
#endif
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3InitDecoder
|
||||
*
|
||||
* Description: allocate memory for platform-specific data
|
||||
* clear all the user-accessible fields
|
||||
*
|
||||
* Inputs: none
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: handle to mp3 decoder instance, 0 if malloc fails
|
||||
**************************************************************************************/
|
||||
HMP3Decoder MP3InitDecoder(void)
|
||||
{
|
||||
MP3DecInfo *mp3DecInfo;
|
||||
|
||||
mp3DecInfo = AllocateBuffers();
|
||||
|
||||
return (HMP3Decoder)mp3DecInfo;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3FreeDecoder
|
||||
*
|
||||
* Description: free platform-specific data allocated by InitMP3Decoder
|
||||
* zero out the contents of MP3DecInfo struct
|
||||
*
|
||||
* Inputs: valid MP3 decoder instance pointer (HMP3Decoder)
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: none
|
||||
**************************************************************************************/
|
||||
void MP3FreeDecoder(HMP3Decoder hMP3Decoder)
|
||||
{
|
||||
MP3DecInfo *mp3DecInfo = (MP3DecInfo *)hMP3Decoder;
|
||||
|
||||
if (!mp3DecInfo)
|
||||
return;
|
||||
|
||||
FreeBuffers(mp3DecInfo);
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3FindSyncWord
|
||||
*
|
||||
* Description: locate the next byte-alinged sync word in the raw mp3 stream
|
||||
*
|
||||
* Inputs: buffer to search for sync word
|
||||
* max number of bytes to search in buffer
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: offset to first sync word (bytes from start of buf)
|
||||
* -1 if sync not found after searching nBytes
|
||||
**************************************************************************************/
|
||||
int MP3FindSyncWord(unsigned char *buf, int nBytes)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* find byte-aligned syncword - need 12 (MPEG 1,2) or 11 (MPEG 2.5) matching bits */
|
||||
for (i = 0; i < nBytes - 1; i++) {
|
||||
if ( (buf[i+0] & SYNCWORDH) == SYNCWORDH && (buf[i+1] & SYNCWORDL) == SYNCWORDL )
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3FindFreeSync
|
||||
*
|
||||
* Description: figure out number of bytes between adjacent sync words in "free" mode
|
||||
*
|
||||
* Inputs: buffer to search for next sync word
|
||||
* the 4-byte frame header starting at the current sync word
|
||||
* max number of bytes to search in buffer
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: offset to next sync word, minus any pad byte (i.e. nSlots)
|
||||
* -1 if sync not found after searching nBytes
|
||||
*
|
||||
* Notes: this checks that the first 22 bits of the next frame header are the
|
||||
* same as the current frame header, but it's still not foolproof
|
||||
* (could accidentally find a sequence in the bitstream which
|
||||
* appears to match but is not actually the next frame header)
|
||||
* this could be made more error-resilient by checking several frames
|
||||
* in a row and verifying that nSlots is the same in each case
|
||||
* since free mode requires CBR (see spec) we generally only call
|
||||
* this function once (first frame) then store the result (nSlots)
|
||||
* and just use it from then on
|
||||
**************************************************************************************/
|
||||
static int MP3FindFreeSync(unsigned char *buf, unsigned char firstFH[4], int nBytes)
|
||||
{
|
||||
int offset = 0;
|
||||
unsigned char *bufPtr = buf;
|
||||
|
||||
/* loop until we either:
|
||||
* - run out of nBytes (FindMP3SyncWord() returns -1)
|
||||
* - find the next valid frame header (sync word, version, layer, CRC flag, bitrate, and sample rate
|
||||
* in next header must match current header)
|
||||
*/
|
||||
while (1) {
|
||||
offset = MP3FindSyncWord(bufPtr, nBytes);
|
||||
bufPtr += offset;
|
||||
if (offset < 0) {
|
||||
return -1;
|
||||
} else if ( (bufPtr[0] == firstFH[0]) && (bufPtr[1] == firstFH[1]) && ((bufPtr[2] & 0xfc) == (firstFH[2] & 0xfc)) ) {
|
||||
/* want to return number of bytes per frame, NOT counting the padding byte, so subtract one if padFlag == 1 */
|
||||
if ((firstFH[2] >> 1) & 0x01)
|
||||
bufPtr--;
|
||||
return bufPtr - buf;
|
||||
}
|
||||
bufPtr += 3;
|
||||
nBytes -= (offset + 3);
|
||||
};
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3GetLastFrameInfo
|
||||
*
|
||||
* Description: get info about last MP3 frame decoded (number of sampled decoded,
|
||||
* sample rate, bitrate, etc.)
|
||||
*
|
||||
* Inputs: valid MP3 decoder instance pointer (HMP3Decoder)
|
||||
* pointer to MP3FrameInfo struct
|
||||
*
|
||||
* Outputs: filled-in MP3FrameInfo struct
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: call this right after calling MP3Decode
|
||||
**************************************************************************************/
|
||||
void MP3GetLastFrameInfo(HMP3Decoder hMP3Decoder, MP3FrameInfo *mp3FrameInfo)
|
||||
{
|
||||
MP3DecInfo *mp3DecInfo = (MP3DecInfo *)hMP3Decoder;
|
||||
|
||||
if (!mp3DecInfo || mp3DecInfo->layer != 3) {
|
||||
mp3FrameInfo->bitrate = 0;
|
||||
mp3FrameInfo->nChans = 0;
|
||||
mp3FrameInfo->samprate = 0;
|
||||
mp3FrameInfo->bitsPerSample = 0;
|
||||
mp3FrameInfo->outputSamps = 0;
|
||||
mp3FrameInfo->layer = 0;
|
||||
mp3FrameInfo->version = 0;
|
||||
} else {
|
||||
mp3FrameInfo->bitrate = mp3DecInfo->bitrate;
|
||||
mp3FrameInfo->nChans = mp3DecInfo->nChans;
|
||||
mp3FrameInfo->samprate = mp3DecInfo->samprate;
|
||||
mp3FrameInfo->bitsPerSample = 16;
|
||||
mp3FrameInfo->outputSamps = mp3DecInfo->nChans * (int)samplesPerFrameTab[mp3DecInfo->version][mp3DecInfo->layer - 1];
|
||||
mp3FrameInfo->layer = mp3DecInfo->layer;
|
||||
mp3FrameInfo->version = mp3DecInfo->version;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3GetNextFrameInfo
|
||||
*
|
||||
* Description: parse MP3 frame header
|
||||
*
|
||||
* Inputs: valid MP3 decoder instance pointer (HMP3Decoder)
|
||||
* pointer to MP3FrameInfo struct
|
||||
* pointer to buffer containing valid MP3 frame header (located using
|
||||
* MP3FindSyncWord(), above)
|
||||
*
|
||||
* Outputs: filled-in MP3FrameInfo struct
|
||||
*
|
||||
* Return: error code, defined in mp3dec.h (0 means no error, < 0 means error)
|
||||
**************************************************************************************/
|
||||
int MP3GetNextFrameInfo(HMP3Decoder hMP3Decoder, MP3FrameInfo *mp3FrameInfo, unsigned char *buf)
|
||||
{
|
||||
MP3DecInfo *mp3DecInfo = (MP3DecInfo *)hMP3Decoder;
|
||||
|
||||
if (!mp3DecInfo)
|
||||
return ERR_MP3_NULL_POINTER;
|
||||
|
||||
if (UnpackFrameHeader(mp3DecInfo, buf) == -1 || mp3DecInfo->layer != 3)
|
||||
return ERR_MP3_INVALID_FRAMEHEADER;
|
||||
|
||||
MP3GetLastFrameInfo(mp3DecInfo, mp3FrameInfo);
|
||||
|
||||
return ERR_MP3_NONE;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3ClearBadFrame
|
||||
*
|
||||
* Description: zero out pcm buffer if error decoding MP3 frame
|
||||
*
|
||||
* Inputs: mp3DecInfo struct with correct frame size parameters filled in
|
||||
* pointer pcm output buffer
|
||||
*
|
||||
* Outputs: zeroed out pcm buffer
|
||||
*
|
||||
* Return: none
|
||||
**************************************************************************************/
|
||||
static void MP3ClearBadFrame(MP3DecInfo *mp3DecInfo, short *outbuf)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!mp3DecInfo)
|
||||
return;
|
||||
|
||||
for (i = 0; i < mp3DecInfo->nGrans * mp3DecInfo->nGranSamps * mp3DecInfo->nChans; i++)
|
||||
outbuf[i] = 0;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MP3Decode
|
||||
*
|
||||
* Description: decode one frame of MP3 data
|
||||
*
|
||||
* Inputs: valid MP3 decoder instance pointer (HMP3Decoder)
|
||||
* double pointer to buffer of MP3 data (containing headers + mainData)
|
||||
* number of valid bytes remaining in inbuf
|
||||
* pointer to outbuf, big enough to hold one frame of decoded PCM samples
|
||||
* flag indicating whether MP3 data is normal MPEG format (useSize = 0)
|
||||
* or reformatted as "self-contained" frames (useSize = 1)
|
||||
*
|
||||
* Outputs: PCM data in outbuf, interleaved LRLRLR... if stereo
|
||||
* number of output samples = nGrans * nGranSamps * nChans
|
||||
* updated inbuf pointer, updated bytesLeft
|
||||
*
|
||||
* Return: error code, defined in mp3dec.h (0 means no error, < 0 means error)
|
||||
*
|
||||
* Notes: switching useSize on and off between frames in the same stream
|
||||
* is not supported (bit reservoir is not maintained if useSize on)
|
||||
**************************************************************************************/
|
||||
int MP3Decode(HMP3Decoder hMP3Decoder, unsigned char **inbuf, int *bytesLeft, short *outbuf, int useSize)
|
||||
{
|
||||
int offset, bitOffset, mainBits, gr, ch, fhBytes, siBytes, freeFrameBytes;
|
||||
int prevBitOffset, sfBlockBits, huffBlockBits;
|
||||
unsigned char *mainPtr;
|
||||
MP3DecInfo *mp3DecInfo = (MP3DecInfo *)hMP3Decoder;
|
||||
|
||||
#ifdef PROFILE
|
||||
long time;
|
||||
#endif
|
||||
|
||||
if (!mp3DecInfo)
|
||||
return ERR_MP3_NULL_POINTER;
|
||||
|
||||
/* unpack frame header */
|
||||
fhBytes = UnpackFrameHeader(mp3DecInfo, *inbuf);
|
||||
if (fhBytes < 0)
|
||||
return ERR_MP3_INVALID_FRAMEHEADER; /* don't clear outbuf since we don't know size (failed to parse header) */
|
||||
*inbuf += fhBytes;
|
||||
|
||||
#ifdef PROFILE
|
||||
time = systime_get();
|
||||
#endif
|
||||
/* unpack side info */
|
||||
siBytes = UnpackSideInfo(mp3DecInfo, *inbuf);
|
||||
if (siBytes < 0) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INVALID_SIDEINFO;
|
||||
}
|
||||
*inbuf += siBytes;
|
||||
*bytesLeft -= (fhBytes + siBytes);
|
||||
#ifdef PROFILE
|
||||
time = systime_get() - time;
|
||||
printf("UnpackSideInfo: %i ms\n", time);
|
||||
#endif
|
||||
|
||||
|
||||
/* if free mode, need to calculate bitrate and nSlots manually, based on frame size */
|
||||
if (mp3DecInfo->bitrate == 0 || mp3DecInfo->freeBitrateFlag) {
|
||||
if (!mp3DecInfo->freeBitrateFlag) {
|
||||
/* first time through, need to scan for next sync word and figure out frame size */
|
||||
mp3DecInfo->freeBitrateFlag = 1;
|
||||
mp3DecInfo->freeBitrateSlots = MP3FindFreeSync(*inbuf, *inbuf - fhBytes - siBytes, *bytesLeft);
|
||||
if (mp3DecInfo->freeBitrateSlots < 0) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_FREE_BITRATE_SYNC;
|
||||
}
|
||||
freeFrameBytes = mp3DecInfo->freeBitrateSlots + fhBytes + siBytes;
|
||||
mp3DecInfo->bitrate = (freeFrameBytes * mp3DecInfo->samprate * 8) / (mp3DecInfo->nGrans * mp3DecInfo->nGranSamps);
|
||||
}
|
||||
mp3DecInfo->nSlots = mp3DecInfo->freeBitrateSlots + CheckPadBit(mp3DecInfo); /* add pad byte, if required */
|
||||
}
|
||||
|
||||
/* useSize != 0 means we're getting reformatted (RTP) packets (see RFC 3119)
|
||||
* - calling function assembles "self-contained" MP3 frames by shifting any main_data
|
||||
* from the bit reservoir (in previous frames) to AFTER the sync word and side info
|
||||
* - calling function should set mainDataBegin to 0, and tell us exactly how large this
|
||||
* frame is (in bytesLeft)
|
||||
*/
|
||||
if (useSize) {
|
||||
mp3DecInfo->nSlots = *bytesLeft;
|
||||
if (mp3DecInfo->mainDataBegin != 0 || mp3DecInfo->nSlots <= 0) {
|
||||
/* error - non self-contained frame, or missing frame (size <= 0), could do loss concealment here */
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INVALID_FRAMEHEADER;
|
||||
}
|
||||
|
||||
/* can operate in-place on reformatted frames */
|
||||
mp3DecInfo->mainDataBytes = mp3DecInfo->nSlots;
|
||||
mainPtr = *inbuf;
|
||||
*inbuf += mp3DecInfo->nSlots;
|
||||
*bytesLeft -= (mp3DecInfo->nSlots);
|
||||
} else {
|
||||
/* out of data - assume last or truncated frame */
|
||||
if (mp3DecInfo->nSlots > *bytesLeft) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INDATA_UNDERFLOW;
|
||||
}
|
||||
|
||||
#ifdef PROFILE
|
||||
time = systime_get();
|
||||
#endif
|
||||
/* fill main data buffer with enough new data for this frame */
|
||||
if (mp3DecInfo->mainDataBytes >= mp3DecInfo->mainDataBegin) {
|
||||
/* adequate "old" main data available (i.e. bit reservoir) */
|
||||
memmove(mp3DecInfo->mainBuf, mp3DecInfo->mainBuf + mp3DecInfo->mainDataBytes - mp3DecInfo->mainDataBegin, mp3DecInfo->mainDataBegin);
|
||||
memcpy(mp3DecInfo->mainBuf + mp3DecInfo->mainDataBegin, *inbuf, mp3DecInfo->nSlots);
|
||||
|
||||
mp3DecInfo->mainDataBytes = mp3DecInfo->mainDataBegin + mp3DecInfo->nSlots;
|
||||
*inbuf += mp3DecInfo->nSlots;
|
||||
*bytesLeft -= (mp3DecInfo->nSlots);
|
||||
mainPtr = mp3DecInfo->mainBuf;
|
||||
} else {
|
||||
/* not enough data in bit reservoir from previous frames (perhaps starting in middle of file) */
|
||||
memcpy(mp3DecInfo->mainBuf + mp3DecInfo->mainDataBytes, *inbuf, mp3DecInfo->nSlots);
|
||||
mp3DecInfo->mainDataBytes += mp3DecInfo->nSlots;
|
||||
*inbuf += mp3DecInfo->nSlots;
|
||||
*bytesLeft -= (mp3DecInfo->nSlots);
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_MAINDATA_UNDERFLOW;
|
||||
}
|
||||
#ifdef PROFILE
|
||||
time = systime_get() - time;
|
||||
printf("data buffer filling: %i ms\n", time);
|
||||
#endif
|
||||
|
||||
}
|
||||
bitOffset = 0;
|
||||
mainBits = mp3DecInfo->mainDataBytes * 8;
|
||||
|
||||
/* decode one complete frame */
|
||||
for (gr = 0; gr < mp3DecInfo->nGrans; gr++) {
|
||||
for (ch = 0; ch < mp3DecInfo->nChans; ch++) {
|
||||
|
||||
#ifdef PROFILE
|
||||
time = systime_get();
|
||||
#endif
|
||||
/* unpack scale factors and compute size of scale factor block */
|
||||
prevBitOffset = bitOffset;
|
||||
offset = UnpackScaleFactors(mp3DecInfo, mainPtr, &bitOffset, mainBits, gr, ch);
|
||||
#ifdef PROFILE
|
||||
time = systime_get() - time;
|
||||
printf("UnpackScaleFactors: %i ms\n", time);
|
||||
#endif
|
||||
|
||||
sfBlockBits = 8*offset - prevBitOffset + bitOffset;
|
||||
huffBlockBits = mp3DecInfo->part23Length[gr][ch] - sfBlockBits;
|
||||
mainPtr += offset;
|
||||
mainBits -= sfBlockBits;
|
||||
|
||||
if (offset < 0 || mainBits < huffBlockBits) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INVALID_SCALEFACT;
|
||||
}
|
||||
|
||||
#ifdef PROFILE
|
||||
time = systime_get();
|
||||
#endif
|
||||
/* decode Huffman code words */
|
||||
prevBitOffset = bitOffset;
|
||||
offset = DecodeHuffman(mp3DecInfo, mainPtr, &bitOffset, huffBlockBits, gr, ch);
|
||||
if (offset < 0) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INVALID_HUFFCODES;
|
||||
}
|
||||
#ifdef PROFILE
|
||||
time = systime_get() - time;
|
||||
printf("Huffman: %i ms\n", time);
|
||||
#endif
|
||||
|
||||
mainPtr += offset;
|
||||
mainBits -= (8*offset - prevBitOffset + bitOffset);
|
||||
}
|
||||
|
||||
#ifdef PROFILE
|
||||
time = systime_get();
|
||||
#endif
|
||||
/* dequantize coefficients, decode stereo, reorder short blocks */
|
||||
if (Dequantize(mp3DecInfo, gr) < 0) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INVALID_DEQUANTIZE;
|
||||
}
|
||||
#ifdef PROFILE
|
||||
time = systime_get() - time;
|
||||
printf("Dequantize: %i ms\n", time);
|
||||
#endif
|
||||
|
||||
/* alias reduction, inverse MDCT, overlap-add, frequency inversion */
|
||||
for (ch = 0; ch < mp3DecInfo->nChans; ch++)
|
||||
{
|
||||
#ifdef PROFILE
|
||||
time = systime_get();
|
||||
#endif
|
||||
if (IMDCT(mp3DecInfo, gr, ch) < 0) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INVALID_IMDCT;
|
||||
}
|
||||
#ifdef PROFILE
|
||||
time = systime_get() - time;
|
||||
printf("IMDCT: %i ms\n", time);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef PROFILE
|
||||
time = systime_get();
|
||||
#endif
|
||||
/* subband transform - if stereo, interleaves pcm LRLRLR */
|
||||
if (Subband(mp3DecInfo, outbuf + gr*mp3DecInfo->nGranSamps*mp3DecInfo->nChans) < 0) {
|
||||
MP3ClearBadFrame(mp3DecInfo, outbuf);
|
||||
return ERR_MP3_INVALID_SUBBAND;
|
||||
}
|
||||
#ifdef PROFILE
|
||||
time = systime_get() - time;
|
||||
printf("Subband: %i ms\n", time);
|
||||
#endif
|
||||
|
||||
}
|
||||
return ERR_MP3_NONE;
|
||||
}
|
||||
|
|
@ -0,0 +1,181 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* mp3tabs.c - platform-independent tables for MP3 decoder (global, read-only)
|
||||
**************************************************************************************/
|
||||
|
||||
#include "mp3common.h"
|
||||
|
||||
/* indexing = [version][samplerate index]
|
||||
* sample rate of frame (Hz)
|
||||
*/
|
||||
const int samplerateTab[3][3] = {
|
||||
{44100, 48000, 32000}, /* MPEG-1 */
|
||||
{22050, 24000, 16000}, /* MPEG-2 */
|
||||
{11025, 12000, 8000}, /* MPEG-2.5 */
|
||||
};
|
||||
|
||||
/* indexing = [version][layer][bitrate index]
|
||||
* bitrate (kbps) of frame
|
||||
* - bitrate index == 0 is "free" mode (bitrate determined on the fly by
|
||||
* counting bits between successive sync words)
|
||||
*/
|
||||
const short bitrateTab[3][3][15] = {
|
||||
{
|
||||
/* MPEG-1 */
|
||||
{ 0, 32, 64, 96,128,160,192,224,256,288,320,352,384,416,448}, /* Layer 1 */
|
||||
{ 0, 32, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,384}, /* Layer 2 */
|
||||
{ 0, 32, 40, 48, 56, 64, 80, 96,112,128,160,192,224,256,320}, /* Layer 3 */
|
||||
},
|
||||
{
|
||||
/* MPEG-2 */
|
||||
{ 0, 32, 48, 56, 64, 80, 96,112,128,144,160,176,192,224,256}, /* Layer 1 */
|
||||
{ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160}, /* Layer 2 */
|
||||
{ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160}, /* Layer 3 */
|
||||
},
|
||||
{
|
||||
/* MPEG-2.5 */
|
||||
{ 0, 32, 48, 56, 64, 80, 96,112,128,144,160,176,192,224,256}, /* Layer 1 */
|
||||
{ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160}, /* Layer 2 */
|
||||
{ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160}, /* Layer 3 */
|
||||
},
|
||||
};
|
||||
|
||||
/* indexing = [version][layer]
|
||||
* number of samples in one frame (per channel)
|
||||
*/
|
||||
const short samplesPerFrameTab[3][3] = {
|
||||
{384, 1152, 1152 }, /* MPEG1 */
|
||||
{384, 1152, 576 }, /* MPEG2 */
|
||||
{384, 1152, 576 }, /* MPEG2.5 */
|
||||
};
|
||||
|
||||
/* layers 1, 2, 3 */
|
||||
const short bitsPerSlotTab[3] = {32, 8, 8};
|
||||
|
||||
/* indexing = [version][mono/stereo]
|
||||
* number of bytes in side info section of bitstream
|
||||
*/
|
||||
const short sideBytesTab[3][2] = {
|
||||
{17, 32}, /* MPEG-1: mono, stereo */
|
||||
{ 9, 17}, /* MPEG-2: mono, stereo */
|
||||
{ 9, 17}, /* MPEG-2.5: mono, stereo */
|
||||
};
|
||||
|
||||
/* indexing = [version][sampleRate][bitRate]
|
||||
* for layer3, nSlots = floor(samps/frame * bitRate / sampleRate / 8)
|
||||
* - add one pad slot if necessary
|
||||
*/
|
||||
const short slotTab[3][3][15] = {
|
||||
{
|
||||
/* MPEG-1 */
|
||||
{ 0, 104, 130, 156, 182, 208, 261, 313, 365, 417, 522, 626, 731, 835,1044 }, /* 44 kHz */
|
||||
{ 0, 96, 120, 144, 168, 192, 240, 288, 336, 384, 480, 576, 672, 768, 960 }, /* 48 kHz */
|
||||
{ 0, 144, 180, 216, 252, 288, 360, 432, 504, 576, 720, 864,1008,1152,1440 }, /* 32 kHz */
|
||||
},
|
||||
{
|
||||
/* MPEG-2 */
|
||||
{ 0, 26, 52, 78, 104, 130, 156, 182, 208, 261, 313, 365, 417, 470, 522 }, /* 22 kHz */
|
||||
{ 0, 24, 48, 72, 96, 120, 144, 168, 192, 240, 288, 336, 384, 432, 480 }, /* 24 kHz */
|
||||
{ 0, 36, 72, 108, 144, 180, 216, 252, 288, 360, 432, 504, 576, 648, 720 }, /* 16 kHz */
|
||||
},
|
||||
{
|
||||
/* MPEG-2.5 */
|
||||
{ 0, 52, 104, 156, 208, 261, 313, 365, 417, 522, 626, 731, 835, 940,1044 }, /* 11 kHz */
|
||||
{ 0, 48, 96, 144, 192, 240, 288, 336, 384, 480, 576, 672, 768, 864, 960 }, /* 12 kHz */
|
||||
{ 0, 72, 144, 216, 288, 360, 432, 504, 576, 720, 864,1008,1152,1296,1440 }, /* 8 kHz */
|
||||
},
|
||||
};
|
||||
|
||||
/* indexing = [version][sampleRate][long (.l) or short (.s) block]
|
||||
* sfBandTable[v][s].l[cb] = index of first bin in critical band cb (long blocks)
|
||||
* sfBandTable[v][s].s[cb] = index of first bin in critical band cb (short blocks)
|
||||
*/
|
||||
const SFBandTable sfBandTable[3][3] = {
|
||||
{
|
||||
/* MPEG-1 (44, 48, 32 kHz) */
|
||||
{
|
||||
{ 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90,110,134,162,196,238,288,342,418,576 },
|
||||
{ 0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84,106,136,192 }
|
||||
},
|
||||
{
|
||||
{ 0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88,106,128,156,190,230,276,330,384,576 },
|
||||
{ 0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80,100,126,192 }
|
||||
},
|
||||
{
|
||||
{ 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82,102,126,156,194,240,296,364,448,550,576 },
|
||||
{ 0, 4, 8, 12, 16, 22, 30, 42, 58, 78,104,138,180,192 }
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
/* MPEG-2 (22, 24, 16 kHz) */
|
||||
{
|
||||
{ 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,116,140,168,200,238,284,336,396,464,522,576 },
|
||||
{ 0, 4, 8, 12, 18, 24, 32, 42, 56, 74,100,132,174,192 }
|
||||
},
|
||||
{
|
||||
{ 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,114,136,162,194,232,278,332,394,464,540,576 },
|
||||
{ 0, 4, 8, 12, 18, 26, 36, 48, 62, 80,104,136,180,192 }
|
||||
},
|
||||
{
|
||||
{ 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,116,140,168,200,238,284,336,396,464,522,576 },
|
||||
{ 0, 4, 8, 12, 18, 26, 36, 48, 62, 80,104,134,174,192 }
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
/* MPEG-2.5 (11, 12, 8 kHz) */
|
||||
{
|
||||
{ 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,116,140,168,200,238,284,336,396,464,522,576 },
|
||||
{ 0, 4, 8, 12, 18, 26, 36, 48, 62, 80,104,134,174,192 }
|
||||
},
|
||||
{
|
||||
{ 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,116,140,168,200,238,284,336,396,464,522,576 },
|
||||
{ 0, 4, 8, 12, 18, 26, 36, 48, 62, 80,104,134,174,192 }
|
||||
},
|
||||
{
|
||||
{ 0, 12, 24, 36, 48, 60, 72, 88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576 },
|
||||
{ 0, 8, 16, 24, 36, 52, 72, 96,124,160,162,164,166,192 }
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* mp3common.h - implementation-independent API's, datatypes, and definitions
|
||||
**************************************************************************************/
|
||||
|
||||
#ifndef _MP3COMMON_H
|
||||
#define _MP3COMMON_H
|
||||
|
||||
#include "mp3dec.h"
|
||||
#include "statname.h" /* do name-mangling for static linking */
|
||||
|
||||
#define MAX_SCFBD 4 /* max scalefactor bands per channel */
|
||||
#define NGRANS_MPEG1 2
|
||||
#define NGRANS_MPEG2 1
|
||||
|
||||
/* 11-bit syncword if MPEG 2.5 extensions are enabled */
|
||||
/*
|
||||
#define SYNCWORDH 0xff
|
||||
#define SYNCWORDL 0xe0
|
||||
*/
|
||||
|
||||
/* 12-bit syncword if MPEG 1,2 only are supported */
|
||||
#define SYNCWORDH 0xff
|
||||
#define SYNCWORDL 0xf0
|
||||
|
||||
typedef struct _MP3DecInfo {
|
||||
/* pointers to platform-specific data structures */
|
||||
void *FrameHeaderPS;
|
||||
void *SideInfoPS;
|
||||
void *ScaleFactorInfoPS;
|
||||
void *HuffmanInfoPS;
|
||||
void *DequantInfoPS;
|
||||
void *IMDCTInfoPS;
|
||||
void *SubbandInfoPS;
|
||||
|
||||
/* buffer which must be large enough to hold largest possible main_data section */
|
||||
unsigned char mainBuf[MAINBUF_SIZE];
|
||||
|
||||
/* special info for "free" bitrate files */
|
||||
int freeBitrateFlag;
|
||||
int freeBitrateSlots;
|
||||
|
||||
/* user-accessible info */
|
||||
int bitrate;
|
||||
int nChans;
|
||||
int samprate;
|
||||
int nGrans; /* granules per frame */
|
||||
int nGranSamps; /* samples per granule */
|
||||
int nSlots;
|
||||
int layer;
|
||||
MPEGVersion version;
|
||||
|
||||
int mainDataBegin;
|
||||
int mainDataBytes;
|
||||
|
||||
int part23Length[MAX_NGRAN][MAX_NCHAN];
|
||||
|
||||
} MP3DecInfo;
|
||||
|
||||
typedef struct _SFBandTable {
|
||||
short l[23];
|
||||
short s[14];
|
||||
} SFBandTable;
|
||||
|
||||
/* decoder functions which must be implemented for each platform */
|
||||
MP3DecInfo *AllocateBuffers(void);
|
||||
void FreeBuffers(MP3DecInfo *mp3DecInfo);
|
||||
int CheckPadBit(MP3DecInfo *mp3DecInfo);
|
||||
int UnpackFrameHeader(MP3DecInfo *mp3DecInfo, unsigned char *buf);
|
||||
int UnpackSideInfo(MP3DecInfo *mp3DecInfo, unsigned char *buf);
|
||||
int DecodeHuffman(MP3DecInfo *mp3DecInfo, unsigned char *buf, int *bitOffset, int huffBlockBits, int gr, int ch);
|
||||
int Dequantize(MP3DecInfo *mp3DecInfo, int gr);
|
||||
int IMDCT(MP3DecInfo *mp3DecInfo, int gr, int ch);
|
||||
int UnpackScaleFactors(MP3DecInfo *mp3DecInfo, unsigned char *buf, int *bitOffset, int bitsAvail, int gr, int ch);
|
||||
int Subband(MP3DecInfo *mp3DecInfo, short *pcmBuf);
|
||||
|
||||
/* mp3tabs.c - global ROM tables */
|
||||
extern const int samplerateTab[3][3];
|
||||
extern const short bitrateTab[3][3][15];
|
||||
extern const short samplesPerFrameTab[3][3];
|
||||
extern const short bitsPerSlotTab[3];
|
||||
extern const short sideBytesTab[3][2];
|
||||
extern const short slotTab[3][3][15];
|
||||
extern const SFBandTable sfBandTable[3][3];
|
||||
|
||||
#endif /* _MP3COMMON_H */
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* mp3dec.h - public C API for MP3 decoder
|
||||
**************************************************************************************/
|
||||
|
||||
#ifndef _MP3DEC_H
|
||||
#define _MP3DEC_H
|
||||
|
||||
#if defined(_WIN32) && !defined(_WIN32_WCE)
|
||||
#
|
||||
#elif defined(_WIN32) && defined(_WIN32_WCE) && defined(ARM)
|
||||
#
|
||||
#elif defined(_WIN32) && defined(WINCE_EMULATOR)
|
||||
#
|
||||
#elif defined(ARM_ADS)
|
||||
#
|
||||
#elif defined(_SYMBIAN) && defined(__WINS__) /* Symbian emulator for Ix86 */
|
||||
#
|
||||
#elif defined(__GNUC__) && defined(ARM)
|
||||
#
|
||||
#elif defined(__GNUC__) && defined(__i386__)
|
||||
#
|
||||
#elif defined(_OPENWAVE_SIMULATOR) || defined(_OPENWAVE_ARMULATOR)
|
||||
#
|
||||
#else
|
||||
//#error No platform defined. See valid options in mp3dec.h
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* determining MAINBUF_SIZE:
|
||||
* max mainDataBegin = (2^9 - 1) bytes (since 9-bit offset) = 511
|
||||
* max nSlots (concatenated with mainDataBegin bytes from before) = 1440 - 9 - 4 + 1 = 1428
|
||||
* 511 + 1428 = 1939, round up to 1940 (4-byte align)
|
||||
*/
|
||||
#define MAINBUF_SIZE 1940
|
||||
|
||||
#define MAX_NGRAN 2 /* max granules */
|
||||
#define MAX_NCHAN 2 /* max channels */
|
||||
#define MAX_NSAMP 576 /* max samples per channel, per granule */
|
||||
|
||||
/* map to 0,1,2 to make table indexing easier */
|
||||
typedef enum {
|
||||
MPEG1 = 0,
|
||||
MPEG2 = 1,
|
||||
MPEG25 = 2
|
||||
} MPEGVersion;
|
||||
|
||||
typedef void *HMP3Decoder;
|
||||
|
||||
enum {
|
||||
ERR_MP3_NONE = 0,
|
||||
ERR_MP3_INDATA_UNDERFLOW = -1,
|
||||
ERR_MP3_MAINDATA_UNDERFLOW = -2,
|
||||
ERR_MP3_FREE_BITRATE_SYNC = -3,
|
||||
ERR_MP3_OUT_OF_MEMORY = -4,
|
||||
ERR_MP3_NULL_POINTER = -5,
|
||||
ERR_MP3_INVALID_FRAMEHEADER = -6,
|
||||
ERR_MP3_INVALID_SIDEINFO = -7,
|
||||
ERR_MP3_INVALID_SCALEFACT = -8,
|
||||
ERR_MP3_INVALID_HUFFCODES = -9,
|
||||
ERR_MP3_INVALID_DEQUANTIZE = -10,
|
||||
ERR_MP3_INVALID_IMDCT = -11,
|
||||
ERR_MP3_INVALID_SUBBAND = -12,
|
||||
|
||||
ERR_UNKNOWN = -9999
|
||||
};
|
||||
|
||||
typedef struct _MP3FrameInfo {
|
||||
int bitrate;
|
||||
int nChans;
|
||||
int samprate;
|
||||
int bitsPerSample;
|
||||
int outputSamps;
|
||||
int layer;
|
||||
int version;
|
||||
} MP3FrameInfo;
|
||||
|
||||
/* public API */
|
||||
HMP3Decoder MP3InitDecoder(void);
|
||||
void MP3FreeDecoder(HMP3Decoder hMP3Decoder);
|
||||
int MP3Decode(HMP3Decoder hMP3Decoder, unsigned char **inbuf, int *bytesLeft, short *outbuf, int useSize);
|
||||
|
||||
void MP3GetLastFrameInfo(HMP3Decoder hMP3Decoder, MP3FrameInfo *mp3FrameInfo);
|
||||
int MP3GetNextFrameInfo(HMP3Decoder hMP3Decoder, MP3FrameInfo *mp3FrameInfo, unsigned char *buf);
|
||||
int MP3FindSyncWord(unsigned char *buf, int nBytes);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _MP3DEC_H */
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef _MPADECOBJFIXPT_H_
|
||||
#define _MPADECOBJFIXPT_H_
|
||||
|
||||
#include "mp3dec.h" /* public C API for new MP3 decoder */
|
||||
|
||||
class CMpaDecObj
|
||||
{
|
||||
public:
|
||||
CMpaDecObj();
|
||||
~CMpaDecObj();
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Function: Init_n
|
||||
// Purpose: Initialize the mp3 decoder.
|
||||
// Parameters: pSync a pointer to a syncword
|
||||
// ulSize the size of the buffer pSync points to
|
||||
// bUseSize this tells the decoder to use the input frame
|
||||
// size on the decode instead of calculating
|
||||
// the frame size. This is necessary when
|
||||
// our formatted mp3 data (main_data_begin always
|
||||
// equal to 0).
|
||||
//
|
||||
// Returns: returns 1 on success, 0 on failure
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
int Init_n(unsigned char *pSync,
|
||||
unsigned long ulSize,
|
||||
unsigned char bUseSize=0);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Function: DecodeFrame_v
|
||||
// Purpose: Decodes one mp3 frame
|
||||
// Parameters: pSource pointer to an mp3 frame (at a syncword)
|
||||
// pulSize size of the buffer pSource points to. It will
|
||||
// contain the number of mp3 bytes decoded upon
|
||||
// return.
|
||||
// pPCM pointer to a buffer to decode into
|
||||
// pulPCMSize size of the PCM buffer. It will contain the
|
||||
// number of PCM bytes prodced upon return.
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
void DecodeFrame_v(unsigned char *pSource,
|
||||
unsigned long *pulSize,
|
||||
unsigned char *pPCM,
|
||||
unsigned long *pulPCMSize);
|
||||
|
||||
// overloaded new version that returns error code in errCode
|
||||
void DecodeFrame_v(unsigned char *pSource,
|
||||
unsigned long *pulSize,
|
||||
unsigned char *pPCM,
|
||||
unsigned long *pulPCMSize,
|
||||
int *errCode);
|
||||
|
||||
void GetPCMInfo_v(unsigned long &ulSampRate,
|
||||
int &nChannels,
|
||||
int &nBitsPerSample);
|
||||
|
||||
// return number of samples per frame, PER CHANNEL (renderer multiplies this result by nChannels)
|
||||
int GetSamplesPerFrame_n();
|
||||
|
||||
void SetTrustPackets(unsigned char bTrust) { m_bTrustPackets = bTrust; }
|
||||
|
||||
private:
|
||||
void * m_pDec; // generic void ptr
|
||||
|
||||
void * m_pDecL1; // not implemented (could use old Xing mpadecl1.cpp)
|
||||
void * m_pDecL2; // not implemented (could use old Xing mpadecl2.cpp)
|
||||
HMP3Decoder m_pDecL3;
|
||||
|
||||
MP3FrameInfo m_lastMP3FrameInfo;
|
||||
unsigned char m_bUseFrameSize;
|
||||
unsigned char m_bTrustPackets;
|
||||
};
|
||||
|
||||
#endif /* _MPADECOBJFIXPT_H_ */
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* statname.h - name mangling macros for static linking
|
||||
**************************************************************************************/
|
||||
|
||||
#ifndef _STATNAME_H
|
||||
#define _STATNAME_H
|
||||
|
||||
/* define STAT_PREFIX to a unique name for static linking
|
||||
* all the C functions and global variables will be mangled by the preprocessor
|
||||
* e.g. void FFT(int *fftbuf) becomes void cook_FFT(int *fftbuf)
|
||||
*/
|
||||
#define STAT_PREFIX xmp3
|
||||
|
||||
#define STATCC1(x,y,z) STATCC2(x,y,z)
|
||||
#define STATCC2(x,y,z) x##y##z
|
||||
|
||||
#ifdef STAT_PREFIX
|
||||
#define STATNAME(func) STATCC1(STAT_PREFIX, _, func)
|
||||
#else
|
||||
#define STATNAME(func) func
|
||||
#endif
|
||||
|
||||
/* these symbols are common to all implementations */
|
||||
#define CheckPadBit STATNAME(CheckPadBit)
|
||||
#define UnpackFrameHeader STATNAME(UnpackFrameHeader)
|
||||
#define UnpackSideInfo STATNAME(UnpackSideInfo)
|
||||
#define AllocateBuffers STATNAME(AllocateBuffers)
|
||||
#define FreeBuffers STATNAME(FreeBuffers)
|
||||
#define DecodeHuffman STATNAME(DecodeHuffman)
|
||||
#define Dequantize STATNAME(Dequantize)
|
||||
#define IMDCT STATNAME(IMDCT)
|
||||
#define UnpackScaleFactors STATNAME(UnpackScaleFactors)
|
||||
#define Subband STATNAME(Subband)
|
||||
|
||||
#define samplerateTab STATNAME(samplerateTab)
|
||||
#define bitrateTab STATNAME(bitrateTab)
|
||||
#define samplesPerFrameTab STATNAME(samplesPerFrameTab)
|
||||
#define bitsPerSlotTab STATNAME(bitsPerSlotTab)
|
||||
#define sideBytesTab STATNAME(sideBytesTab)
|
||||
#define slotTab STATNAME(slotTab)
|
||||
#define sfBandTable STATNAME(sfBandTable)
|
||||
|
||||
/* in your implementation's top-level include file (e.g. real\coder.h) you should
|
||||
* add new #define sym STATNAME(sym) lines for all the
|
||||
* additional global functions or variables which your
|
||||
* implementation uses
|
||||
*/
|
||||
|
||||
#endif /* _STATNAME_H */
|
||||
|
|
@ -0,0 +1,141 @@
|
|||
Fixed-point MP3 decoder
|
||||
Developed by RealNetworks, 2003
|
||||
===============================
|
||||
|
||||
Overview
|
||||
--------
|
||||
This module contains a high-performance MPEG layer 3 audio decoder for 32-bit fixed-point
|
||||
processors. The following is a quick summary of what is and is not supported:
|
||||
|
||||
Supported
|
||||
- layer 3
|
||||
- MPEG1, MPEG2, and MPEG2.5 (low sampling frequency extensions)
|
||||
- constant bitrate, variable bitrate, and free bitrate modes
|
||||
- mono and all stereo modes (normal stereo, joint stereo, dual-mono)
|
||||
|
||||
Not currently supported
|
||||
- layers 1 and 2
|
||||
|
||||
Highlights
|
||||
----------
|
||||
- highly optimized for ARM processors (details in docs/ subdirectory)
|
||||
- reference x86 implementation
|
||||
- C and assembly code only (C++ not required)
|
||||
- reentrant, statically linkable
|
||||
- low memory (details in docs/ subdirectory)
|
||||
- option to use Intel Integrated Performance Primitives (details below)
|
||||
|
||||
Supported platforms and toolchains
|
||||
----------------------------------
|
||||
This codec should run on any 32-bit fixed-point processor which can perform a full 32x32-bit
|
||||
multiply (providing a 64-bit result). The following processors and toolchains are supported:
|
||||
- x86, Microsoft Visual C++
|
||||
- ARM, ARM Developer Suite (ADS)
|
||||
- ARM, Microsoft Embedded Visual C++
|
||||
- ARM, GNU toolchain (gcc)
|
||||
- RISC-V, GNU toolchain (gcc)
|
||||
|
||||
ARM refers to any processor supporting ARM architecture v.4 or above. Thumb is not required.
|
||||
Typically this means an ARM7TDMI or better (including ARM9, StrongARM, XScale, etc.)
|
||||
|
||||
Generally ADS produces the fastest code. EVC 3.0 does not support inline assembly code for
|
||||
ARM targets, so calls to MULSHIFT32 (smull on ARM) are left as function calls. For the
|
||||
fastest code on targets which do not normally use ADS consider compiling with ADS,
|
||||
using the -S option to output assembly code, and feeding this assembly code to the assembler
|
||||
of your choice. This might require some syntax changes in the .S file.
|
||||
|
||||
Adding support for a new processor is fairly simple. Simply add a new block to the file
|
||||
real/assembly.h which implements the required inline assembly functions for your processor.
|
||||
Something like
|
||||
|
||||
...
|
||||
#elif defined NEW_PROCESSOR
|
||||
|
||||
/* you implement MULSHIFT32() and so forth */
|
||||
|
||||
#else
|
||||
#error Unsupported platform in assembly.h
|
||||
#endif
|
||||
|
||||
Optionally you can rewrite or add assembly language files optimized for your platform. Note
|
||||
that many of the algorithms are designed for an ARM-type processor, so performance of the
|
||||
unmodified C code might be noticeably worse on other architectures.
|
||||
|
||||
Adding support for a new toolchain should be straightforward. Use the sample projects or the
|
||||
Umakefil as a template for which source files to include.
|
||||
|
||||
Directory structure
|
||||
-------------------
|
||||
fixpt/ platform-independent code and tables, public API
|
||||
fixpt/docs algorithm notes, memory and CPU usage figures, optimization suggestions
|
||||
fixpt/ipp source code which uses IPP for decoding (see the "IPP" section below)
|
||||
fixpt/pub public header files
|
||||
fixpt/real source code for RealNetworks' MP3 decoder
|
||||
fixpt/testwrap sample code to build a command-line test application
|
||||
|
||||
Code organization
|
||||
-----------------
|
||||
fixpt/
|
||||
mpadecobj.cpp optional shim which exports API used by Helix clients (see mp3/renderer)
|
||||
mp3dec.c main decode functions, exports C-only API
|
||||
mp3tabs.c common tables used by all implementations (bitrates, frame sizes, etc.)
|
||||
fixpt/pub/
|
||||
mp3common.h defines low-level codec API which mp3dec.c calls
|
||||
mp3dec.h defines high-level codec API which applications call
|
||||
mpadecobjfixpt.h optional C++ shim API (only necessary if mpadecobj.cpp is used)
|
||||
statname.h symbols which get name-mangled by C preprocessor to allow static linking
|
||||
fixpt/ipp source code for wrapper files which link in IPP libraries
|
||||
fixpt/real full source code for RealNetworks MP3 decoder
|
||||
|
||||
To build an MP3 decoder library, you'll need to compile the top-level files and EITHER
|
||||
real/*.c OR ipp/*.c and the correct IPP library.
|
||||
|
||||
Decoder using Real code: mp3dec.c + mp3tabs.c + real/*.c + real/arm/[files].s (if ARM)
|
||||
Decoder using IPP code: mp3dec.c + mp3tabs.c + ipp/*.c + ippac*.lib
|
||||
|
||||
Although the real/ and ipp/ source code follow the same top-level API (for Dequantize(),
|
||||
Subband(), etc.) mixing and matching is not guaranteed to work. The outputs might
|
||||
be ordered differently for optimization purposes, scaled differently, etc.
|
||||
|
||||
IPP
|
||||
---
|
||||
For certain platforms Intel® has created highly-optimized object code libraries of DSP
|
||||
routines. These are called the Intel® Integrated Performance Primitives (IPP). If IPP
|
||||
libraries are available for a platform, this MP3 decoder can link them in and use them
|
||||
instead of the RealNetworks source code. To use IPP, you still need to build the top-level
|
||||
files (mp3dec.c, mp3tabs.c). You also build the files in ipp/*.c. These are just thin
|
||||
wrappers which provide the glue logic between the top-level decode functions in
|
||||
mp3dec.c and the optimized DSP primitives in the IPP libraries. IPP libraries are not
|
||||
included in this module. You must obtain them WITH A LICENSE directly from Intel.
|
||||
Further info on the latest versions of IPP (as of the date of this readme) is available
|
||||
from the URLs below
|
||||
|
||||
Intel® Integrated Performance Primitives for the
|
||||
Intel® PXA25x and PXA26x family of Processors, Version 3.0
|
||||
* http://www.intel.com/design/pca/applicationsprocessors/swsup/IPPv30.htm
|
||||
|
||||
Intel® Integrated Performance Primitives for
|
||||
Intel® Pentium® Processors and Intel® Itanium® Architectures
|
||||
* http://www.intel.com/software/products/ipp/ipp30/
|
||||
|
||||
These sites explain how to obtain IPP and the terms under which IPP libraries may be used.
|
||||
The code in this module is merely wrapper code which calls IPP functions. You are fully
|
||||
responsible for adhering to the license agreement under which you obtain the IPP
|
||||
libraries from Intel.
|
||||
|
||||
To-Do list and status
|
||||
---------------------
|
||||
faster/lower-memory dequantizer (in progress)
|
||||
tighter fixed-point scaling (in progress)
|
||||
remove all run-time math calls (/, %) (in progress)
|
||||
ARM assembly code for DCT32, IMDCT (if necessary)
|
||||
add test scripts and compliance docs
|
||||
write 32-bit C polyphase filter
|
||||
(where 64-bit MACC not available)
|
||||
|
||||
As these optimizations are completed, they will be added to the Helix codebase. Please
|
||||
continue to check there for updates. Changes will be noted in this readme.
|
||||
|
||||
readme.txt last updated 07/23/03
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
;/* ***** BEGIN LICENSE BLOCK *****
|
||||
; * Version: RCSL 1.0/RPSL 1.0
|
||||
; *
|
||||
; * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
; *
|
||||
; * The contents of this file, and the files included with this file, are
|
||||
; * subject to the current version of the RealNetworks Public Source License
|
||||
; * Version 1.0 (the "RPSL") available at
|
||||
; * http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
; * the file under the RealNetworks Community Source License Version 1.0
|
||||
; * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
; * in which case the RCSL will apply. You may also obtain the license terms
|
||||
; * directly from RealNetworks. You may not use this file except in
|
||||
; * compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
; * applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
; * RCSL for the rights, obligations and limitations governing use of the
|
||||
; * contents of the file.
|
||||
; *
|
||||
; * This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
; * developer of the Original Code and owns the copyrights in the portions
|
||||
; * it created.
|
||||
; *
|
||||
; * This file, and the files included with this file, is distributed and made
|
||||
; * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
; * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
; * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
; * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
; *
|
||||
; * Technology Compatibility Kit Test Suite(s) Location:
|
||||
; * http://www.helixcommunity.org/content/tck
|
||||
; *
|
||||
; * Contributor(s):
|
||||
; *
|
||||
; * ***** END LICENSE BLOCK ***** */
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
|
||||
; int xmp3_MULSHIFT32(int x, int y);
|
||||
|
||||
EXPORT xmp3_MULSHIFT32
|
||||
|
||||
xmp3_MULSHIFT32
|
||||
|
||||
smull r2, r0, r1, r0
|
||||
mov pc, lr
|
||||
|
||||
END
|
||||
|
|
@ -0,0 +1,415 @@
|
|||
;/* ***** BEGIN LICENSE BLOCK *****
|
||||
; * Version: RCSL 1.0/RPSL 1.0
|
||||
; *
|
||||
; * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
; *
|
||||
; * The contents of this file, and the files included with this file, are
|
||||
; * subject to the current version of the RealNetworks Public Source License
|
||||
; * Version 1.0 (the "RPSL") available at
|
||||
; * http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
; * the file under the RealNetworks Community Source License Version 1.0
|
||||
; * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
; * in which case the RCSL will apply. You may also obtain the license terms
|
||||
; * directly from RealNetworks. You may not use this file except in
|
||||
; * compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
; * applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
; * RCSL for the rights, obligations and limitations governing use of the
|
||||
; * contents of the file.
|
||||
; *
|
||||
; * This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
; * developer of the Original Code and owns the copyrights in the portions
|
||||
; * it created.
|
||||
; *
|
||||
; * This file, and the files included with this file, is distributed and made
|
||||
; * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
; * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
; * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
; * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
; *
|
||||
; * Technology Compatibility Kit Test Suite(s) Location:
|
||||
; * http://www.helixcommunity.org/content/tck
|
||||
; *
|
||||
; * Contributor(s):
|
||||
; *
|
||||
; * ***** END LICENSE BLOCK ***** */
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
|
||||
PCM RN r0
|
||||
VB1 RN r1
|
||||
COEF RN r2
|
||||
|
||||
VLO RN r0 ; must push PCM ptr to stack during inner looop
|
||||
VHI RN r3 ; temp variable
|
||||
|
||||
SUM1LL RN r4
|
||||
SUM1LH RN r5
|
||||
SUM2LL RN r6
|
||||
SUM2LH RN r7
|
||||
SUM1RL RN r8
|
||||
SUM1RH RN r9
|
||||
SUM2RL RN r10
|
||||
SUM2RH RN r11
|
||||
|
||||
CF1 RN r12
|
||||
CF2 RN r14
|
||||
|
||||
SIGN RN r12 ; used for clipping - after discarding CF1
|
||||
MAXPOS RN r14 ; used for clipping - after discarding CF2
|
||||
|
||||
I RN r12 ; overlay loop counter with CF1, SIGN
|
||||
|
||||
GBLA RNDVAL
|
||||
RNDVAL SETA (1 << ((32 - 12) + (6 - 1)))
|
||||
|
||||
; C64TOS - clip 64-bit accumulator to short (no rounding)
|
||||
; xl, xh = value (lo 32, hi 32)
|
||||
; input assumed to have 6 fraction bits
|
||||
; sign = temp variable to use for sign
|
||||
; maxPos = 0x00007fff (takes 2 instr. to generate - calculating
|
||||
; once and using repeatedly saves if you do several CTOS in a row)
|
||||
MACRO
|
||||
C64TOS $xl, $xh, $sign, $maxPos
|
||||
|
||||
mov $xl, $xl, lsr #(20+6)
|
||||
orr $xl, $xl, $xh, lsl #(12-6)
|
||||
mov $sign, $xl, ASR #31
|
||||
cmp $sign, $xl, ASR #15
|
||||
eorne $xl, $sign, $maxPos
|
||||
|
||||
MEND ; C64TOS
|
||||
|
||||
; MC0S - process 2 taps, 1 sample per channel (sample 0)
|
||||
; x = vb1 offset
|
||||
MACRO
|
||||
MC0S $x
|
||||
|
||||
ldr CF1, [COEF], #4
|
||||
ldr CF2, [COEF], #4
|
||||
ldr VLO, [VB1, #(4*($x))]
|
||||
ldr VHI, [VB1, #(4*(23 - $x))]
|
||||
|
||||
smlal SUM1LL, SUM1LH, VLO, CF1
|
||||
ldr VLO, [VB1, #(4*(32 + $x))]
|
||||
rsb CF2, CF2, #0
|
||||
smlal SUM1LL, SUM1LH, VHI, CF2
|
||||
ldr VHI, [VB1, #(4*(32 + 23 - $x))]
|
||||
|
||||
smlal SUM1RL, SUM1RH, VLO, CF1
|
||||
smlal SUM1RL, SUM1RH, VHI, CF2
|
||||
|
||||
MEND ; MC0S
|
||||
|
||||
; MC1S - process 2 taps, 1 sample per channel (sample 16)
|
||||
; x = vb1 offset
|
||||
MACRO
|
||||
MC1S $x
|
||||
|
||||
ldr CF1, [COEF], #4
|
||||
ldr VLO, [VB1, #(4*($x))]
|
||||
ldr VHI, [VB1, #(4*(32 + $x))]
|
||||
smlal SUM1LL, SUM1LH, VLO, CF1
|
||||
smlal SUM1RL, SUM1RH, VHI, CF1
|
||||
|
||||
MEND ; MC1S
|
||||
|
||||
; MC2S - process 2 taps, 2 samples per channel
|
||||
; x = vb1 offset
|
||||
MACRO
|
||||
MC2S $x
|
||||
|
||||
; load data as far as possible in advance of using it
|
||||
ldr CF1, [COEF], #4
|
||||
ldr CF2, [COEF], #4
|
||||
ldr VLO, [VB1, #(4*($x))]
|
||||
ldr VHI, [VB1, #(4*(23 - $x))]
|
||||
|
||||
smlal SUM1LL, SUM1LH, VLO, CF1
|
||||
smlal SUM2LL, SUM2LH, VLO, CF2
|
||||
rsb CF2, CF2, #0
|
||||
smlal SUM2LL, SUM2LH, VHI, CF1
|
||||
smlal SUM1LL, SUM1LH, VHI, CF2
|
||||
|
||||
ldr VHI, [VB1, #(4*(32 + 23 - $x))]
|
||||
ldr VLO, [VB1, #(4*(32 + $x))]
|
||||
|
||||
smlal SUM1RL, SUM1RH, VHI, CF2
|
||||
smlal SUM2RL, SUM2RH, VHI, CF1
|
||||
rsb CF2, CF2, #0
|
||||
smlal SUM1RL, SUM1RH, VLO, CF1
|
||||
smlal SUM2RL, SUM2RH, VLO, CF2
|
||||
|
||||
MEND ; MC2S
|
||||
|
||||
; void PolyphaseStereo(short *pcm, int *vbuf, const int *coefBase)
|
||||
|
||||
xmp3_PolyphaseStereo FUNCTION
|
||||
EXPORT xmp3_PolyphaseStereo
|
||||
|
||||
stmfd sp!, {r4-r11, r14}
|
||||
|
||||
; clear out stack space for 2 local variables (4 bytes each)
|
||||
sub sp, sp, #8
|
||||
str PCM, [sp, #4] ; sp[1] = pcm pointer
|
||||
|
||||
; special case, output sample 0
|
||||
mov SUM1LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1RL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1LH, #0
|
||||
mov SUM1RH, #0
|
||||
|
||||
MC0S 0
|
||||
MC0S 1
|
||||
MC0S 2
|
||||
MC0S 3
|
||||
MC0S 4
|
||||
MC0S 5
|
||||
MC0S 6
|
||||
MC0S 7
|
||||
|
||||
ldr PCM, [sp, #4] ; load pcm pointer
|
||||
mov MAXPOS, #0x7f00
|
||||
orr MAXPOS, MAXPOS, #0xff
|
||||
|
||||
C64TOS SUM1LL, SUM1LH, SIGN, MAXPOS
|
||||
C64TOS SUM1RL, SUM1RH, SIGN, MAXPOS
|
||||
|
||||
strh SUM1LL, [PCM, #(2*0)]
|
||||
strh SUM1RL, [PCM, #(2*1)]
|
||||
|
||||
; special case, output sample 16
|
||||
add COEF, COEF, #(4*(256-16)) ; coef = coefBase + 256 (was coefBase + 16 after MC0S block)
|
||||
add VB1, VB1, #(4*1024) ; vb1 = vbuf + 64*16
|
||||
|
||||
mov SUM1LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1RL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1LH, #0
|
||||
mov SUM1RH, #0
|
||||
|
||||
MC1S 0
|
||||
MC1S 1
|
||||
MC1S 2
|
||||
MC1S 3
|
||||
MC1S 4
|
||||
MC1S 5
|
||||
MC1S 6
|
||||
MC1S 7
|
||||
|
||||
ldr PCM, [sp, #4] ; load pcm pointer
|
||||
mov MAXPOS, #0x7f00
|
||||
orr MAXPOS, MAXPOS, #0xff
|
||||
|
||||
C64TOS SUM1LL, SUM1LH, SIGN, MAXPOS
|
||||
C64TOS SUM1RL, SUM1RH, SIGN, MAXPOS
|
||||
|
||||
strh SUM1LL, [PCM, #(2*(2*16+0))]
|
||||
strh SUM1RL, [PCM, #(2*(2*16+1))]
|
||||
|
||||
; main convolution loop: sum1L = samples 1, 2, 3, ... 15 sum2L = samples 31, 30, ... 17
|
||||
sub COEF, COEF, #(4*(264-16)) ; coef = coefBase + 16 (was coefBase + 264 after MC1S block)
|
||||
sub VB1, VB1, #(4*(1024-64)) ; vb1 = vbuf + 64 (was vbuf + 64*16 after MC1S block)
|
||||
mov I, #15 ; loop counter, count down
|
||||
add PCM, PCM, #(2*2) ; pcm+=2
|
||||
|
||||
LoopPS
|
||||
str I, [sp, #0] ; sp[0] = i (loop counter)
|
||||
str PCM, [sp, #4] ; sp[1] = pcm (pointer to pcm buffer)
|
||||
|
||||
mov SUM1LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1RL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM2LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM2RL, #RNDVAL ; load rndVal (low 32)
|
||||
|
||||
mov SUM1LH, #0
|
||||
mov SUM1RH, #0
|
||||
mov SUM2LH, #0
|
||||
mov SUM2RH, #0
|
||||
|
||||
MC2S 0
|
||||
MC2S 1
|
||||
MC2S 2
|
||||
MC2S 3
|
||||
MC2S 4
|
||||
MC2S 5
|
||||
MC2S 6
|
||||
MC2S 7
|
||||
|
||||
add VB1, VB1, #(4*64) ; vb1 += 64
|
||||
|
||||
ldr PCM, [sp, #4] ; load pcm pointer
|
||||
mov MAXPOS, #0x7f00
|
||||
orr MAXPOS, MAXPOS, #0xff
|
||||
|
||||
C64TOS SUM1LL, SUM1LH, SIGN, MAXPOS
|
||||
C64TOS SUM1RL, SUM1RH, SIGN, MAXPOS
|
||||
C64TOS SUM2LL, SUM2LH, SIGN, MAXPOS
|
||||
C64TOS SUM2RL, SUM2RH, SIGN, MAXPOS
|
||||
|
||||
ldr I, [sp, #0] ; load loop counter
|
||||
add CF2, PCM, I, lsl #3 ; CF2 = PCM + 4*i (short offset)
|
||||
strh SUM2LL, [CF2], #2 ; *(pcm + 2*2*i + 0)
|
||||
strh SUM2RL, [CF2], #2 ; *(pcm + 2*2*i + 1)
|
||||
|
||||
strh SUM1LL, [PCM], #2 ; *(pcm + 0)
|
||||
strh SUM1RL, [PCM], #2 ; *(pcm + 1)
|
||||
|
||||
subs I, I, #1
|
||||
bne LoopPS
|
||||
|
||||
; restore stack pointer
|
||||
add sp, sp, #8
|
||||
|
||||
ldmfd sp!, {r4-r11, pc}
|
||||
ENDFUNC
|
||||
|
||||
;; MONO PROCESSING
|
||||
|
||||
; MC0M - process 2 taps, 1 sample (sample 0)
|
||||
; x = vb1 offset
|
||||
MACRO
|
||||
MC0M $x
|
||||
|
||||
ldr CF1, [COEF], #4
|
||||
ldr CF2, [COEF], #4
|
||||
ldr VLO, [VB1, #(4*($x))]
|
||||
ldr VHI, [VB1, #(4*(23 - $x))]
|
||||
|
||||
rsb CF2, CF2, #0
|
||||
smlal SUM1LL, SUM1LH, VLO, CF1
|
||||
smlal SUM1LL, SUM1LH, VHI, CF2
|
||||
|
||||
MEND ; MC0M
|
||||
|
||||
; MC1M - process 2 taps, 1 sample (sample 16)
|
||||
; x = vb1 offset
|
||||
MACRO
|
||||
MC1M $x
|
||||
|
||||
ldr CF1, [COEF], #4
|
||||
ldr VLO, [VB1, #(4*($x))]
|
||||
smlal SUM1LL, SUM1LH, VLO, CF1
|
||||
|
||||
MEND ; MC1M
|
||||
|
||||
; MC2M - process 2 taps, 2 samples
|
||||
; x = vb1 offset
|
||||
MACRO
|
||||
MC2M $x
|
||||
|
||||
; load data as far as possible in advance of using it
|
||||
ldr CF1, [COEF], #4
|
||||
ldr CF2, [COEF], #4
|
||||
ldr VLO, [VB1, #(4*($x))]
|
||||
ldr VHI, [VB1, #(4*(23 - $x))]
|
||||
|
||||
smlal SUM1LL, SUM1LH, VLO, CF1
|
||||
smlal SUM2LL, SUM2LH, VLO, CF2
|
||||
rsb CF2, CF2, #0
|
||||
smlal SUM1LL, SUM1LH, VHI, CF2
|
||||
smlal SUM2LL, SUM2LH, VHI, CF1
|
||||
|
||||
MEND ; MC2M
|
||||
|
||||
; void PolyphaseMono(short *pcm, int *vbuf, const int *coefBase)
|
||||
|
||||
xmp3_PolyphaseMono FUNCTION
|
||||
EXPORT xmp3_PolyphaseMono
|
||||
|
||||
stmfd sp!, {r4-r11, r14}
|
||||
|
||||
; clear out stack space for 4 local variables (4 bytes each)
|
||||
sub sp, sp, #8
|
||||
str PCM, [sp, #4] ; sp[1] = pcm pointer
|
||||
|
||||
; special case, output sample 0
|
||||
mov SUM1LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1LH, #0
|
||||
|
||||
MC0M 0
|
||||
MC0M 1
|
||||
MC0M 2
|
||||
MC0M 3
|
||||
MC0M 4
|
||||
MC0M 5
|
||||
MC0M 6
|
||||
MC0M 7
|
||||
|
||||
ldr PCM, [sp, #4] ; load pcm pointer
|
||||
mov MAXPOS, #0x7f00
|
||||
orr MAXPOS, MAXPOS, #0xff
|
||||
|
||||
C64TOS SUM1LL, SUM1LH, SIGN, MAXPOS
|
||||
strh SUM1LL, [PCM, #(2*0)]
|
||||
|
||||
; special case, output sample 16
|
||||
add COEF, COEF, #(4*(256-16)) ; coef = coefBase + 256 (was coefBase + 16 after MC0M block)
|
||||
add VB1, VB1, #(4*1024) ; vb1 = vbuf + 64*16
|
||||
|
||||
mov SUM1LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1LH, #0
|
||||
|
||||
MC1M 0
|
||||
MC1M 1
|
||||
MC1M 2
|
||||
MC1M 3
|
||||
MC1M 4
|
||||
MC1M 5
|
||||
MC1M 6
|
||||
MC1M 7
|
||||
|
||||
ldr PCM, [sp, #4] ; load pcm pointer
|
||||
mov MAXPOS, #0x7f00
|
||||
orr MAXPOS, MAXPOS, #0xff
|
||||
|
||||
C64TOS SUM1LL, SUM1LH, SIGN, MAXPOS
|
||||
|
||||
strh SUM1LL, [PCM, #(2*16)]
|
||||
|
||||
; main convolution loop: sum1L = samples 1, 2, 3, ... 15 sum2L = samples 31, 30, ... 17
|
||||
sub COEF, COEF, #(4*(264-16)) ; coef = coefBase + 16 (was coefBase + 264 after MC1M block)
|
||||
sub VB1, VB1, #(4*(1024-64)) ; vb1 = vbuf + 64 (was vbuf + 64*16 after MC1M block)
|
||||
mov I, #15 ; loop counter, count down
|
||||
add PCM, PCM, #(2) ; pcm++
|
||||
|
||||
LoopPM
|
||||
str I, [sp, #0] ; sp[0] = i (loop counter)
|
||||
str PCM, [sp, #4] ; sp[1] = pcm (pointer to pcm buffer)
|
||||
|
||||
mov SUM1LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM2LL, #RNDVAL ; load rndVal (low 32)
|
||||
mov SUM1LH, #0
|
||||
mov SUM2LH, #0
|
||||
|
||||
MC2M 0
|
||||
MC2M 1
|
||||
MC2M 2
|
||||
MC2M 3
|
||||
MC2M 4
|
||||
MC2M 5
|
||||
MC2M 6
|
||||
MC2M 7
|
||||
|
||||
add VB1, VB1, #(4*64) ; vb1 += 64
|
||||
|
||||
ldr PCM, [sp, #4] ; load pcm pointer
|
||||
mov MAXPOS, #0x7f00
|
||||
orr MAXPOS, MAXPOS, #0xff
|
||||
|
||||
C64TOS SUM1LL, SUM1LH, SIGN, MAXPOS
|
||||
C64TOS SUM2LL, SUM2LH, SIGN, MAXPOS
|
||||
|
||||
ldr I, [sp, #0] ; load loop counter
|
||||
add CF2, PCM, I, lsl #2 ; CF2 = PCM + 2*i (short offset)
|
||||
strh SUM2LL, [CF2], #2 ; *(pcm + 2*i + 0)
|
||||
strh SUM1LL, [PCM], #2 ; *(pcm + 0) ; pcm++
|
||||
|
||||
subs I, I, #1
|
||||
bne LoopPM
|
||||
|
||||
; restore stack pointer
|
||||
add sp, sp, #8
|
||||
|
||||
ldmfd sp!, {r4-r11, pc}
|
||||
ENDFUNC
|
||||
|
||||
END
|
||||
|
|
@ -0,0 +1,605 @@
|
|||
@/* ***** BEGIN LICENSE BLOCK *****
|
||||
@ * Version: RCSL 1.0/RPSL 1.0
|
||||
@ *
|
||||
@ * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
@ *
|
||||
@ * The contents of this file, and the files included with this file, are
|
||||
@ * subject to the current version of the RealNetworks Public Source License
|
||||
@ * Version 1.0 (the "RPSL") available at
|
||||
@ * http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
@ * the file under the RealNetworks Community Source License Version 1.0
|
||||
@ * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
@ * in which case the RCSL will apply. You may also obtain the license terms
|
||||
@ * directly from RealNetworks. You may not use this file except in
|
||||
@ * compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
@ * applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
@ * RCSL for the rights, obligations and limitations governing use of the
|
||||
@ * contents of the file.
|
||||
@ *
|
||||
@ * This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
@ * developer of the Original Code and owns the copyrights in the portions
|
||||
@ * it created.
|
||||
@ *
|
||||
@ * This file, and the files included with this file, is distributed and made
|
||||
@ * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
@ * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
@ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
@ * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
@ *
|
||||
@ * Technology Compatibility Kit Test Suite(s) Location:
|
||||
@ * http://www.helixcommunity.org/content/tck
|
||||
@ *
|
||||
@ * Contributor(s):
|
||||
@ *
|
||||
@ * ***** END LICENSE BLOCK ***** */
|
||||
|
||||
# a lot faster in RAM (1-2 ms per frame)
|
||||
.data
|
||||
|
||||
.GLOBAL xmp3_PolyphaseStereo
|
||||
xmp3_PolyphaseStereo:
|
||||
STMFD r13!,{r4-r11,r14}
|
||||
SUB r13,r13,#8
|
||||
STR r0,[r13,#4]
|
||||
MOV r4,#0x2000000
|
||||
MOV r8,#0x2000000
|
||||
MOV r5,#0
|
||||
MOV r9,#0
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0]
|
||||
LDR r3,[r1,#0x5c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x80]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xdc]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#4]
|
||||
LDR r3,[r1,#0x58]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x84]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xd8]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#8]
|
||||
LDR r3,[r1,#0x54]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x88]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xd4]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0xc]
|
||||
LDR r3,[r1,#0x50]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x8c]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xd0]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x10]
|
||||
LDR r3,[r1,#0x4c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x90]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xcc]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x14]
|
||||
LDR r3,[r1,#0x48]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x94]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xc8]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x18]
|
||||
LDR r3,[r1,#0x44]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x98]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xc4]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x1c]
|
||||
LDR r3,[r1,#0x40]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r1,#0x9c]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xc0]
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r8,r9,r3,r14
|
||||
LDR r0,[r13,#4]
|
||||
MOV r14,#0x7f00
|
||||
ORR r14,r14,#0xff
|
||||
MOV r4,r4,LSR #26
|
||||
ORR r4,r4,r5,LSL #6
|
||||
MOV r12,r4,ASR #31
|
||||
CMP r12,r4,ASR #15
|
||||
EORNE r4,r12,r14
|
||||
MOV r8,r8,LSR #26
|
||||
ORR r8,r8,r9,LSL #6
|
||||
MOV r12,r8,ASR #31
|
||||
CMP r12,r8,ASR #15
|
||||
EORNE r8,r12,r14
|
||||
STRH r4,[r0,#0]
|
||||
STRH r8,[r0,#2]
|
||||
ADD r2,r2,#0x3c0
|
||||
ADD r1,r1,#0x1000
|
||||
MOV r4,#0x2000000
|
||||
MOV r8,#0x2000000
|
||||
MOV r5,#0
|
||||
MOV r9,#0
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0]
|
||||
LDR r3,[r1,#0x80]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#4]
|
||||
LDR r3,[r1,#0x84]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#8]
|
||||
LDR r3,[r1,#0x88]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0xc]
|
||||
LDR r3,[r1,#0x8c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x10]
|
||||
LDR r3,[r1,#0x90]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x14]
|
||||
LDR r3,[r1,#0x94]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x18]
|
||||
LDR r3,[r1,#0x98]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x1c]
|
||||
LDR r3,[r1,#0x9c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r8,r9,r3,r12
|
||||
LDR r0,[r13,#4]
|
||||
MOV r14,#0x7f00
|
||||
ORR r14,r14,#0xff
|
||||
MOV r4,r4,LSR #26
|
||||
ORR r4,r4,r5,LSL #6
|
||||
MOV r12,r4,ASR #31
|
||||
CMP r12,r4,ASR #15
|
||||
EORNE r4,r12,r14
|
||||
MOV r8,r8,LSR #26
|
||||
ORR r8,r8,r9,LSL #6
|
||||
MOV r12,r8,ASR #31
|
||||
CMP r12,r8,ASR #15
|
||||
EORNE r8,r12,r14
|
||||
STRH r4,[r0,#0x40]
|
||||
STRH r8,[r0,#0x42]
|
||||
SUB r2,r2,#0x3e0
|
||||
SUB r1,r1,#0xf00
|
||||
MOV r12,#0xf
|
||||
ADD r0,r0,#4
|
||||
LoopPS:
|
||||
STR r12,[r13,#0]
|
||||
STR r0,[r13,#4]
|
||||
MOV r4,#0x2000000
|
||||
MOV r8,#0x2000000
|
||||
MOV r6,#0x2000000
|
||||
MOV r10,#0x2000000
|
||||
MOV r5,#0
|
||||
MOV r9,#0
|
||||
MOV r7,#0
|
||||
MOV r11,#0
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0]
|
||||
LDR r3,[r1,#0x5c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xdc]
|
||||
LDR r0,[r1,#0x80]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#4]
|
||||
LDR r3,[r1,#0x58]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xd8]
|
||||
LDR r0,[r1,#0x84]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#8]
|
||||
LDR r3,[r1,#0x54]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xd4]
|
||||
LDR r0,[r1,#0x88]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0xc]
|
||||
LDR r3,[r1,#0x50]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xd0]
|
||||
LDR r0,[r1,#0x8c]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x10]
|
||||
LDR r3,[r1,#0x4c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xcc]
|
||||
LDR r0,[r1,#0x90]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x14]
|
||||
LDR r3,[r1,#0x48]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xc8]
|
||||
LDR r0,[r1,#0x94]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x18]
|
||||
LDR r3,[r1,#0x44]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xc4]
|
||||
LDR r0,[r1,#0x98]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x1c]
|
||||
LDR r3,[r1,#0x40]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r6,r7,r3,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r3,[r1,#0xc0]
|
||||
LDR r0,[r1,#0x9c]
|
||||
SMLAL r8,r9,r3,r14
|
||||
SMLAL r10,r11,r3,r12
|
||||
RSB r14,r14,#0
|
||||
SMLAL r8,r9,r0,r12
|
||||
SMLAL r10,r11,r0,r14
|
||||
ADD r1,r1,#0x100
|
||||
LDR r0,[r13,#4]
|
||||
MOV r14,#0x7f00
|
||||
ORR r14,r14,#0xff
|
||||
MOV r4,r4,LSR #26
|
||||
ORR r4,r4,r5,LSL #6
|
||||
MOV r12,r4,ASR #31
|
||||
CMP r12,r4,ASR #15
|
||||
EORNE r4,r12,r14
|
||||
MOV r8,r8,LSR #26
|
||||
ORR r8,r8,r9,LSL #6
|
||||
MOV r12,r8,ASR #31
|
||||
CMP r12,r8,ASR #15
|
||||
EORNE r8,r12,r14
|
||||
MOV r6,r6,LSR #26
|
||||
ORR r6,r6,r7,LSL #6
|
||||
MOV r12,r6,ASR #31
|
||||
CMP r12,r6,ASR #15
|
||||
EORNE r6,r12,r14
|
||||
MOV r10,r10,LSR #26
|
||||
ORR r10,r10,r11,LSL #6
|
||||
MOV r12,r10,ASR #31
|
||||
CMP r12,r10,ASR #15
|
||||
EORNE r10,r12,r14
|
||||
LDR r12,[r13,#0]
|
||||
ADD r14,r0,r12,LSL #3
|
||||
STRH r6,[r14],#2
|
||||
STRH r10,[r14],#2
|
||||
STRH r4,[r0],#2
|
||||
STRH r8,[r0],#2
|
||||
SUBS r12,r12,#1
|
||||
BNE LoopPS
|
||||
ADD r13,r13,#8
|
||||
LDMFD r13!,{r4-r11,pc}
|
||||
|
||||
.GLOBAL xmp3_PolyphaseMono
|
||||
xmp3_PolyphaseMono:
|
||||
STMFD r13!,{r4-r11,r14}
|
||||
SUB r13,r13,#8
|
||||
STR r0,[r13,#4]
|
||||
MOV r4,#0x2000000
|
||||
MOV r5,#0
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0]
|
||||
LDR r3,[r1,#0x5c]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#4]
|
||||
LDR r3,[r1,#0x58]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#8]
|
||||
LDR r3,[r1,#0x54]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0xc]
|
||||
LDR r3,[r1,#0x50]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x10]
|
||||
LDR r3,[r1,#0x4c]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x14]
|
||||
LDR r3,[r1,#0x48]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x18]
|
||||
LDR r3,[r1,#0x44]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x1c]
|
||||
LDR r3,[r1,#0x40]
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r4,r5,r3,r14
|
||||
LDR r0,[r13,#4]
|
||||
MOV r14,#0x7f00
|
||||
ORR r14,r14,#0xff
|
||||
MOV r4,r4,LSR #26
|
||||
ORR r4,r4,r5,LSL #6
|
||||
MOV r12,r4,ASR #31
|
||||
CMP r12,r4,ASR #15
|
||||
EORNE r4,r12,r14
|
||||
STRH r4,[r0,#0]
|
||||
ADD r2,r2,#0x3c0
|
||||
ADD r1,r1,#0x1000
|
||||
MOV r4,#0x2000000
|
||||
MOV r5,#0
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#4]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#8]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0xc]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x10]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x14]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x18]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r0,[r1,#0x1c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
LDR r0,[r13,#4]
|
||||
MOV r14,#0x7f00
|
||||
ORR r14,r14,#0xff
|
||||
MOV r4,r4,LSR #26
|
||||
ORR r4,r4,r5,LSL #6
|
||||
MOV r12,r4,ASR #31
|
||||
CMP r12,r4,ASR #15
|
||||
EORNE r4,r12,r14
|
||||
STRH r4,[r0,#0x20]
|
||||
SUB r2,r2,#0x3e0
|
||||
SUB r1,r1,#0xf00
|
||||
MOV r12,#0xf
|
||||
ADD r0,r0,#2
|
||||
LoopPM:
|
||||
STR r12,[r13,#0]
|
||||
STR r0,[r13,#4]
|
||||
MOV r4,#0x2000000
|
||||
MOV r6,#0x2000000
|
||||
MOV r5,#0
|
||||
MOV r7,#0
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0]
|
||||
LDR r3,[r1,#0x5c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#4]
|
||||
LDR r3,[r1,#0x58]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#8]
|
||||
LDR r3,[r1,#0x54]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0xc]
|
||||
LDR r3,[r1,#0x50]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x10]
|
||||
LDR r3,[r1,#0x4c]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x14]
|
||||
LDR r3,[r1,#0x48]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x18]
|
||||
LDR r3,[r1,#0x44]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
LDR r12,[r2],#4
|
||||
LDR r14,[r2],#4
|
||||
LDR r0,[r1,#0x1c]
|
||||
LDR r3,[r1,#0x40]
|
||||
SMLAL r4,r5,r0,r12
|
||||
SMLAL r6,r7,r0,r14
|
||||
RSB r14,r14,#0
|
||||
SMLAL r4,r5,r3,r14
|
||||
SMLAL r6,r7,r3,r12
|
||||
ADD r1,r1,#0x100
|
||||
LDR r0,[r13,#4]
|
||||
MOV r14,#0x7f00
|
||||
ORR r14,r14,#0xff
|
||||
MOV r4,r4,LSR #26
|
||||
ORR r4,r4,r5,LSL #6
|
||||
MOV r12,r4,ASR #31
|
||||
CMP r12,r4,ASR #15
|
||||
EORNE r4,r12,r14
|
||||
MOV r6,r6,LSR #26
|
||||
ORR r6,r6,r7,LSL #6
|
||||
MOV r12,r6,ASR #31
|
||||
CMP r12,r6,ASR #15
|
||||
EORNE r6,r12,r14
|
||||
LDR r12,[r13,#0]
|
||||
ADD r14,r0,r12,LSL #2
|
||||
STRH r6,[r14],#2
|
||||
STRH r4,[r0],#2
|
||||
SUBS r12,r12,#1
|
||||
BNE LoopPM
|
||||
ADD r13,r13,#8
|
||||
LDMFD r13!,{r4-r11,pc}
|
||||
|
||||
.END
|
||||
|
|
@ -0,0 +1,486 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* assembly.h - assembly language functions and prototypes for supported platforms
|
||||
*
|
||||
* - inline rountines with access to 64-bit multiply results
|
||||
* - x86 (_WIN32) and ARM (ARM_ADS, _WIN32_WCE) versions included
|
||||
* - some inline functions are mix of asm and C for speed
|
||||
* - some functions are in native asm files, so only the prototype is given here
|
||||
*
|
||||
* MULSHIFT32(x, y) signed multiply of two 32-bit integers (x and y), returns top 32 bits of 64-bit result
|
||||
* FASTABS(x) branchless absolute value of signed integer x
|
||||
* CLZ(x) count leading zeros in x
|
||||
* MADD64(sum, x, y) (Windows only) sum [64-bit] += x [32-bit] * y [32-bit]
|
||||
* SHL64(sum, x, y) (Windows only) 64-bit left shift using __int64
|
||||
* SAR64(sum, x, y) (Windows only) 64-bit right shift using __int64
|
||||
*/
|
||||
|
||||
#ifndef _ASSEMBLY_H
|
||||
#define _ASSEMBLY_H
|
||||
|
||||
#if (defined _WIN32 && !defined _WIN32_WCE) || (defined __WINS__ && defined _SYMBIAN) || defined(_OPENWAVE_SIMULATOR) || defined(WINCE_EMULATOR) /* Symbian emulator for Ix86 */
|
||||
|
||||
#pragma warning( disable : 4035 ) /* complains about inline asm not returning a value */
|
||||
|
||||
static __inline int MULSHIFT32(int x, int y)
|
||||
{
|
||||
__asm {
|
||||
mov eax, x
|
||||
imul y
|
||||
mov eax, edx
|
||||
}
|
||||
}
|
||||
|
||||
static __inline int FASTABS(int x)
|
||||
{
|
||||
int sign;
|
||||
|
||||
sign = x >> (sizeof(int) * 8 - 1);
|
||||
x ^= sign;
|
||||
x -= sign;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
static __inline int CLZ(int x)
|
||||
{
|
||||
int numZeros;
|
||||
|
||||
if (!x)
|
||||
return (sizeof(int) * 8);
|
||||
|
||||
numZeros = 0;
|
||||
while (!(x & 0x80000000)) {
|
||||
numZeros++;
|
||||
x <<= 1;
|
||||
}
|
||||
|
||||
return numZeros;
|
||||
}
|
||||
|
||||
/* MADD64, SHL64, SAR64:
|
||||
* write in assembly to avoid dependency on run-time lib for 64-bit shifts, muls
|
||||
* (sometimes compiler thunks to function calls instead of code generating)
|
||||
* required for Symbian emulator
|
||||
*/
|
||||
#ifdef __CW32__
|
||||
typedef long long Word64;
|
||||
#else
|
||||
typedef __int64 Word64;
|
||||
#endif
|
||||
|
||||
static __inline Word64 MADD64(Word64 sum, int x, int y)
|
||||
{
|
||||
unsigned int sumLo = ((unsigned int *)&sum)[0];
|
||||
int sumHi = ((int *)&sum)[1];
|
||||
|
||||
__asm {
|
||||
mov eax, x
|
||||
imul y
|
||||
add eax, sumLo
|
||||
adc edx, sumHi
|
||||
}
|
||||
|
||||
/* equivalent to return (sum + ((__int64)x * y)); */
|
||||
}
|
||||
|
||||
static __inline Word64 SHL64(Word64 x, int n)
|
||||
{
|
||||
unsigned int xLo = ((unsigned int *)&x)[0];
|
||||
int xHi = ((int *)&x)[1];
|
||||
unsigned char nb = (unsigned char)n;
|
||||
|
||||
if (n < 32) {
|
||||
__asm {
|
||||
mov edx, xHi
|
||||
mov eax, xLo
|
||||
mov cl, nb
|
||||
shld edx, eax, cl
|
||||
shl eax, cl
|
||||
}
|
||||
} else if (n < 64) {
|
||||
/* shl masks cl to 0x1f */
|
||||
__asm {
|
||||
mov edx, xLo
|
||||
mov cl, nb
|
||||
xor eax, eax
|
||||
shl edx, cl
|
||||
}
|
||||
} else {
|
||||
__asm {
|
||||
xor edx, edx
|
||||
xor eax, eax
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static __inline Word64 SAR64(Word64 x, int n)
|
||||
{
|
||||
unsigned int xLo = ((unsigned int *)&x)[0];
|
||||
int xHi = ((int *)&x)[1];
|
||||
unsigned char nb = (unsigned char)n;
|
||||
|
||||
if (n < 32) {
|
||||
__asm {
|
||||
mov edx, xHi
|
||||
mov eax, xLo
|
||||
mov cl, nb
|
||||
shrd eax, edx, cl
|
||||
sar edx, cl
|
||||
}
|
||||
} else if (n < 64) {
|
||||
/* sar masks cl to 0x1f */
|
||||
__asm {
|
||||
mov edx, xHi
|
||||
mov eax, xHi
|
||||
mov cl, nb
|
||||
sar edx, 31
|
||||
sar eax, cl
|
||||
}
|
||||
} else {
|
||||
__asm {
|
||||
sar xHi, 31
|
||||
mov eax, xHi
|
||||
mov edx, xHi
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#elif (defined _WIN32) && (defined _WIN32_WCE)
|
||||
|
||||
/* use asm function for now (EVC++ 3.0 does horrible job compiling __int64 version) */
|
||||
#define MULSHIFT32 xmp3_MULSHIFT32
|
||||
int MULSHIFT32(int x, int y);
|
||||
|
||||
static __inline int FASTABS(int x)
|
||||
{
|
||||
int sign;
|
||||
|
||||
sign = x >> (sizeof(int) * 8 - 1);
|
||||
x ^= sign;
|
||||
x -= sign;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
static __inline int CLZ(int x)
|
||||
{
|
||||
int numZeros;
|
||||
|
||||
if (!x)
|
||||
return (sizeof(int) * 8);
|
||||
|
||||
numZeros = 0;
|
||||
while (!(x & 0x80000000)) {
|
||||
numZeros++;
|
||||
x <<= 1;
|
||||
}
|
||||
|
||||
return numZeros;
|
||||
}
|
||||
|
||||
#elif defined ARM_ADS
|
||||
|
||||
static __inline int MULSHIFT32(int x, int y)
|
||||
{
|
||||
/* important rules for smull RdLo, RdHi, Rm, Rs:
|
||||
* RdHi and Rm can't be the same register
|
||||
* RdLo and Rm can't be the same register
|
||||
* RdHi and RdLo can't be the same register
|
||||
* Note: Rs determines early termination (leading sign bits) so if you want to specify
|
||||
* which operand is Rs, put it in the SECOND argument (y)
|
||||
* For inline assembly, x and y are not assumed to be R0, R1 so it shouldn't matter
|
||||
* which one is returned. (If this were a function call, returning y (R1) would
|
||||
* require an extra "mov r0, r1")
|
||||
*/
|
||||
int zlow;
|
||||
__asm {
|
||||
smull zlow,y,x,y
|
||||
}
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
static __inline int FASTABS(int x)
|
||||
{
|
||||
int t=0; /*Really is not necessary to initialiaze only to avoid warning*/
|
||||
|
||||
__asm {
|
||||
eor t, x, x, asr #31
|
||||
sub t, t, x, asr #31
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
static __inline int CLZ(int x)
|
||||
{
|
||||
int numZeros;
|
||||
|
||||
if (!x)
|
||||
return (sizeof(int) * 8);
|
||||
|
||||
numZeros = 0;
|
||||
while (!(x & 0x80000000)) {
|
||||
numZeros++;
|
||||
x <<= 1;
|
||||
}
|
||||
|
||||
return numZeros;
|
||||
}
|
||||
|
||||
#elif defined(__GNUC__) && defined(ARM)
|
||||
|
||||
#if defined(ARM7DI)
|
||||
|
||||
typedef long long Word64;
|
||||
|
||||
static __inline int MULSHIFT32(int x, int y) {
|
||||
return x * y;
|
||||
}
|
||||
|
||||
static __inline Word64 SAR64(Word64 x, int n) {
|
||||
return x >>= n;
|
||||
}
|
||||
|
||||
|
||||
typedef union _U64 {
|
||||
Word64 w64;
|
||||
struct {
|
||||
/* x86 = little endian */
|
||||
unsigned int lo32;
|
||||
signed int hi32;
|
||||
} r;
|
||||
} U64;
|
||||
|
||||
static __inline Word64 MADD64(Word64 sum64, int x, int y)
|
||||
{
|
||||
sum64 += (Word64)x * (Word64)y;
|
||||
|
||||
return sum64;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static __inline int MULSHIFT32(int x, int y)
|
||||
{
|
||||
/* important rules for smull RdLo, RdHi, Rm, Rs:
|
||||
* RdHi and Rm can't be the same register
|
||||
* RdLo and Rm can't be the same register
|
||||
* RdHi and RdLo can't be the same register
|
||||
* Note: Rs determines early termination (leading sign bits) so if you want to specify
|
||||
* which operand is Rs, put it in the SECOND argument (y)
|
||||
* For inline assembly, x and y are not assumed to be R0, R1 so it shouldn't matter
|
||||
* which one is returned. (If this were a function call, returning y (R1) would
|
||||
* require an extra "mov r0, r1")
|
||||
*/
|
||||
int zlow;
|
||||
__asm__ volatile ("smull %0,%1,%2,%3" : "=&r" (zlow), "=r" (y) : "r" (x), "1" (y)) ;
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static __inline int FASTABS(int x)
|
||||
{
|
||||
int t=0; /*Really is not necessary to initialiaze only to avoid warning*/
|
||||
|
||||
__asm__ volatile (
|
||||
"eor %0,%2,%2, asr #31;"
|
||||
"sub %0,%1,%2, asr #31;"
|
||||
: "=&r" (t)
|
||||
: "0" (t), "r" (x)
|
||||
);
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
static __inline int CLZ(int x)
|
||||
{
|
||||
int numZeros;
|
||||
|
||||
if (!x)
|
||||
return (sizeof(int) * 8);
|
||||
|
||||
numZeros = 0;
|
||||
while (!(x & 0x80000000)) {
|
||||
numZeros++;
|
||||
x <<= 1;
|
||||
}
|
||||
|
||||
return numZeros;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#ifdef __riscv
|
||||
|
||||
typedef long long Word64;
|
||||
|
||||
static __inline int MULSHIFT32(int x, int y)
|
||||
{
|
||||
unsigned int result = 0;
|
||||
asm volatile ("mulh %0, %1, %2" : "=r"(result): "r"(x), "r"(y));
|
||||
return result;
|
||||
}
|
||||
|
||||
static __inline int FASTABS(int x)
|
||||
{
|
||||
int sign;
|
||||
|
||||
sign = x >> (sizeof(int) * 8 - 1);
|
||||
x ^= sign;
|
||||
x -= sign;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
static __inline int CLZ(int x)
|
||||
{
|
||||
int numZeros;
|
||||
|
||||
if (!x)
|
||||
return (sizeof(int) * 8);
|
||||
|
||||
numZeros = 0;
|
||||
while (!(x & 0x80000000)) {
|
||||
numZeros++;
|
||||
x <<= 1;
|
||||
}
|
||||
|
||||
return numZeros;
|
||||
}
|
||||
|
||||
static __inline Word64 MADD64(Word64 sum, int a, int b)
|
||||
{
|
||||
unsigned int result_hi = 0;
|
||||
unsigned int result_lo = 0;
|
||||
asm volatile ("mulh %0, %1, %2" : "=r"(result_hi): "r"(a), "r"(b));
|
||||
asm volatile ("mul %0, %1, %2" : "=r"(result_lo): "r"(a), "r"(b));
|
||||
|
||||
Word64 result = result_hi;
|
||||
result <<= 32;
|
||||
result += result_lo;
|
||||
result += sum;
|
||||
return result;
|
||||
}
|
||||
|
||||
static __inline Word64 SHL64(Word64 x, int n)
|
||||
{
|
||||
return (x<<n);
|
||||
}
|
||||
|
||||
static __inline Word64 SAR64(Word64 x, int n)
|
||||
{
|
||||
return (x >> n);
|
||||
}
|
||||
|
||||
#elif defined(__xtensa__)
|
||||
|
||||
#include "xtensa/config/core-isa.h"
|
||||
|
||||
typedef long long Word64;
|
||||
|
||||
static __inline Word64 MADD64(Word64 sum64, int x, int y)
|
||||
{
|
||||
return (sum64 + ((long long)x * y));
|
||||
}
|
||||
|
||||
#if XCHAL_HAVE_MUL32_HIGH
|
||||
|
||||
static __inline int MULSHIFT32(int x, int y)
|
||||
{
|
||||
/* important rules for smull RdLo, RdHi, Rm, Rs:
|
||||
* RdHi and Rm can't be the same register
|
||||
* RdLo and Rm can't be the same register
|
||||
* RdHi and RdLo can't be the same register
|
||||
* Note: Rs determines early termination (leading sign bits) so if you want to specify
|
||||
* which operand is Rs, put it in the SECOND argument (y)
|
||||
* For inline assembly, x and y are not assumed to be R0, R1 so it shouldn't matter
|
||||
* which one is returned. (If this were a function call, returning y (R1) would
|
||||
* require an extra "mov r0, r1")
|
||||
*/
|
||||
int ret;
|
||||
asm volatile ("mulsh %0, %1, %2" : "=r" (ret) : "r" (x), "r" (y));
|
||||
return ret;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#error Missing definition of MULSHIFT32
|
||||
|
||||
#endif
|
||||
|
||||
#if XCHAL_HAVE_ABS
|
||||
|
||||
static __inline int FASTABS(int x)
|
||||
{
|
||||
int ret;
|
||||
asm volatile ("abs %0, %1" : "=r" (ret) : "r" (x));
|
||||
return ret;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#error Missing definition of FASTABS
|
||||
|
||||
#endif
|
||||
|
||||
static __inline Word64 SAR64(Word64 x, int n)
|
||||
{
|
||||
return x >> n;
|
||||
}
|
||||
|
||||
static __inline int CLZ(int x)
|
||||
{
|
||||
return __builtin_clz(x);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#error Unsupported platform in assembly.h
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* platforms */
|
||||
|
||||
#endif /* _ASSEMBLY_H */
|
||||
|
|
@ -0,0 +1,389 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* bitstream.c - bitstream unpacking, frame header parsing, side info parsing
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: SetBitstreamPointer
|
||||
*
|
||||
* Description: initialize bitstream reader
|
||||
*
|
||||
* Inputs: pointer to BitStreamInfo struct
|
||||
* number of bytes in bitstream
|
||||
* pointer to byte-aligned buffer of data to read from
|
||||
*
|
||||
* Outputs: filled bitstream info struct
|
||||
*
|
||||
* Return: none
|
||||
**************************************************************************************/
|
||||
void SetBitstreamPointer(BitStreamInfo *bsi, int nBytes, unsigned char *buf)
|
||||
{
|
||||
/* init bitstream */
|
||||
bsi->bytePtr = buf;
|
||||
bsi->iCache = 0; /* 4-byte unsigned int */
|
||||
bsi->cachedBits = 0; /* i.e. zero bits in cache */
|
||||
bsi->nBytes = nBytes;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: RefillBitstreamCache
|
||||
*
|
||||
* Description: read new data from bitstream buffer into bsi cache
|
||||
*
|
||||
* Inputs: pointer to initialized BitStreamInfo struct
|
||||
*
|
||||
* Outputs: updated bitstream info struct
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: only call when iCache is completely drained (resets bitOffset to 0)
|
||||
* always loads 4 new bytes except when bsi->nBytes < 4 (end of buffer)
|
||||
* stores data as big-endian in cache, regardless of machine endian-ness
|
||||
*
|
||||
* TODO: optimize for ARM
|
||||
* possibly add little/big-endian modes for doing 32-bit loads
|
||||
**************************************************************************************/
|
||||
static __inline void RefillBitstreamCache(BitStreamInfo *bsi)
|
||||
{
|
||||
int nBytes = bsi->nBytes;
|
||||
|
||||
/* optimize for common case, independent of machine endian-ness */
|
||||
if (nBytes >= 4) {
|
||||
bsi->iCache = (*bsi->bytePtr++) << 24;
|
||||
bsi->iCache |= (*bsi->bytePtr++) << 16;
|
||||
bsi->iCache |= (*bsi->bytePtr++) << 8;
|
||||
bsi->iCache |= (*bsi->bytePtr++);
|
||||
bsi->cachedBits = 32;
|
||||
bsi->nBytes -= 4;
|
||||
} else {
|
||||
bsi->iCache = 0;
|
||||
while (nBytes--) {
|
||||
bsi->iCache |= (*bsi->bytePtr++);
|
||||
bsi->iCache <<= 8;
|
||||
}
|
||||
bsi->iCache <<= ((3 - bsi->nBytes)*8);
|
||||
bsi->cachedBits = 8*bsi->nBytes;
|
||||
bsi->nBytes = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: GetBits
|
||||
*
|
||||
* Description: get bits from bitstream, advance bitstream pointer
|
||||
*
|
||||
* Inputs: pointer to initialized BitStreamInfo struct
|
||||
* number of bits to get from bitstream
|
||||
*
|
||||
* Outputs: updated bitstream info struct
|
||||
*
|
||||
* Return: the next nBits bits of data from bitstream buffer
|
||||
*
|
||||
* Notes: nBits must be in range [0, 31], nBits outside this range masked by 0x1f
|
||||
* for speed, does not indicate error if you overrun bit buffer
|
||||
* if nBits = 0, returns 0 (useful for scalefactor unpacking)
|
||||
*
|
||||
* TODO: optimize for ARM
|
||||
**************************************************************************************/
|
||||
unsigned int GetBits(BitStreamInfo *bsi, int nBits)
|
||||
{
|
||||
unsigned int data, lowBits;
|
||||
|
||||
nBits &= 0x1f; /* nBits mod 32 to avoid unpredictable results like >> by negative amount */
|
||||
data = bsi->iCache >> (31 - nBits); /* unsigned >> so zero-extend */
|
||||
data >>= 1; /* do as >> 31, >> 1 so that nBits = 0 works okay (returns 0) */
|
||||
bsi->iCache <<= nBits; /* left-justify cache */
|
||||
bsi->cachedBits -= nBits; /* how many bits have we drawn from the cache so far */
|
||||
|
||||
/* if we cross an int boundary, refill the cache */
|
||||
if (bsi->cachedBits < 0) {
|
||||
lowBits = -bsi->cachedBits;
|
||||
RefillBitstreamCache(bsi);
|
||||
data |= bsi->iCache >> (32 - lowBits); /* get the low-order bits */
|
||||
|
||||
bsi->cachedBits -= lowBits; /* how many bits have we drawn from the cache so far */
|
||||
bsi->iCache <<= lowBits; /* left-justify cache */
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: CalcBitsUsed
|
||||
*
|
||||
* Description: calculate how many bits have been read from bitstream
|
||||
*
|
||||
* Inputs: pointer to initialized BitStreamInfo struct
|
||||
* pointer to start of bitstream buffer
|
||||
* bit offset into first byte of startBuf (0-7)
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: number of bits read from bitstream, as offset from startBuf:startOffset
|
||||
**************************************************************************************/
|
||||
int CalcBitsUsed(BitStreamInfo *bsi, unsigned char *startBuf, int startOffset)
|
||||
{
|
||||
int bitsUsed;
|
||||
|
||||
bitsUsed = (bsi->bytePtr - startBuf) * 8;
|
||||
bitsUsed -= bsi->cachedBits;
|
||||
bitsUsed -= startOffset;
|
||||
|
||||
return bitsUsed;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: CheckPadBit
|
||||
*
|
||||
* Description: check whether padding byte is present in an MP3 frame
|
||||
*
|
||||
* Inputs: MP3DecInfo struct with valid FrameHeader struct
|
||||
* (filled by UnpackFrameHeader())
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: 1 if pad bit is set, 0 if not, -1 if null input pointer
|
||||
**************************************************************************************/
|
||||
int CheckPadBit(MP3DecInfo *mp3DecInfo)
|
||||
{
|
||||
FrameHeader *fh;
|
||||
|
||||
/* validate pointers */
|
||||
if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS)
|
||||
return -1;
|
||||
|
||||
fh = ((FrameHeader *)(mp3DecInfo->FrameHeaderPS));
|
||||
|
||||
return (fh->paddingBit ? 1 : 0);
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: UnpackFrameHeader
|
||||
*
|
||||
* Description: parse the fields of the MP3 frame header
|
||||
*
|
||||
* Inputs: buffer pointing to a complete MP3 frame header (4 bytes, plus 2 if CRC)
|
||||
*
|
||||
* Outputs: filled frame header info in the MP3DecInfo structure
|
||||
* updated platform-specific FrameHeader struct
|
||||
*
|
||||
* Return: length (in bytes) of frame header (for caller to calculate offset to
|
||||
* first byte following frame header)
|
||||
* -1 if null frameHeader or invalid header
|
||||
*
|
||||
* TODO: check for valid modes, depending on capabilities of decoder
|
||||
* test CRC on actual stream (verify no endian problems)
|
||||
**************************************************************************************/
|
||||
int UnpackFrameHeader(MP3DecInfo *mp3DecInfo, unsigned char *buf)
|
||||
{
|
||||
|
||||
int verIdx;
|
||||
FrameHeader *fh;
|
||||
|
||||
/* validate pointers and sync word */
|
||||
if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || (buf[0] & SYNCWORDH) != SYNCWORDH || (buf[1] & SYNCWORDL) != SYNCWORDL)
|
||||
return -1;
|
||||
|
||||
fh = ((FrameHeader *)(mp3DecInfo->FrameHeaderPS));
|
||||
|
||||
/* read header fields - use bitmasks instead of GetBits() for speed, since format never varies */
|
||||
verIdx = (buf[1] >> 3) & 0x03;
|
||||
fh->ver = (MPEGVersion)( verIdx == 0 ? MPEG25 : ((verIdx & 0x01) ? MPEG1 : MPEG2) );
|
||||
fh->layer = 4 - ((buf[1] >> 1) & 0x03); /* easy mapping of index to layer number, 4 = error */
|
||||
fh->crc = 1 - ((buf[1] >> 0) & 0x01);
|
||||
fh->brIdx = (buf[2] >> 4) & 0x0f;
|
||||
fh->srIdx = (buf[2] >> 2) & 0x03;
|
||||
fh->paddingBit = (buf[2] >> 1) & 0x01;
|
||||
fh->privateBit = (buf[2] >> 0) & 0x01;
|
||||
fh->sMode = (StereoMode)((buf[3] >> 6) & 0x03); /* maps to correct enum (see definition) */
|
||||
fh->modeExt = (buf[3] >> 4) & 0x03;
|
||||
fh->copyFlag = (buf[3] >> 3) & 0x01;
|
||||
fh->origFlag = (buf[3] >> 2) & 0x01;
|
||||
fh->emphasis = (buf[3] >> 0) & 0x03;
|
||||
|
||||
/* check parameters to avoid indexing tables with bad values */
|
||||
if (fh->srIdx == 3 || fh->layer == 4 || fh->brIdx == 15)
|
||||
return -1;
|
||||
|
||||
fh->sfBand = &sfBandTable[fh->ver][fh->srIdx]; /* for readability (we reference sfBandTable many times in decoder) */
|
||||
if (fh->sMode != Joint) /* just to be safe (dequant, stproc check fh->modeExt) */
|
||||
fh->modeExt = 0;
|
||||
|
||||
/* init user-accessible data */
|
||||
mp3DecInfo->nChans = (fh->sMode == Mono ? 1 : 2);
|
||||
mp3DecInfo->samprate = samplerateTab[fh->ver][fh->srIdx];
|
||||
mp3DecInfo->nGrans = (fh->ver == MPEG1 ? NGRANS_MPEG1 : NGRANS_MPEG2);
|
||||
mp3DecInfo->nGranSamps = ((int)samplesPerFrameTab[fh->ver][fh->layer - 1]) / mp3DecInfo->nGrans;
|
||||
mp3DecInfo->layer = fh->layer;
|
||||
mp3DecInfo->version = fh->ver;
|
||||
|
||||
/* get bitrate and nSlots from table, unless brIdx == 0 (free mode) in which case caller must figure it out himself
|
||||
* question - do we want to overwrite mp3DecInfo->bitrate with 0 each time if it's free mode, and
|
||||
* copy the pre-calculated actual free bitrate into it in mp3dec.c (according to the spec,
|
||||
* this shouldn't be necessary, since it should be either all frames free or none free)
|
||||
*/
|
||||
if (fh->brIdx) {
|
||||
mp3DecInfo->bitrate = ((int)bitrateTab[fh->ver][fh->layer - 1][fh->brIdx]) * 1000;
|
||||
|
||||
/* nSlots = total frame bytes (from table) - sideInfo bytes - header - CRC (if present) + pad (if present) */
|
||||
mp3DecInfo->nSlots = (int)slotTab[fh->ver][fh->srIdx][fh->brIdx] -
|
||||
(int)sideBytesTab[fh->ver][(fh->sMode == Mono ? 0 : 1)] -
|
||||
4 - (fh->crc ? 2 : 0) + (fh->paddingBit ? 1 : 0);
|
||||
}
|
||||
|
||||
/* load crc word, if enabled, and return length of frame header (in bytes) */
|
||||
if (fh->crc) {
|
||||
fh->CRCWord = ((int)buf[4] << 8 | (int)buf[5] << 0);
|
||||
return 6;
|
||||
} else {
|
||||
fh->CRCWord = 0;
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: UnpackSideInfo
|
||||
*
|
||||
* Description: parse the fields of the MP3 side info header
|
||||
*
|
||||
* Inputs: MP3DecInfo structure filled by UnpackFrameHeader()
|
||||
* buffer pointing to the MP3 side info data
|
||||
*
|
||||
* Outputs: updated mainDataBegin in MP3DecInfo struct
|
||||
* updated private (platform-specific) SideInfo struct
|
||||
*
|
||||
* Return: length (in bytes) of side info data
|
||||
* -1 if null input pointers
|
||||
**************************************************************************************/
|
||||
int UnpackSideInfo(MP3DecInfo *mp3DecInfo, unsigned char *buf)
|
||||
{
|
||||
int gr, ch, bd, nBytes;
|
||||
BitStreamInfo bitStreamInfo, *bsi;
|
||||
FrameHeader *fh;
|
||||
SideInfo *si;
|
||||
SideInfoSub *sis;
|
||||
|
||||
/* validate pointers and sync word */
|
||||
if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS)
|
||||
return -1;
|
||||
|
||||
fh = ((FrameHeader *)(mp3DecInfo->FrameHeaderPS));
|
||||
si = ((SideInfo *)(mp3DecInfo->SideInfoPS));
|
||||
|
||||
bsi = &bitStreamInfo;
|
||||
if (fh->ver == MPEG1) {
|
||||
/* MPEG 1 */
|
||||
nBytes = (fh->sMode == Mono ? SIBYTES_MPEG1_MONO : SIBYTES_MPEG1_STEREO);
|
||||
SetBitstreamPointer(bsi, nBytes, buf);
|
||||
si->mainDataBegin = GetBits(bsi, 9);
|
||||
si->privateBits = GetBits(bsi, (fh->sMode == Mono ? 5 : 3));
|
||||
|
||||
for (ch = 0; ch < mp3DecInfo->nChans; ch++)
|
||||
for (bd = 0; bd < MAX_SCFBD; bd++)
|
||||
si->scfsi[ch][bd] = GetBits(bsi, 1);
|
||||
} else {
|
||||
/* MPEG 2, MPEG 2.5 */
|
||||
nBytes = (fh->sMode == Mono ? SIBYTES_MPEG2_MONO : SIBYTES_MPEG2_STEREO);
|
||||
SetBitstreamPointer(bsi, nBytes, buf);
|
||||
si->mainDataBegin = GetBits(bsi, 8);
|
||||
si->privateBits = GetBits(bsi, (fh->sMode == Mono ? 1 : 2));
|
||||
}
|
||||
|
||||
for(gr =0; gr < mp3DecInfo->nGrans; gr++) {
|
||||
for (ch = 0; ch < mp3DecInfo->nChans; ch++) {
|
||||
sis = &si->sis[gr][ch]; /* side info subblock for this granule, channel */
|
||||
|
||||
sis->part23Length = GetBits(bsi, 12);
|
||||
sis->nBigvals = GetBits(bsi, 9);
|
||||
sis->globalGain = GetBits(bsi, 8);
|
||||
sis->sfCompress = GetBits(bsi, (fh->ver == MPEG1 ? 4 : 9));
|
||||
sis->winSwitchFlag = GetBits(bsi, 1);
|
||||
|
||||
if(sis->winSwitchFlag) {
|
||||
/* this is a start, stop, short, or mixed block */
|
||||
sis->blockType = GetBits(bsi, 2); /* 0 = normal, 1 = start, 2 = short, 3 = stop */
|
||||
sis->mixedBlock = GetBits(bsi, 1); /* 0 = not mixed, 1 = mixed */
|
||||
sis->tableSelect[0] = GetBits(bsi, 5);
|
||||
sis->tableSelect[1] = GetBits(bsi, 5);
|
||||
sis->tableSelect[2] = 0; /* unused */
|
||||
sis->subBlockGain[0] = GetBits(bsi, 3);
|
||||
sis->subBlockGain[1] = GetBits(bsi, 3);
|
||||
sis->subBlockGain[2] = GetBits(bsi, 3);
|
||||
|
||||
/* TODO - check logic */
|
||||
if (sis->blockType == 0) {
|
||||
/* this should not be allowed, according to spec */
|
||||
sis->nBigvals = 0;
|
||||
sis->part23Length = 0;
|
||||
sis->sfCompress = 0;
|
||||
} else if (sis->blockType == 2 && sis->mixedBlock == 0) {
|
||||
/* short block, not mixed */
|
||||
sis->region0Count = 8;
|
||||
} else {
|
||||
/* start, stop, or short-mixed */
|
||||
sis->region0Count = 7;
|
||||
}
|
||||
sis->region1Count = 20 - sis->region0Count;
|
||||
} else {
|
||||
/* this is a normal block */
|
||||
sis->blockType = 0;
|
||||
sis->mixedBlock = 0;
|
||||
sis->tableSelect[0] = GetBits(bsi, 5);
|
||||
sis->tableSelect[1] = GetBits(bsi, 5);
|
||||
sis->tableSelect[2] = GetBits(bsi, 5);
|
||||
sis->region0Count = GetBits(bsi, 4);
|
||||
sis->region1Count = GetBits(bsi, 3);
|
||||
}
|
||||
sis->preFlag = (fh->ver == MPEG1 ? GetBits(bsi, 1) : 0);
|
||||
sis->sfactScale = GetBits(bsi, 1);
|
||||
sis->count1TableSelect = GetBits(bsi, 1);
|
||||
}
|
||||
}
|
||||
mp3DecInfo->mainDataBegin = si->mainDataBegin; /* needed by main decode loop */
|
||||
|
||||
ASSERT(nBytes == CalcBitsUsed(bsi, buf, 0) >> 3);
|
||||
|
||||
return nBytes;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,172 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* buffers.c - allocation and freeing of internal MP3 decoder buffers
|
||||
*
|
||||
* All memory allocation for the codec is done in this file, so if you don't want
|
||||
* to use other the default system malloc() and free() for heap management this is
|
||||
* the only file you'll need to change.
|
||||
**************************************************************************************/
|
||||
|
||||
//#include "hlxclib/stdlib.h" /* for malloc, free */
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "coder.h"
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: ClearBuffer
|
||||
*
|
||||
* Description: fill buffer with 0's
|
||||
*
|
||||
* Inputs: pointer to buffer
|
||||
* number of bytes to fill with 0
|
||||
*
|
||||
* Outputs: cleared buffer
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: slow, platform-independent equivalent to memset(buf, 0, nBytes)
|
||||
**************************************************************************************/
|
||||
static void ClearBuffer(void *buf, int nBytes)
|
||||
{
|
||||
int i;
|
||||
unsigned char *cbuf = (unsigned char *)buf;
|
||||
|
||||
for (i = 0; i < nBytes; i++)
|
||||
cbuf[i] = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: AllocateBuffers
|
||||
*
|
||||
* Description: allocate all the memory needed for the MP3 decoder
|
||||
*
|
||||
* Inputs: none
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: pointer to MP3DecInfo structure (initialized with pointers to all
|
||||
* the internal buffers needed for decoding, all other members of
|
||||
* MP3DecInfo structure set to 0)
|
||||
*
|
||||
* Notes: if one or more mallocs fail, function frees any buffers already
|
||||
* allocated before returning
|
||||
**************************************************************************************/
|
||||
MP3DecInfo *AllocateBuffers(void)
|
||||
{
|
||||
MP3DecInfo *mp3DecInfo;
|
||||
FrameHeader *fh;
|
||||
SideInfo *si;
|
||||
ScaleFactorInfo *sfi;
|
||||
HuffmanInfo *hi;
|
||||
DequantInfo *di;
|
||||
IMDCTInfo *mi;
|
||||
SubbandInfo *sbi;
|
||||
|
||||
mp3DecInfo = (MP3DecInfo *)malloc(sizeof(MP3DecInfo));
|
||||
if (!mp3DecInfo)
|
||||
return 0;
|
||||
ClearBuffer(mp3DecInfo, sizeof(MP3DecInfo));
|
||||
|
||||
fh = (FrameHeader *) malloc(sizeof(FrameHeader));
|
||||
si = (SideInfo *) malloc(sizeof(SideInfo));
|
||||
sfi = (ScaleFactorInfo *) malloc(sizeof(ScaleFactorInfo));
|
||||
hi = (HuffmanInfo *) malloc(sizeof(HuffmanInfo));
|
||||
di = (DequantInfo *) malloc(sizeof(DequantInfo));
|
||||
mi = (IMDCTInfo *) malloc(sizeof(IMDCTInfo));
|
||||
sbi = (SubbandInfo *) malloc(sizeof(SubbandInfo));
|
||||
|
||||
mp3DecInfo->FrameHeaderPS = (void *)fh;
|
||||
mp3DecInfo->SideInfoPS = (void *)si;
|
||||
mp3DecInfo->ScaleFactorInfoPS = (void *)sfi;
|
||||
mp3DecInfo->HuffmanInfoPS = (void *)hi;
|
||||
mp3DecInfo->DequantInfoPS = (void *)di;
|
||||
mp3DecInfo->IMDCTInfoPS = (void *)mi;
|
||||
mp3DecInfo->SubbandInfoPS = (void *)sbi;
|
||||
|
||||
if (!fh || !si || !sfi || !hi || !di || !mi || !sbi) {
|
||||
FreeBuffers(mp3DecInfo); /* safe to call - only frees memory that was successfully allocated */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* important to do this - DSP primitives assume a bunch of state variables are 0 on first use */
|
||||
ClearBuffer(fh, sizeof(FrameHeader));
|
||||
ClearBuffer(si, sizeof(SideInfo));
|
||||
ClearBuffer(sfi, sizeof(ScaleFactorInfo));
|
||||
ClearBuffer(hi, sizeof(HuffmanInfo));
|
||||
ClearBuffer(di, sizeof(DequantInfo));
|
||||
ClearBuffer(mi, sizeof(IMDCTInfo));
|
||||
ClearBuffer(sbi, sizeof(SubbandInfo));
|
||||
|
||||
return mp3DecInfo;
|
||||
}
|
||||
|
||||
#define SAFE_FREE(x) {if (x) free(x); (x) = 0;} /* helper macro */
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: FreeBuffers
|
||||
*
|
||||
* Description: frees all the memory used by the MP3 decoder
|
||||
*
|
||||
* Inputs: pointer to initialized MP3DecInfo structure
|
||||
*
|
||||
* Outputs: none
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: safe to call even if some buffers were not allocated (uses SAFE_FREE)
|
||||
**************************************************************************************/
|
||||
void FreeBuffers(MP3DecInfo *mp3DecInfo)
|
||||
{
|
||||
if (!mp3DecInfo)
|
||||
return;
|
||||
|
||||
SAFE_FREE(mp3DecInfo->FrameHeaderPS);
|
||||
SAFE_FREE(mp3DecInfo->SideInfoPS);
|
||||
SAFE_FREE(mp3DecInfo->ScaleFactorInfoPS);
|
||||
SAFE_FREE(mp3DecInfo->HuffmanInfoPS);
|
||||
SAFE_FREE(mp3DecInfo->DequantInfoPS);
|
||||
SAFE_FREE(mp3DecInfo->IMDCTInfoPS);
|
||||
SAFE_FREE(mp3DecInfo->SubbandInfoPS);
|
||||
|
||||
SAFE_FREE(mp3DecInfo);
|
||||
}
|
||||
|
|
@ -0,0 +1,307 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* coder.h - private, implementation-specific header file
|
||||
**************************************************************************************/
|
||||
|
||||
#ifndef _CODER_H
|
||||
#define _CODER_H
|
||||
|
||||
#include "mp3common.h"
|
||||
|
||||
#if defined(ASSERT)
|
||||
#undef ASSERT
|
||||
#endif
|
||||
#if defined(_WIN32) && defined(_M_IX86) && (defined (_DEBUG) || defined (REL_ENABLE_ASSERTS))
|
||||
#define ASSERT(x) if (!(x)) __asm int 3;
|
||||
#else
|
||||
#define ASSERT(x) /* do nothing */
|
||||
#endif
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(a,b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
/* clip to range [-2^n, 2^n - 1] */
|
||||
#define CLIP_2N(y, n) { \
|
||||
int sign = (y) >> 31; \
|
||||
if (sign != (y) >> (n)) { \
|
||||
(y) = sign ^ ((1 << (n)) - 1); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define SIBYTES_MPEG1_MONO 17
|
||||
#define SIBYTES_MPEG1_STEREO 32
|
||||
#define SIBYTES_MPEG2_MONO 9
|
||||
#define SIBYTES_MPEG2_STEREO 17
|
||||
|
||||
/* number of fraction bits for pow43Tab (see comments there) */
|
||||
#define POW43_FRACBITS_LOW 22
|
||||
#define POW43_FRACBITS_HIGH 12
|
||||
|
||||
#define DQ_FRACBITS_OUT 25 /* number of fraction bits in output of dequant */
|
||||
#define IMDCT_SCALE 2 /* additional scaling (by sqrt(2)) for fast IMDCT36 */
|
||||
|
||||
#define HUFF_PAIRTABS 32
|
||||
#define BLOCK_SIZE 18
|
||||
#define NBANDS 32
|
||||
#define MAX_REORDER_SAMPS ((192-126)*3) /* largest critical band for short blocks (see sfBandTable) */
|
||||
#define VBUF_LENGTH (17 * 2 * NBANDS) /* for double-sized vbuf FIFO */
|
||||
|
||||
/* additional external symbols to name-mangle for static linking */
|
||||
#define SetBitstreamPointer STATNAME(SetBitstreamPointer)
|
||||
#define GetBits STATNAME(GetBits)
|
||||
#define CalcBitsUsed STATNAME(CalcBitsUsed)
|
||||
#define DequantChannel STATNAME(DequantChannel)
|
||||
#define MidSideProc STATNAME(MidSideProc)
|
||||
#define IntensityProcMPEG1 STATNAME(IntensityProcMPEG1)
|
||||
#define IntensityProcMPEG2 STATNAME(IntensityProcMPEG2)
|
||||
#define PolyphaseMono STATNAME(PolyphaseMono)
|
||||
#define PolyphaseStereo STATNAME(PolyphaseStereo)
|
||||
#define FDCT32 STATNAME(FDCT32)
|
||||
|
||||
#define ISFMpeg1 STATNAME(ISFMpeg1)
|
||||
#define ISFMpeg2 STATNAME(ISFMpeg2)
|
||||
#define ISFIIP STATNAME(ISFIIP)
|
||||
#define uniqueIDTab STATNAME(uniqueIDTab)
|
||||
#define coef32 STATNAME(coef32)
|
||||
#define polyCoef STATNAME(polyCoef)
|
||||
#define csa STATNAME(csa)
|
||||
#define imdctWin STATNAME(imdctWin)
|
||||
|
||||
#define huffTable STATNAME(huffTable)
|
||||
#define huffTabOffset STATNAME(huffTabOffset)
|
||||
#define huffTabLookup STATNAME(huffTabLookup)
|
||||
#define quadTable STATNAME(quadTable)
|
||||
#define quadTabOffset STATNAME(quadTabOffset)
|
||||
#define quadTabMaxBits STATNAME(quadTabMaxBits)
|
||||
|
||||
/* map these to the corresponding 2-bit values in the frame header */
|
||||
typedef enum {
|
||||
Stereo = 0x00, /* two independent channels, but L and R frames might have different # of bits */
|
||||
Joint = 0x01, /* coupled channels - layer III: mix of M-S and intensity, Layers I/II: intensity and direct coding only */
|
||||
Dual = 0x02, /* two independent channels, L and R always have exactly 1/2 the total bitrate */
|
||||
Mono = 0x03 /* one channel */
|
||||
} StereoMode;
|
||||
|
||||
typedef struct _BitStreamInfo {
|
||||
unsigned char *bytePtr;
|
||||
unsigned int iCache;
|
||||
int cachedBits;
|
||||
int nBytes;
|
||||
} BitStreamInfo;
|
||||
|
||||
typedef struct _FrameHeader {
|
||||
MPEGVersion ver; /* version ID */
|
||||
int layer; /* layer index (1, 2, or 3) */
|
||||
int crc; /* CRC flag: 0 = disabled, 1 = enabled */
|
||||
int brIdx; /* bitrate index (0 - 15) */
|
||||
int srIdx; /* sample rate index (0 - 2) */
|
||||
int paddingBit; /* padding flag: 0 = no padding, 1 = single pad byte */
|
||||
int privateBit; /* unused */
|
||||
StereoMode sMode; /* mono/stereo mode */
|
||||
int modeExt; /* used to decipher joint stereo mode */
|
||||
int copyFlag; /* copyright flag: 0 = no, 1 = yes */
|
||||
int origFlag; /* original flag: 0 = copy, 1 = original */
|
||||
int emphasis; /* deemphasis mode */
|
||||
int CRCWord; /* CRC word (16 bits, 0 if crc not enabled) */
|
||||
|
||||
const SFBandTable *sfBand;
|
||||
} FrameHeader;
|
||||
|
||||
typedef struct _SideInfoSub {
|
||||
int part23Length; /* number of bits in main data */
|
||||
int nBigvals; /* 2x this = first set of Huffman cw's (maximum amplitude can be > 1) */
|
||||
int globalGain; /* overall gain for dequantizer */
|
||||
int sfCompress; /* unpacked to figure out number of bits in scale factors */
|
||||
int winSwitchFlag; /* window switching flag */
|
||||
int blockType; /* block type */
|
||||
int mixedBlock; /* 0 = regular block (all short or long), 1 = mixed block */
|
||||
int tableSelect[3]; /* index of Huffman tables for the big values regions */
|
||||
int subBlockGain[3]; /* subblock gain offset, relative to global gain */
|
||||
int region0Count; /* 1+region0Count = num scale factor bands in first region of bigvals */
|
||||
int region1Count; /* 1+region1Count = num scale factor bands in second region of bigvals */
|
||||
int preFlag; /* for optional high frequency boost */
|
||||
int sfactScale; /* scaling of the scalefactors */
|
||||
int count1TableSelect; /* index of Huffman table for quad codewords */
|
||||
} SideInfoSub;
|
||||
|
||||
typedef struct _SideInfo {
|
||||
int mainDataBegin;
|
||||
int privateBits;
|
||||
int scfsi[MAX_NCHAN][MAX_SCFBD]; /* 4 scalefactor bands per channel */
|
||||
|
||||
SideInfoSub sis[MAX_NGRAN][MAX_NCHAN];
|
||||
} SideInfo;
|
||||
|
||||
typedef struct {
|
||||
int cbType; /* pure long = 0, pure short = 1, mixed = 2 */
|
||||
int cbEndS[3]; /* number nonzero short cb's, per subbblock */
|
||||
int cbEndSMax; /* max of cbEndS[] */
|
||||
int cbEndL; /* number nonzero long cb's */
|
||||
} CriticalBandInfo;
|
||||
|
||||
typedef struct _DequantInfo {
|
||||
int workBuf[MAX_REORDER_SAMPS]; /* workbuf for reordering short blocks */
|
||||
CriticalBandInfo cbi[MAX_NCHAN]; /* filled in dequantizer, used in joint stereo reconstruction */
|
||||
} DequantInfo;
|
||||
|
||||
typedef struct _HuffmanInfo {
|
||||
int huffDecBuf[MAX_NCHAN][MAX_NSAMP]; /* used both for decoded Huffman values and dequantized coefficients */
|
||||
int nonZeroBound[MAX_NCHAN]; /* number of coeffs in huffDecBuf[ch] which can be > 0 */
|
||||
int gb[MAX_NCHAN]; /* minimum number of guard bits in huffDecBuf[ch] */
|
||||
} HuffmanInfo;
|
||||
|
||||
typedef enum _HuffTabType {
|
||||
noBits,
|
||||
oneShot,
|
||||
loopNoLinbits,
|
||||
loopLinbits,
|
||||
quadA,
|
||||
quadB,
|
||||
invalidTab
|
||||
} HuffTabType;
|
||||
|
||||
typedef struct _HuffTabLookup {
|
||||
int linBits;
|
||||
HuffTabType tabType;
|
||||
} HuffTabLookup;
|
||||
|
||||
typedef struct _IMDCTInfo {
|
||||
int outBuf[MAX_NCHAN][BLOCK_SIZE][NBANDS]; /* output of IMDCT */
|
||||
int overBuf[MAX_NCHAN][MAX_NSAMP / 2]; /* overlap-add buffer (by symmetry, only need 1/2 size) */
|
||||
int numPrevIMDCT[MAX_NCHAN]; /* how many IMDCT's calculated in this channel on prev. granule */
|
||||
int prevType[MAX_NCHAN];
|
||||
int prevWinSwitch[MAX_NCHAN];
|
||||
int gb[MAX_NCHAN];
|
||||
} IMDCTInfo;
|
||||
|
||||
typedef struct _BlockCount {
|
||||
int nBlocksLong;
|
||||
int nBlocksTotal;
|
||||
int nBlocksPrev;
|
||||
int prevType;
|
||||
int prevWinSwitch;
|
||||
int currWinSwitch;
|
||||
int gbIn;
|
||||
int gbOut;
|
||||
} BlockCount;
|
||||
|
||||
/* max bits in scalefactors = 5, so use char's to save space */
|
||||
typedef struct _ScaleFactorInfoSub {
|
||||
char l[23]; /* [band] */
|
||||
char s[13][3]; /* [band][window] */
|
||||
} ScaleFactorInfoSub;
|
||||
|
||||
/* used in MPEG 2, 2.5 intensity (joint) stereo only */
|
||||
typedef struct _ScaleFactorJS {
|
||||
int intensityScale;
|
||||
int slen[4];
|
||||
int nr[4];
|
||||
} ScaleFactorJS;
|
||||
|
||||
typedef struct _ScaleFactorInfo {
|
||||
ScaleFactorInfoSub sfis[MAX_NGRAN][MAX_NCHAN];
|
||||
ScaleFactorJS sfjs;
|
||||
} ScaleFactorInfo;
|
||||
|
||||
/* NOTE - could get by with smaller vbuf if memory is more important than speed
|
||||
* (in Subband, instead of replicating each block in FDCT32 you would do a memmove on the
|
||||
* last 15 blocks to shift them down one, a hardware style FIFO)
|
||||
*/
|
||||
typedef struct _SubbandInfo {
|
||||
int vbuf[MAX_NCHAN * VBUF_LENGTH]; /* vbuf for fast DCT-based synthesis PQMF - double size for speed (no modulo indexing) */
|
||||
int vindex; /* internal index for tracking position in vbuf */
|
||||
} SubbandInfo;
|
||||
|
||||
/* bitstream.c */
|
||||
void SetBitstreamPointer(BitStreamInfo *bsi, int nBytes, unsigned char *buf);
|
||||
unsigned int GetBits(BitStreamInfo *bsi, int nBits);
|
||||
int CalcBitsUsed(BitStreamInfo *bsi, unsigned char *startBuf, int startOffset);
|
||||
|
||||
/* dequant.c, dqchan.c, stproc.c */
|
||||
int DequantChannel(int *sampleBuf, int *workBuf, int *nonZeroBound, FrameHeader *fh, SideInfoSub *sis,
|
||||
ScaleFactorInfoSub *sfis, CriticalBandInfo *cbi);
|
||||
void MidSideProc(int x[MAX_NCHAN][MAX_NSAMP], int nSamps, int mOut[2]);
|
||||
void IntensityProcMPEG1(int x[MAX_NCHAN][MAX_NSAMP], int nSamps, FrameHeader *fh, ScaleFactorInfoSub *sfis,
|
||||
CriticalBandInfo *cbi, int midSideFlag, int mixFlag, int mOut[2]);
|
||||
void IntensityProcMPEG2(int x[MAX_NCHAN][MAX_NSAMP], int nSamps, FrameHeader *fh, ScaleFactorInfoSub *sfis,
|
||||
CriticalBandInfo *cbi, ScaleFactorJS *sfjs, int midSideFlag, int mixFlag, int mOut[2]);
|
||||
|
||||
/* dct32.c */
|
||||
// about 1 ms faster in RAM, but very large
|
||||
void FDCT32(int *x, int *d, int offset, int oddBlock, int gb);// __attribute__ ((section (".data")));
|
||||
|
||||
/* hufftabs.c */
|
||||
extern const HuffTabLookup huffTabLookup[HUFF_PAIRTABS];
|
||||
extern const int huffTabOffset[HUFF_PAIRTABS];
|
||||
extern const unsigned short huffTable[];
|
||||
extern const unsigned char quadTable[64+16];
|
||||
extern const int quadTabOffset[2];
|
||||
extern const int quadTabMaxBits[2];
|
||||
|
||||
/* polyphase.c (or asmpoly.s)
|
||||
* some platforms require a C++ compile of all source files,
|
||||
* so if we're compiling C as C++ and using native assembly
|
||||
* for these functions we need to prevent C++ name mangling.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void PolyphaseMono(short *pcm, int *vbuf, const int *coefBase);
|
||||
void PolyphaseStereo(short *pcm, int *vbuf, const int *coefBase);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/* trigtabs.c */
|
||||
extern const int imdctWin[4][36];
|
||||
extern const int ISFMpeg1[2][7];
|
||||
extern const int ISFMpeg2[2][2][16];
|
||||
extern const int ISFIIP[2][2];
|
||||
extern const int csa[8][2];
|
||||
extern const int coef32[31];
|
||||
extern const int polyCoef[264];
|
||||
|
||||
#endif /* _CODER_H */
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* dct32.c - optimized implementations of 32-point DCT for matrixing stage of
|
||||
* polyphase filter
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
#define COS0_0 0x4013c251 /* Q31 */
|
||||
#define COS0_1 0x40b345bd /* Q31 */
|
||||
#define COS0_2 0x41fa2d6d /* Q31 */
|
||||
#define COS0_3 0x43f93421 /* Q31 */
|
||||
#define COS0_4 0x46cc1bc4 /* Q31 */
|
||||
#define COS0_5 0x4a9d9cf0 /* Q31 */
|
||||
#define COS0_6 0x4fae3711 /* Q31 */
|
||||
#define COS0_7 0x56601ea7 /* Q31 */
|
||||
#define COS0_8 0x5f4cf6eb /* Q31 */
|
||||
#define COS0_9 0x6b6fcf26 /* Q31 */
|
||||
#define COS0_10 0x7c7d1db3 /* Q31 */
|
||||
#define COS0_11 0x4ad81a97 /* Q30 */
|
||||
#define COS0_12 0x5efc8d96 /* Q30 */
|
||||
#define COS0_13 0x41d95790 /* Q29 */
|
||||
#define COS0_14 0x6d0b20cf /* Q29 */
|
||||
#define COS0_15 0x518522fb /* Q27 */
|
||||
|
||||
#define COS1_0 0x404f4672 /* Q31 */
|
||||
#define COS1_1 0x42e13c10 /* Q31 */
|
||||
#define COS1_2 0x48919f44 /* Q31 */
|
||||
#define COS1_3 0x52cb0e63 /* Q31 */
|
||||
#define COS1_4 0x64e2402e /* Q31 */
|
||||
#define COS1_5 0x43e224a9 /* Q30 */
|
||||
#define COS1_6 0x6e3c92c1 /* Q30 */
|
||||
#define COS1_7 0x519e4e04 /* Q28 */
|
||||
|
||||
#define COS2_0 0x4140fb46 /* Q31 */
|
||||
#define COS2_1 0x4cf8de88 /* Q31 */
|
||||
#define COS2_2 0x73326bbf /* Q31 */
|
||||
#define COS2_3 0x52036742 /* Q29 */
|
||||
|
||||
#define COS3_0 0x4545e9ef /* Q31 */
|
||||
#define COS3_1 0x539eba45 /* Q30 */
|
||||
|
||||
#define COS4_0 0x5a82799a /* Q31 */
|
||||
|
||||
// faster in ROM
|
||||
static const int dcttab[48] = {
|
||||
/* first pass */
|
||||
COS0_0, COS0_15, COS1_0, /* 31, 27, 31 */
|
||||
COS0_1, COS0_14, COS1_1, /* 31, 29, 31 */
|
||||
COS0_2, COS0_13, COS1_2, /* 31, 29, 31 */
|
||||
COS0_3, COS0_12, COS1_3, /* 31, 30, 31 */
|
||||
COS0_4, COS0_11, COS1_4, /* 31, 30, 31 */
|
||||
COS0_5, COS0_10, COS1_5, /* 31, 31, 30 */
|
||||
COS0_6, COS0_9, COS1_6, /* 31, 31, 30 */
|
||||
COS0_7, COS0_8, COS1_7, /* 31, 31, 28 */
|
||||
/* second pass */
|
||||
COS2_0, COS2_3, COS3_0, /* 31, 29, 31 */
|
||||
COS2_1, COS2_2, COS3_1, /* 31, 31, 30 */
|
||||
-COS2_0, -COS2_3, COS3_0, /* 31, 29, 31 */
|
||||
-COS2_1, -COS2_2, COS3_1, /* 31, 31, 30 */
|
||||
COS2_0, COS2_3, COS3_0, /* 31, 29, 31 */
|
||||
COS2_1, COS2_2, COS3_1, /* 31, 31, 30 */
|
||||
-COS2_0, -COS2_3, COS3_0, /* 31, 29, 31 */
|
||||
-COS2_1, -COS2_2, COS3_1, /* 31, 31, 30 */
|
||||
};
|
||||
|
||||
#define D32FP(i, s0, s1, s2) { \
|
||||
a0 = buf[i]; a3 = buf[31-i]; \
|
||||
a1 = buf[15-i]; a2 = buf[16+i]; \
|
||||
b0 = a0 + a3; b3 = MULSHIFT32(*cptr++, a0 - a3) << (s0); \
|
||||
b1 = a1 + a2; b2 = MULSHIFT32(*cptr++, a1 - a2) << (s1); \
|
||||
buf[i] = b0 + b1; buf[15-i] = MULSHIFT32(*cptr, b0 - b1) << (s2); \
|
||||
buf[16+i] = b2 + b3; buf[31-i] = MULSHIFT32(*cptr++, b3 - b2) << (s2); \
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: FDCT32
|
||||
*
|
||||
* Description: Ken's highly-optimized 32-point DCT (radix-4 + radix-8)
|
||||
*
|
||||
* Inputs: input buffer, length = 32 samples
|
||||
* require at least 6 guard bits in input vector x to avoid possibility
|
||||
* of overflow in internal calculations (see bbtest_imdct test app)
|
||||
* buffer offset and oddblock flag for polyphase filter input buffer
|
||||
* number of guard bits in input
|
||||
*
|
||||
* Outputs: output buffer, data copied and interleaved for polyphase filter
|
||||
* no guarantees about number of guard bits in output
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: number of muls = 4*8 + 12*4 = 80
|
||||
* final stage of DCT is hardcoded to shuffle data into the proper order
|
||||
* for the polyphase filterbank
|
||||
* fully unrolled stage 1, for max precision (scale the 1/cos() factors
|
||||
* differently, depending on magnitude)
|
||||
* guard bit analysis verified by exhaustive testing of all 2^32
|
||||
* combinations of max pos/max neg values in x[]
|
||||
*
|
||||
* TODO: code organization and optimization for ARM
|
||||
* possibly interleave stereo (cut # of coef loads in half - may not have
|
||||
* enough registers)
|
||||
**************************************************************************************/
|
||||
// about 1ms faster in RAM
|
||||
void FDCT32(int *buf, int *dest, int offset, int oddBlock, int gb)
|
||||
{
|
||||
int i, s, tmp, es;
|
||||
const int *cptr = dcttab;
|
||||
int a0, a1, a2, a3, a4, a5, a6, a7;
|
||||
int b0, b1, b2, b3, b4, b5, b6, b7;
|
||||
int *d;
|
||||
|
||||
/* scaling - ensure at least 6 guard bits for DCT
|
||||
* (in practice this is already true 99% of time, so this code is
|
||||
* almost never triggered)
|
||||
*/
|
||||
es = 0;
|
||||
if (gb < 6) {
|
||||
es = 6 - gb;
|
||||
for (i = 0; i < 32; i++)
|
||||
buf[i] >>= es;
|
||||
}
|
||||
|
||||
/* first pass */
|
||||
D32FP(0, 1, 5, 1);
|
||||
D32FP(1, 1, 3, 1);
|
||||
D32FP(2, 1, 3, 1);
|
||||
D32FP(3, 1, 2, 1);
|
||||
D32FP(4, 1, 2, 1);
|
||||
D32FP(5, 1, 1, 2);
|
||||
D32FP(6, 1, 1, 2);
|
||||
D32FP(7, 1, 1, 4);
|
||||
|
||||
/* second pass */
|
||||
for (i = 4; i > 0; i--) {
|
||||
a0 = buf[0]; a7 = buf[7]; a3 = buf[3]; a4 = buf[4];
|
||||
b0 = a0 + a7; b7 = MULSHIFT32(*cptr++, a0 - a7) << 1;
|
||||
b3 = a3 + a4; b4 = MULSHIFT32(*cptr++, a3 - a4) << 3;
|
||||
a0 = b0 + b3; a3 = MULSHIFT32(*cptr, b0 - b3) << 1;
|
||||
a4 = b4 + b7; a7 = MULSHIFT32(*cptr++, b7 - b4) << 1;
|
||||
|
||||
a1 = buf[1]; a6 = buf[6]; a2 = buf[2]; a5 = buf[5];
|
||||
b1 = a1 + a6; b6 = MULSHIFT32(*cptr++, a1 - a6) << 1;
|
||||
b2 = a2 + a5; b5 = MULSHIFT32(*cptr++, a2 - a5) << 1;
|
||||
a1 = b1 + b2; a2 = MULSHIFT32(*cptr, b1 - b2) << 2;
|
||||
a5 = b5 + b6; a6 = MULSHIFT32(*cptr++, b6 - b5) << 2;
|
||||
|
||||
b0 = a0 + a1; b1 = MULSHIFT32(COS4_0, a0 - a1) << 1;
|
||||
b2 = a2 + a3; b3 = MULSHIFT32(COS4_0, a3 - a2) << 1;
|
||||
buf[0] = b0; buf[1] = b1;
|
||||
buf[2] = b2 + b3; buf[3] = b3;
|
||||
|
||||
b4 = a4 + a5; b5 = MULSHIFT32(COS4_0, a4 - a5) << 1;
|
||||
b6 = a6 + a7; b7 = MULSHIFT32(COS4_0, a7 - a6) << 1;
|
||||
b6 += b7;
|
||||
buf[4] = b4 + b6; buf[5] = b5 + b7;
|
||||
buf[6] = b5 + b6; buf[7] = b7;
|
||||
|
||||
buf += 8;
|
||||
}
|
||||
buf -= 32; /* reset */
|
||||
|
||||
/* sample 0 - always delayed one block */
|
||||
d = dest + 64*16 + ((offset - oddBlock) & 7) + (oddBlock ? 0 : VBUF_LENGTH);
|
||||
s = buf[ 0]; d[0] = d[8] = s;
|
||||
|
||||
/* samples 16 to 31 */
|
||||
d = dest + offset + (oddBlock ? VBUF_LENGTH : 0);
|
||||
|
||||
s = buf[ 1]; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[25] + buf[29];
|
||||
s = buf[17] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[ 9] + buf[13]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[21] + tmp; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[29] + buf[27];
|
||||
s = buf[ 5]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[21] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[13] + buf[11]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[19] + tmp; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[27] + buf[31];
|
||||
s = buf[ 3]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[19] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[11] + buf[15]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[23] + tmp; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[31];
|
||||
s = buf[ 7]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[23] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[15]; d[0] = d[8] = s; d += 64;
|
||||
s = tmp; d[0] = d[8] = s;
|
||||
|
||||
/* samples 16 to 1 (sample 16 used again) */
|
||||
d = dest + 16 + ((offset - oddBlock) & 7) + (oddBlock ? 0 : VBUF_LENGTH);
|
||||
|
||||
s = buf[ 1]; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[30] + buf[25];
|
||||
s = buf[17] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[14] + buf[ 9]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[22] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[ 6]; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[26] + buf[30];
|
||||
s = buf[22] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[10] + buf[14]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[18] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[ 2]; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[28] + buf[26];
|
||||
s = buf[18] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[12] + buf[10]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[20] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[ 4]; d[0] = d[8] = s; d += 64;
|
||||
|
||||
tmp = buf[24] + buf[28];
|
||||
s = buf[20] + tmp; d[0] = d[8] = s; d += 64;
|
||||
s = buf[ 8] + buf[12]; d[0] = d[8] = s; d += 64;
|
||||
s = buf[16] + tmp; d[0] = d[8] = s;
|
||||
|
||||
/* this is so rarely invoked that it's not worth making two versions of the output
|
||||
* shuffle code (one for no shift, one for clip + variable shift) like in IMDCT
|
||||
* here we just load, clip, shift, and store on the rare instances that es != 0
|
||||
*/
|
||||
if (es) {
|
||||
d = dest + 64*16 + ((offset - oddBlock) & 7) + (oddBlock ? 0 : VBUF_LENGTH);
|
||||
s = d[0]; CLIP_2N(s, 31 - es); d[0] = d[8] = (s << es);
|
||||
|
||||
d = dest + offset + (oddBlock ? VBUF_LENGTH : 0);
|
||||
for (i = 16; i <= 31; i++) {
|
||||
s = d[0]; CLIP_2N(s, 31 - es); d[0] = d[8] = (s << es); d += 64;
|
||||
}
|
||||
|
||||
d = dest + 16 + ((offset - oddBlock) & 7) + (oddBlock ? 0 : VBUF_LENGTH);
|
||||
for (i = 15; i >= 0; i--) {
|
||||
s = d[0]; CLIP_2N(s, 31 - es); d[0] = d[8] = (s << es); d += 64;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* dequant.c - dequantization, stereo processing (intensity, mid-side), short-block
|
||||
* coefficient reordering
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: Dequantize
|
||||
*
|
||||
* Description: dequantize coefficients, decode stereo, reorder short blocks
|
||||
* (one granule-worth)
|
||||
*
|
||||
* Inputs: MP3DecInfo structure filled by UnpackFrameHeader(), UnpackSideInfo(),
|
||||
* UnpackScaleFactors(), and DecodeHuffman() (for this granule)
|
||||
* index of current granule
|
||||
*
|
||||
* Outputs: dequantized and reordered coefficients in hi->huffDecBuf
|
||||
* (one granule-worth, all channels), format = Q26
|
||||
* operates in-place on huffDecBuf but also needs di->workBuf
|
||||
* updated hi->nonZeroBound index for both channels
|
||||
*
|
||||
* Return: 0 on success, -1 if null input pointers
|
||||
*
|
||||
* Notes: In calling output Q(DQ_FRACBITS_OUT), we assume an implicit bias
|
||||
* of 2^15. Some (floating-point) reference implementations factor this
|
||||
* into the 2^(0.25 * gain) scaling explicitly. But to avoid precision
|
||||
* loss, we don't do that. Instead take it into account in the final
|
||||
* round to PCM (>> by 15 less than we otherwise would have).
|
||||
* Equivalently, we can think of the dequantized coefficients as
|
||||
* Q(DQ_FRACBITS_OUT - 15) with no implicit bias.
|
||||
**************************************************************************************/
|
||||
int Dequantize(MP3DecInfo *mp3DecInfo, int gr)
|
||||
{
|
||||
int i, ch, nSamps, mOut[2];
|
||||
FrameHeader *fh;
|
||||
SideInfo *si;
|
||||
ScaleFactorInfo *sfi;
|
||||
HuffmanInfo *hi;
|
||||
DequantInfo *di;
|
||||
CriticalBandInfo *cbi;
|
||||
|
||||
/* validate pointers */
|
||||
if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS || !mp3DecInfo->ScaleFactorInfoPS ||
|
||||
!mp3DecInfo->HuffmanInfoPS || !mp3DecInfo->DequantInfoPS)
|
||||
return -1;
|
||||
|
||||
fh = (FrameHeader *)(mp3DecInfo->FrameHeaderPS);
|
||||
|
||||
/* si is an array of up to 4 structs, stored as gr0ch0, gr0ch1, gr1ch0, gr1ch1 */
|
||||
si = (SideInfo *)(mp3DecInfo->SideInfoPS);
|
||||
sfi = (ScaleFactorInfo *)(mp3DecInfo->ScaleFactorInfoPS);
|
||||
hi = (HuffmanInfo *)mp3DecInfo->HuffmanInfoPS;
|
||||
di = (DequantInfo *)mp3DecInfo->DequantInfoPS;
|
||||
cbi = di->cbi;
|
||||
mOut[0] = mOut[1] = 0;
|
||||
|
||||
/* dequantize all the samples in each channel */
|
||||
for (ch = 0; ch < mp3DecInfo->nChans; ch++) {
|
||||
hi->gb[ch] = DequantChannel(hi->huffDecBuf[ch], di->workBuf, &hi->nonZeroBound[ch], fh,
|
||||
&si->sis[gr][ch], &sfi->sfis[gr][ch], &cbi[ch]);
|
||||
}
|
||||
|
||||
/* joint stereo processing assumes one guard bit in input samples
|
||||
* it's extremely rare not to have at least one gb, so if this is the case
|
||||
* just make a pass over the data and clip to [-2^30+1, 2^30-1]
|
||||
* in practice this may never happen
|
||||
*/
|
||||
if (fh->modeExt && (hi->gb[0] < 1 || hi->gb[1] < 1)) {
|
||||
for (i = 0; i < hi->nonZeroBound[0]; i++) {
|
||||
if (hi->huffDecBuf[0][i] < -0x3fffffff) hi->huffDecBuf[0][i] = -0x3fffffff;
|
||||
if (hi->huffDecBuf[0][i] > 0x3fffffff) hi->huffDecBuf[0][i] = 0x3fffffff;
|
||||
}
|
||||
for (i = 0; i < hi->nonZeroBound[1]; i++) {
|
||||
if (hi->huffDecBuf[1][i] < -0x3fffffff) hi->huffDecBuf[1][i] = -0x3fffffff;
|
||||
if (hi->huffDecBuf[1][i] > 0x3fffffff) hi->huffDecBuf[1][i] = 0x3fffffff;
|
||||
}
|
||||
}
|
||||
|
||||
/* do mid-side stereo processing, if enabled */
|
||||
if (fh->modeExt >> 1) {
|
||||
if (fh->modeExt & 0x01) {
|
||||
/* intensity stereo enabled - run mid-side up to start of right zero region */
|
||||
if (cbi[1].cbType == 0)
|
||||
nSamps = fh->sfBand->l[cbi[1].cbEndL + 1];
|
||||
else
|
||||
nSamps = 3 * fh->sfBand->s[cbi[1].cbEndSMax + 1];
|
||||
} else {
|
||||
/* intensity stereo disabled - run mid-side on whole spectrum */
|
||||
nSamps = MAX(hi->nonZeroBound[0], hi->nonZeroBound[1]);
|
||||
}
|
||||
MidSideProc(hi->huffDecBuf, nSamps, mOut);
|
||||
}
|
||||
|
||||
/* do intensity stereo processing, if enabled */
|
||||
if (fh->modeExt & 0x01) {
|
||||
nSamps = hi->nonZeroBound[0];
|
||||
if (fh->ver == MPEG1) {
|
||||
IntensityProcMPEG1(hi->huffDecBuf, nSamps, fh, &sfi->sfis[gr][1], di->cbi,
|
||||
fh->modeExt >> 1, si->sis[gr][1].mixedBlock, mOut);
|
||||
} else {
|
||||
IntensityProcMPEG2(hi->huffDecBuf, nSamps, fh, &sfi->sfis[gr][1], di->cbi, &sfi->sfjs,
|
||||
fh->modeExt >> 1, si->sis[gr][1].mixedBlock, mOut);
|
||||
}
|
||||
}
|
||||
|
||||
/* adjust guard bit count and nonZeroBound if we did any stereo processing */
|
||||
if (fh->modeExt) {
|
||||
hi->gb[0] = CLZ(mOut[0]) - 1;
|
||||
hi->gb[1] = CLZ(mOut[1]) - 1;
|
||||
nSamps = MAX(hi->nonZeroBound[0], hi->nonZeroBound[1]);
|
||||
hi->nonZeroBound[0] = nSamps;
|
||||
hi->nonZeroBound[1] = nSamps;
|
||||
}
|
||||
|
||||
/* output format Q(DQ_FRACBITS_OUT) */
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,375 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* August 2003
|
||||
*
|
||||
* dqchan.c - dequantization of transform coefficients
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
typedef int ARRAY3[3]; /* for short-block reordering */
|
||||
|
||||
/* optional pre-emphasis for high-frequency scale factor bands */
|
||||
static const char preTab[22] = { 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0 };
|
||||
|
||||
/* pow(2,-i/4) for i=0..3, Q31 format */
|
||||
int pow14[4] = {
|
||||
0x7fffffff, 0x6ba27e65, 0x5a82799a, 0x4c1bf829
|
||||
};
|
||||
|
||||
/* pow(2,-i/4) * pow(j,4/3) for i=0..3 j=0..15, Q25 format */
|
||||
int pow43_14[4][16] = {
|
||||
{ 0x00000000, 0x10000000, 0x285145f3, 0x453a5cdb, /* Q28 */
|
||||
0x0cb2ff53, 0x111989d6, 0x15ce31c8, 0x1ac7f203,
|
||||
0x20000000, 0x257106b9, 0x2b16b4a3, 0x30ed74b4,
|
||||
0x36f23fa5, 0x3d227bd3, 0x437be656, 0x49fc823c, },
|
||||
|
||||
{ 0x00000000, 0x0d744fcd, 0x21e71f26, 0x3a36abd9,
|
||||
0x0aadc084, 0x0e610e6e, 0x12560c1d, 0x168523cf,
|
||||
0x1ae89f99, 0x1f7c03a4, 0x243bae49, 0x29249c67,
|
||||
0x2e34420f, 0x33686f85, 0x38bf3dff, 0x3e370182, },
|
||||
|
||||
{ 0x00000000, 0x0b504f33, 0x1c823e07, 0x30f39a55,
|
||||
0x08facd62, 0x0c176319, 0x0f6b3522, 0x12efe2ad,
|
||||
0x16a09e66, 0x1a79a317, 0x1e77e301, 0x2298d5b4,
|
||||
0x26da56fc, 0x2b3a902a, 0x2fb7e7e7, 0x3450f650, },
|
||||
|
||||
{ 0x00000000, 0x09837f05, 0x17f910d7, 0x2929c7a9,
|
||||
0x078d0dfa, 0x0a2ae661, 0x0cf73154, 0x0fec91cb,
|
||||
0x1306fe0a, 0x16434a6c, 0x199ee595, 0x1d17ae3d,
|
||||
0x20abd76a, 0x2459d551, 0x28204fbb, 0x2bfe1808, },
|
||||
};
|
||||
|
||||
/* pow(j,4/3) for j=16..63, Q23 format */
|
||||
int pow43[] = {
|
||||
0x1428a2fa, 0x15db1bd6, 0x1796302c, 0x19598d85,
|
||||
0x1b24e8bb, 0x1cf7fcfa, 0x1ed28af2, 0x20b4582a,
|
||||
0x229d2e6e, 0x248cdb55, 0x26832fda, 0x28800000,
|
||||
0x2a832287, 0x2c8c70a8, 0x2e9bc5d8, 0x30b0ff99,
|
||||
0x32cbfd4a, 0x34eca001, 0x3712ca62, 0x393e6088,
|
||||
0x3b6f47e0, 0x3da56717, 0x3fe0a5fc, 0x4220ed72,
|
||||
0x44662758, 0x46b03e7c, 0x48ff1e87, 0x4b52b3f3,
|
||||
0x4daaebfd, 0x5007b497, 0x5268fc62, 0x54ceb29c,
|
||||
0x5738c721, 0x59a72a59, 0x5c19cd35, 0x5e90a129,
|
||||
0x610b9821, 0x638aa47f, 0x660db90f, 0x6894c90b,
|
||||
0x6b1fc80c, 0x6daeaa0d, 0x70416360, 0x72d7e8b0,
|
||||
0x75722ef9, 0x78102b85, 0x7ab1d3ec, 0x7d571e09,
|
||||
};
|
||||
|
||||
/* sqrt(0.5) in Q31 format */
|
||||
#define SQRTHALF 0x5a82799a
|
||||
|
||||
/*
|
||||
* Minimax polynomial approximation to pow(x, 4/3), over the range
|
||||
* poly43lo: x = [0.5, 0.7071]
|
||||
* poly43hi: x = [0.7071, 1.0]
|
||||
*
|
||||
* Relative error < 1E-7
|
||||
* Coefs are scaled by 4, 2, 1, 0.5, 0.25
|
||||
*/
|
||||
int poly43lo[5] = { 0x29a0bda9, 0xb02e4828, 0x5957aa1b, 0x236c498d, 0xff581859 };
|
||||
int poly43hi[5] = { 0x10852163, 0xd333f6a4, 0x46e9408b, 0x27c2cef0, 0xfef577b4 };
|
||||
|
||||
/* pow(2, i*4/3) as exp and frac */
|
||||
int pow2exp[8] = { 14, 13, 11, 10, 9, 7, 6, 5 };
|
||||
|
||||
int pow2frac[8] = {
|
||||
0x6597fa94, 0x50a28be6, 0x7fffffff, 0x6597fa94,
|
||||
0x50a28be6, 0x7fffffff, 0x6597fa94, 0x50a28be6
|
||||
};
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: DequantBlock
|
||||
*
|
||||
* Description: Ken's highly-optimized, low memory dequantizer performing the operation
|
||||
* y = pow(x, 4.0/3.0) * pow(2, 25 - scale/4.0)
|
||||
*
|
||||
* Inputs: input buffer of decode Huffman codewords (signed-magnitude)
|
||||
* output buffer of same length (in-place (outbuf = inbuf) is allowed)
|
||||
* number of samples
|
||||
*
|
||||
* Outputs: dequantized samples in Q25 format
|
||||
*
|
||||
* Return: bitwise-OR of the unsigned outputs (for guard bit calculations)
|
||||
**************************************************************************************/
|
||||
static int DequantBlock(int *inbuf, int *outbuf, int num, int scale)
|
||||
{
|
||||
int tab4[4];
|
||||
int scalef, scalei, shift;
|
||||
int sx, x, y;
|
||||
int mask = 0;
|
||||
const int *tab16, *coef;
|
||||
|
||||
tab16 = pow43_14[scale & 0x3];
|
||||
scalef = pow14[scale & 0x3];
|
||||
scalei = MIN(scale >> 2, 31); /* smallest input scale = -47, so smallest scalei = -12 */
|
||||
|
||||
/* cache first 4 values */
|
||||
shift = MIN(scalei + 3, 31);
|
||||
shift = MAX(shift, 0);
|
||||
tab4[0] = 0;
|
||||
tab4[1] = tab16[1] >> shift;
|
||||
tab4[2] = tab16[2] >> shift;
|
||||
tab4[3] = tab16[3] >> shift;
|
||||
|
||||
do {
|
||||
|
||||
sx = *inbuf++;
|
||||
x = sx & 0x7fffffff; /* sx = sign|mag */
|
||||
|
||||
if (x < 4) {
|
||||
|
||||
y = tab4[x];
|
||||
|
||||
} else if (x < 16) {
|
||||
|
||||
y = tab16[x];
|
||||
y = (scalei < 0) ? y << -scalei : y >> scalei;
|
||||
|
||||
} else {
|
||||
|
||||
if (x < 64) {
|
||||
|
||||
y = pow43[x-16];
|
||||
|
||||
/* fractional scale */
|
||||
y = MULSHIFT32(y, scalef);
|
||||
shift = scalei - 3;
|
||||
|
||||
} else {
|
||||
|
||||
/* normalize to [0x40000000, 0x7fffffff] */
|
||||
x <<= 17;
|
||||
shift = 0;
|
||||
if (x < 0x08000000)
|
||||
x <<= 4, shift += 4;
|
||||
if (x < 0x20000000)
|
||||
x <<= 2, shift += 2;
|
||||
if (x < 0x40000000)
|
||||
x <<= 1, shift += 1;
|
||||
|
||||
coef = (x < SQRTHALF) ? poly43lo : poly43hi;
|
||||
|
||||
/* polynomial */
|
||||
y = coef[0];
|
||||
y = MULSHIFT32(y, x) + coef[1];
|
||||
y = MULSHIFT32(y, x) + coef[2];
|
||||
y = MULSHIFT32(y, x) + coef[3];
|
||||
y = MULSHIFT32(y, x) + coef[4];
|
||||
y = MULSHIFT32(y, pow2frac[shift]) << 3;
|
||||
|
||||
/* fractional scale */
|
||||
y = MULSHIFT32(y, scalef);
|
||||
shift = scalei - pow2exp[shift];
|
||||
}
|
||||
|
||||
/* integer scale */
|
||||
if (shift < 0) {
|
||||
shift = -shift;
|
||||
if (y > (0x7fffffff >> shift))
|
||||
y = 0x7fffffff; /* clip */
|
||||
else
|
||||
y <<= shift;
|
||||
} else {
|
||||
y >>= shift;
|
||||
}
|
||||
}
|
||||
|
||||
/* sign and store */
|
||||
mask |= y;
|
||||
*outbuf++ = (sx < 0) ? -y : y;
|
||||
|
||||
} while (--num);
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: DequantChannel
|
||||
*
|
||||
* Description: dequantize one granule, one channel worth of decoded Huffman codewords
|
||||
*
|
||||
* Inputs: sample buffer (decoded Huffman codewords), length = MAX_NSAMP samples
|
||||
* work buffer for reordering short-block, length = MAX_REORDER_SAMPS
|
||||
* samples (3 * width of largest short-block critical band)
|
||||
* non-zero bound for this channel/granule
|
||||
* valid FrameHeader, SideInfoSub, ScaleFactorInfoSub, and CriticalBandInfo
|
||||
* structures for this channel/granule
|
||||
*
|
||||
* Outputs: MAX_NSAMP dequantized samples in sampleBuf
|
||||
* updated non-zero bound (indicating which samples are != 0 after DQ)
|
||||
* filled-in cbi structure indicating start and end critical bands
|
||||
*
|
||||
* Return: minimum number of guard bits in dequantized sampleBuf
|
||||
*
|
||||
* Notes: dequantized samples in Q(DQ_FRACBITS_OUT) format
|
||||
**************************************************************************************/
|
||||
int DequantChannel(int *sampleBuf, int *workBuf, int *nonZeroBound, FrameHeader *fh, SideInfoSub *sis,
|
||||
ScaleFactorInfoSub *sfis, CriticalBandInfo *cbi)
|
||||
{
|
||||
int i, j, w, cb;
|
||||
int cbStartL, cbEndL, cbStartS, cbEndS;
|
||||
int nSamps, nonZero, sfactMultiplier, gbMask;
|
||||
int globalGain, gainI;
|
||||
int cbMax[3];
|
||||
ARRAY3 *buf; /* short block reorder */
|
||||
|
||||
/* set default start/end points for short/long blocks - will update with non-zero cb info */
|
||||
if (sis->blockType == 2) {
|
||||
cbStartL = 0;
|
||||
if (sis->mixedBlock) {
|
||||
cbEndL = (fh->ver == MPEG1 ? 8 : 6);
|
||||
cbStartS = 3;
|
||||
} else {
|
||||
cbEndL = 0;
|
||||
cbStartS = 0;
|
||||
}
|
||||
cbEndS = 13;
|
||||
} else {
|
||||
/* long block */
|
||||
cbStartL = 0;
|
||||
cbEndL = 22;
|
||||
cbStartS = 13;
|
||||
cbEndS = 13;
|
||||
}
|
||||
cbMax[2] = cbMax[1] = cbMax[0] = 0;
|
||||
gbMask = 0;
|
||||
i = 0;
|
||||
|
||||
/* sfactScale = 0 --> quantizer step size = 2
|
||||
* sfactScale = 1 --> quantizer step size = sqrt(2)
|
||||
* so sfactMultiplier = 2 or 4 (jump through globalGain by powers of 2 or sqrt(2))
|
||||
*/
|
||||
sfactMultiplier = 2 * (sis->sfactScale + 1);
|
||||
|
||||
/* offset globalGain by -2 if midSide enabled, for 1/sqrt(2) used in MidSideProc()
|
||||
* (DequantBlock() does 0.25 * gainI so knocking it down by two is the same as
|
||||
* dividing every sample by sqrt(2) = multiplying by 2^-.5)
|
||||
*/
|
||||
globalGain = sis->globalGain;
|
||||
if (fh->modeExt >> 1)
|
||||
globalGain -= 2;
|
||||
globalGain += IMDCT_SCALE; /* scale everything by sqrt(2), for fast IMDCT36 */
|
||||
|
||||
/* long blocks */
|
||||
for (cb = 0; cb < cbEndL; cb++) {
|
||||
|
||||
nonZero = 0;
|
||||
nSamps = fh->sfBand->l[cb + 1] - fh->sfBand->l[cb];
|
||||
gainI = 210 - globalGain + sfactMultiplier * (sfis->l[cb] + (sis->preFlag ? (int)preTab[cb] : 0));
|
||||
|
||||
nonZero |= DequantBlock(sampleBuf + i, sampleBuf + i, nSamps, gainI);
|
||||
i += nSamps;
|
||||
|
||||
/* update highest non-zero critical band */
|
||||
if (nonZero)
|
||||
cbMax[0] = cb;
|
||||
gbMask |= nonZero;
|
||||
|
||||
if (i >= *nonZeroBound)
|
||||
break;
|
||||
}
|
||||
|
||||
/* set cbi (Type, EndS[], EndSMax will be overwritten if we proceed to do short blocks) */
|
||||
cbi->cbType = 0; /* long only */
|
||||
cbi->cbEndL = cbMax[0];
|
||||
cbi->cbEndS[0] = cbi->cbEndS[1] = cbi->cbEndS[2] = 0;
|
||||
cbi->cbEndSMax = 0;
|
||||
|
||||
/* early exit if no short blocks */
|
||||
if (cbStartS >= 12)
|
||||
return CLZ(gbMask) - 1;
|
||||
|
||||
/* short blocks */
|
||||
cbMax[2] = cbMax[1] = cbMax[0] = cbStartS;
|
||||
for (cb = cbStartS; cb < cbEndS; cb++) {
|
||||
|
||||
nSamps = fh->sfBand->s[cb + 1] - fh->sfBand->s[cb];
|
||||
for (w = 0; w < 3; w++) {
|
||||
nonZero = 0;
|
||||
gainI = 210 - globalGain + 8*sis->subBlockGain[w] + sfactMultiplier*(sfis->s[cb][w]);
|
||||
|
||||
nonZero |= DequantBlock(sampleBuf + i + nSamps*w, workBuf + nSamps*w, nSamps, gainI);
|
||||
|
||||
/* update highest non-zero critical band */
|
||||
if (nonZero)
|
||||
cbMax[w] = cb;
|
||||
gbMask |= nonZero;
|
||||
}
|
||||
|
||||
/* reorder blocks */
|
||||
buf = (ARRAY3 *)(sampleBuf + i);
|
||||
i += 3*nSamps;
|
||||
for (j = 0; j < nSamps; j++) {
|
||||
buf[j][0] = workBuf[0*nSamps + j];
|
||||
buf[j][1] = workBuf[1*nSamps + j];
|
||||
buf[j][2] = workBuf[2*nSamps + j];
|
||||
}
|
||||
|
||||
ASSERT(3*nSamps <= MAX_REORDER_SAMPS);
|
||||
|
||||
if (i >= *nonZeroBound)
|
||||
break;
|
||||
}
|
||||
|
||||
/* i = last non-zero INPUT sample processed, which corresponds to highest possible non-zero
|
||||
* OUTPUT sample (after reorder)
|
||||
* however, the original nzb is no longer necessarily true
|
||||
* for each cb, buf[][] is updated with 3*nSamps samples (i increases 3*nSamps each time)
|
||||
* (buf[j + 1][0] = 3 (input) samples ahead of buf[j][0])
|
||||
* so update nonZeroBound to i
|
||||
*/
|
||||
*nonZeroBound = i;
|
||||
|
||||
ASSERT(*nonZeroBound <= MAX_NSAMP);
|
||||
|
||||
cbi->cbType = (sis->mixedBlock ? 2 : 1); /* 2 = mixed short/long, 1 = short only */
|
||||
|
||||
cbi->cbEndS[0] = cbMax[0];
|
||||
cbi->cbEndS[1] = cbMax[1];
|
||||
cbi->cbEndS[2] = cbMax[2];
|
||||
|
||||
cbi->cbEndSMax = cbMax[0];
|
||||
cbi->cbEndSMax = MAX(cbi->cbEndSMax, cbMax[1]);
|
||||
cbi->cbEndSMax = MAX(cbi->cbEndSMax, cbMax[2]);
|
||||
|
||||
return CLZ(gbMask) - 1;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,461 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* July 2003
|
||||
*
|
||||
* huffman.c - Huffman decoding of transform coefficients
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
|
||||
/* helper macros - see comments in hufftabs.c about the format of the huffman tables */
|
||||
#define GetMaxbits(x) ((int)( (((unsigned short)(x)) >> 0) & 0x000f))
|
||||
#define GetHLen(x) ((int)( (((unsigned short)(x)) >> 12) & 0x000f))
|
||||
#define GetCWY(x) ((int)( (((unsigned short)(x)) >> 8) & 0x000f))
|
||||
#define GetCWX(x) ((int)( (((unsigned short)(x)) >> 4) & 0x000f))
|
||||
#define GetSignBits(x) ((int)( (((unsigned short)(x)) >> 0) & 0x000f))
|
||||
|
||||
#define GetHLenQ(x) ((int)( (((unsigned char)(x)) >> 4) & 0x0f))
|
||||
#define GetCWVQ(x) ((int)( (((unsigned char)(x)) >> 3) & 0x01))
|
||||
#define GetCWWQ(x) ((int)( (((unsigned char)(x)) >> 2) & 0x01))
|
||||
#define GetCWXQ(x) ((int)( (((unsigned char)(x)) >> 1) & 0x01))
|
||||
#define GetCWYQ(x) ((int)( (((unsigned char)(x)) >> 0) & 0x01))
|
||||
|
||||
/* apply sign of s to the positive number x (save in MSB, will do two's complement in dequant) */
|
||||
#define ApplySign(x, s) { (x) |= ((s) & 0x80000000); }
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: DecodeHuffmanPairs
|
||||
*
|
||||
* Description: decode 2-way vector Huffman codes in the "bigValues" region of spectrum
|
||||
*
|
||||
* Inputs: valid BitStreamInfo struct, pointing to start of pair-wise codes
|
||||
* pointer to xy buffer to received decoded values
|
||||
* number of codewords to decode
|
||||
* index of Huffman table to use
|
||||
* number of bits remaining in bitstream
|
||||
*
|
||||
* Outputs: pairs of decoded coefficients in vwxy
|
||||
* updated BitStreamInfo struct
|
||||
*
|
||||
* Return: number of bits used, or -1 if out of bits
|
||||
*
|
||||
* Notes: assumes that nVals is an even number
|
||||
* si_huff.bit tests every Huffman codeword in every table (though not
|
||||
* necessarily all linBits outputs for x,y > 15)
|
||||
**************************************************************************************/
|
||||
// no improvement with section=data
|
||||
static int DecodeHuffmanPairs(int *xy, int nVals, int tabIdx, int bitsLeft, unsigned char *buf, int bitOffset)
|
||||
{
|
||||
int i, x, y;
|
||||
int cachedBits, padBits, len, startBits, linBits, maxBits, minBits;
|
||||
HuffTabType tabType;
|
||||
unsigned short cw, *tBase, *tCurr;
|
||||
unsigned int cache;
|
||||
|
||||
if(nVals <= 0)
|
||||
return 0;
|
||||
|
||||
if (bitsLeft < 0)
|
||||
return -1;
|
||||
startBits = bitsLeft;
|
||||
|
||||
tBase = (unsigned short *)(huffTable + huffTabOffset[tabIdx]);
|
||||
linBits = huffTabLookup[tabIdx].linBits;
|
||||
tabType = huffTabLookup[tabIdx].tabType;
|
||||
|
||||
ASSERT(!(nVals & 0x01));
|
||||
ASSERT(tabIdx < HUFF_PAIRTABS);
|
||||
ASSERT(tabIdx >= 0);
|
||||
ASSERT(tabType != invalidTab);
|
||||
|
||||
/* initially fill cache with any partial byte */
|
||||
cache = 0;
|
||||
cachedBits = (8 - bitOffset) & 0x07;
|
||||
if (cachedBits)
|
||||
cache = (unsigned int)(*buf++) << (32 - cachedBits);
|
||||
bitsLeft -= cachedBits;
|
||||
|
||||
if (tabType == noBits) {
|
||||
/* table 0, no data, x = y = 0 */
|
||||
for (i = 0; i < nVals; i+=2) {
|
||||
xy[i+0] = 0;
|
||||
xy[i+1] = 0;
|
||||
}
|
||||
return 0;
|
||||
} else if (tabType == oneShot) {
|
||||
/* single lookup, no escapes */
|
||||
maxBits = GetMaxbits(tBase[0]);
|
||||
tBase++;
|
||||
padBits = 0;
|
||||
while (nVals > 0) {
|
||||
/* refill cache - assumes cachedBits <= 16 */
|
||||
if (bitsLeft >= 16) {
|
||||
/* load 2 new bytes into left-justified cache */
|
||||
cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
cache |= (unsigned int)(*buf++) << (16 - cachedBits);
|
||||
cachedBits += 16;
|
||||
bitsLeft -= 16;
|
||||
} else {
|
||||
/* last time through, pad cache with zeros and drain cache */
|
||||
if (cachedBits + bitsLeft <= 0) return -1;
|
||||
if (bitsLeft > 0) cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
if (bitsLeft > 8) cache |= (unsigned int)(*buf++) << (16 - cachedBits);
|
||||
cachedBits += bitsLeft;
|
||||
bitsLeft = 0;
|
||||
|
||||
cache &= (signed int)0x80000000 >> (cachedBits - 1);
|
||||
padBits = 11;
|
||||
cachedBits += padBits; /* okay if this is > 32 (0's automatically shifted in from right) */
|
||||
}
|
||||
|
||||
/* largest maxBits = 9, plus 2 for sign bits, so make sure cache has at least 11 bits */
|
||||
while (nVals > 0 && cachedBits >= 11 ) {
|
||||
cw = tBase[cache >> (32 - maxBits)];
|
||||
len = GetHLen(cw);
|
||||
cachedBits -= len;
|
||||
cache <<= len;
|
||||
|
||||
x = GetCWX(cw); if (x) {ApplySign(x, cache); cache <<= 1; cachedBits--;}
|
||||
y = GetCWY(cw); if (y) {ApplySign(y, cache); cache <<= 1; cachedBits--;}
|
||||
|
||||
/* ran out of bits - should never have consumed padBits */
|
||||
if (cachedBits < padBits)
|
||||
return -1;
|
||||
|
||||
*xy++ = x;
|
||||
*xy++ = y;
|
||||
nVals -= 2;
|
||||
}
|
||||
}
|
||||
bitsLeft += (cachedBits - padBits);
|
||||
return (startBits - bitsLeft);
|
||||
} else if (tabType == loopLinbits || tabType == loopNoLinbits) {
|
||||
tCurr = tBase;
|
||||
padBits = 0;
|
||||
while (nVals > 0) {
|
||||
/* refill cache - assumes cachedBits <= 16 */
|
||||
if (bitsLeft >= 16) {
|
||||
/* load 2 new bytes into left-justified cache */
|
||||
cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
cache |= (unsigned int)(*buf++) << (16 - cachedBits);
|
||||
cachedBits += 16;
|
||||
bitsLeft -= 16;
|
||||
} else {
|
||||
/* last time through, pad cache with zeros and drain cache */
|
||||
if (cachedBits + bitsLeft <= 0) return -1;
|
||||
if (bitsLeft > 0) cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
if (bitsLeft > 8) cache |= (unsigned int)(*buf++) << (16 - cachedBits);
|
||||
cachedBits += bitsLeft;
|
||||
bitsLeft = 0;
|
||||
|
||||
cache &= (signed int)0x80000000 >> (cachedBits - 1);
|
||||
padBits = 11;
|
||||
cachedBits += padBits; /* okay if this is > 32 (0's automatically shifted in from right) */
|
||||
}
|
||||
|
||||
/* largest maxBits = 9, plus 2 for sign bits, so make sure cache has at least 11 bits */
|
||||
while (nVals > 0 && cachedBits >= 11 ) {
|
||||
maxBits = GetMaxbits(tCurr[0]);
|
||||
cw = tCurr[(cache >> (32 - maxBits)) + 1];
|
||||
len = GetHLen(cw);
|
||||
if (!len) {
|
||||
cachedBits -= maxBits;
|
||||
cache <<= maxBits;
|
||||
tCurr += cw;
|
||||
continue;
|
||||
}
|
||||
cachedBits -= len;
|
||||
cache <<= len;
|
||||
|
||||
x = GetCWX(cw);
|
||||
y = GetCWY(cw);
|
||||
|
||||
if (x == 15 && tabType == loopLinbits) {
|
||||
minBits = linBits + 1 + (y ? 1 : 0);
|
||||
if (cachedBits + bitsLeft < minBits)
|
||||
return -1;
|
||||
while (cachedBits < minBits) {
|
||||
cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
cachedBits += 8;
|
||||
bitsLeft -= 8;
|
||||
}
|
||||
if (bitsLeft < 0) {
|
||||
cachedBits += bitsLeft;
|
||||
bitsLeft = 0;
|
||||
cache &= (signed int)0x80000000 >> (cachedBits - 1);
|
||||
}
|
||||
x += (int)(cache >> (32 - linBits));
|
||||
cachedBits -= linBits;
|
||||
cache <<= linBits;
|
||||
}
|
||||
if (x) {ApplySign(x, cache); cache <<= 1; cachedBits--;}
|
||||
|
||||
if (y == 15 && tabType == loopLinbits) {
|
||||
minBits = linBits + 1;
|
||||
if (cachedBits + bitsLeft < minBits)
|
||||
return -1;
|
||||
while (cachedBits < minBits) {
|
||||
cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
cachedBits += 8;
|
||||
bitsLeft -= 8;
|
||||
}
|
||||
if (bitsLeft < 0) {
|
||||
cachedBits += bitsLeft;
|
||||
bitsLeft = 0;
|
||||
cache &= (signed int)0x80000000 >> (cachedBits - 1);
|
||||
}
|
||||
y += (int)(cache >> (32 - linBits));
|
||||
cachedBits -= linBits;
|
||||
cache <<= linBits;
|
||||
}
|
||||
if (y) {ApplySign(y, cache); cache <<= 1; cachedBits--;}
|
||||
|
||||
/* ran out of bits - should never have consumed padBits */
|
||||
if (cachedBits < padBits)
|
||||
return -1;
|
||||
|
||||
*xy++ = x;
|
||||
*xy++ = y;
|
||||
nVals -= 2;
|
||||
tCurr = tBase;
|
||||
}
|
||||
}
|
||||
bitsLeft += (cachedBits - padBits);
|
||||
return (startBits - bitsLeft);
|
||||
}
|
||||
|
||||
/* error in bitstream - trying to access unused Huffman table */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: DecodeHuffmanQuads
|
||||
*
|
||||
* Description: decode 4-way vector Huffman codes in the "count1" region of spectrum
|
||||
*
|
||||
* Inputs: valid BitStreamInfo struct, pointing to start of quadword codes
|
||||
* pointer to vwxy buffer to received decoded values
|
||||
* maximum number of codewords to decode
|
||||
* index of quadword table (0 = table A, 1 = table B)
|
||||
* number of bits remaining in bitstream
|
||||
*
|
||||
* Outputs: quadruples of decoded coefficients in vwxy
|
||||
* updated BitStreamInfo struct
|
||||
*
|
||||
* Return: index of the first "zero_part" value (index of the first sample
|
||||
* of the quad word after which all samples are 0)
|
||||
*
|
||||
* Notes: si_huff.bit tests every vwxy output in both quad tables
|
||||
**************************************************************************************/
|
||||
// no improvement with section=data
|
||||
static int DecodeHuffmanQuads(int *vwxy, int nVals, int tabIdx, int bitsLeft, unsigned char *buf, int bitOffset)
|
||||
{
|
||||
int i, v, w, x, y;
|
||||
int len, maxBits, cachedBits, padBits;
|
||||
unsigned int cache;
|
||||
unsigned char cw, *tBase;
|
||||
|
||||
if (bitsLeft <= 0)
|
||||
return 0;
|
||||
|
||||
tBase = (unsigned char *)quadTable + quadTabOffset[tabIdx];
|
||||
maxBits = quadTabMaxBits[tabIdx];
|
||||
|
||||
/* initially fill cache with any partial byte */
|
||||
cache = 0;
|
||||
cachedBits = (8 - bitOffset) & 0x07;
|
||||
if (cachedBits)
|
||||
cache = (unsigned int)(*buf++) << (32 - cachedBits);
|
||||
bitsLeft -= cachedBits;
|
||||
|
||||
i = padBits = 0;
|
||||
while (i < (nVals - 3)) {
|
||||
/* refill cache - assumes cachedBits <= 16 */
|
||||
if (bitsLeft >= 16) {
|
||||
/* load 2 new bytes into left-justified cache */
|
||||
cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
cache |= (unsigned int)(*buf++) << (16 - cachedBits);
|
||||
cachedBits += 16;
|
||||
bitsLeft -= 16;
|
||||
} else {
|
||||
/* last time through, pad cache with zeros and drain cache */
|
||||
if (cachedBits + bitsLeft <= 0) return i;
|
||||
if (bitsLeft > 0) cache |= (unsigned int)(*buf++) << (24 - cachedBits);
|
||||
if (bitsLeft > 8) cache |= (unsigned int)(*buf++) << (16 - cachedBits);
|
||||
cachedBits += bitsLeft;
|
||||
bitsLeft = 0;
|
||||
|
||||
cache &= (signed int)0x80000000 >> (cachedBits - 1);
|
||||
padBits = 10;
|
||||
cachedBits += padBits; /* okay if this is > 32 (0's automatically shifted in from right) */
|
||||
}
|
||||
|
||||
/* largest maxBits = 6, plus 4 for sign bits, so make sure cache has at least 10 bits */
|
||||
while (i < (nVals - 3) && cachedBits >= 10 ) {
|
||||
cw = tBase[cache >> (32 - maxBits)];
|
||||
len = GetHLenQ(cw);
|
||||
cachedBits -= len;
|
||||
cache <<= len;
|
||||
|
||||
v = GetCWVQ(cw); if(v) {ApplySign(v, cache); cache <<= 1; cachedBits--;}
|
||||
w = GetCWWQ(cw); if(w) {ApplySign(w, cache); cache <<= 1; cachedBits--;}
|
||||
x = GetCWXQ(cw); if(x) {ApplySign(x, cache); cache <<= 1; cachedBits--;}
|
||||
y = GetCWYQ(cw); if(y) {ApplySign(y, cache); cache <<= 1; cachedBits--;}
|
||||
|
||||
/* ran out of bits - okay (means we're done) */
|
||||
if (cachedBits < padBits)
|
||||
return i;
|
||||
|
||||
*vwxy++ = v;
|
||||
*vwxy++ = w;
|
||||
*vwxy++ = x;
|
||||
*vwxy++ = y;
|
||||
i += 4;
|
||||
}
|
||||
}
|
||||
|
||||
/* decoded max number of quad values */
|
||||
return i;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: DecodeHuffman
|
||||
*
|
||||
* Description: decode one granule, one channel worth of Huffman codes
|
||||
*
|
||||
* Inputs: MP3DecInfo structure filled by UnpackFrameHeader(), UnpackSideInfo(),
|
||||
* and UnpackScaleFactors() (for this granule)
|
||||
* buffer pointing to start of Huffman data in MP3 frame
|
||||
* pointer to bit offset (0-7) indicating starting bit in buf[0]
|
||||
* number of bits in the Huffman data section of the frame
|
||||
* (could include padding bits)
|
||||
* index of current granule and channel
|
||||
*
|
||||
* Outputs: decoded coefficients in hi->huffDecBuf[ch] (hi pointer in mp3DecInfo)
|
||||
* updated bitOffset
|
||||
*
|
||||
* Return: length (in bytes) of Huffman codes
|
||||
* bitOffset also returned in parameter (0 = MSB, 7 = LSB of
|
||||
* byte located at buf + offset)
|
||||
* -1 if null input pointers, huffBlockBits < 0, or decoder runs
|
||||
* out of bits prematurely (invalid bitstream)
|
||||
**************************************************************************************/
|
||||
// .data about 1ms faster per frame
|
||||
int DecodeHuffman(MP3DecInfo *mp3DecInfo, unsigned char *buf, int *bitOffset, int huffBlockBits, int gr, int ch)
|
||||
{
|
||||
int r1Start, r2Start, rEnd[4]; /* region boundaries */
|
||||
int i, w, bitsUsed, bitsLeft;
|
||||
unsigned char *startBuf = buf;
|
||||
|
||||
FrameHeader *fh;
|
||||
SideInfo *si;
|
||||
SideInfoSub *sis;
|
||||
ScaleFactorInfo *sfi;
|
||||
HuffmanInfo *hi;
|
||||
|
||||
/* validate pointers */
|
||||
if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS || !mp3DecInfo->ScaleFactorInfoPS || !mp3DecInfo->HuffmanInfoPS)
|
||||
return -1;
|
||||
|
||||
fh = ((FrameHeader *)(mp3DecInfo->FrameHeaderPS));
|
||||
si = ((SideInfo *)(mp3DecInfo->SideInfoPS));
|
||||
sis = &si->sis[gr][ch];
|
||||
sfi = ((ScaleFactorInfo *)(mp3DecInfo->ScaleFactorInfoPS));
|
||||
hi = (HuffmanInfo*)(mp3DecInfo->HuffmanInfoPS);
|
||||
|
||||
if (huffBlockBits < 0)
|
||||
return -1;
|
||||
|
||||
/* figure out region boundaries (the first 2*bigVals coefficients divided into 3 regions) */
|
||||
if (sis->winSwitchFlag && sis->blockType == 2) {
|
||||
if (sis->mixedBlock == 0) {
|
||||
r1Start = fh->sfBand->s[(sis->region0Count + 1)/3] * 3;
|
||||
} else {
|
||||
if (fh->ver == MPEG1) {
|
||||
r1Start = fh->sfBand->l[sis->region0Count + 1];
|
||||
} else {
|
||||
/* see MPEG2 spec for explanation */
|
||||
w = fh->sfBand->s[4] - fh->sfBand->s[3];
|
||||
r1Start = fh->sfBand->l[6] + 2*w;
|
||||
}
|
||||
}
|
||||
r2Start = MAX_NSAMP; /* short blocks don't have region 2 */
|
||||
} else {
|
||||
r1Start = fh->sfBand->l[sis->region0Count + 1];
|
||||
r2Start = fh->sfBand->l[sis->region0Count + 1 + sis->region1Count + 1];
|
||||
}
|
||||
|
||||
/* offset rEnd index by 1 so first region = rEnd[1] - rEnd[0], etc. */
|
||||
rEnd[3] = MIN(MAX_NSAMP, 2 * sis->nBigvals);
|
||||
rEnd[2] = MIN(r2Start, rEnd[3]);
|
||||
rEnd[1] = MIN(r1Start, rEnd[3]);
|
||||
rEnd[0] = 0;
|
||||
|
||||
/* rounds up to first all-zero pair (we don't check last pair for (x,y) == (non-zero, zero)) */
|
||||
hi->nonZeroBound[ch] = rEnd[3];
|
||||
|
||||
/* decode Huffman pairs (rEnd[i] are always even numbers) */
|
||||
bitsLeft = huffBlockBits;
|
||||
for (i = 0; i < 3; i++) {
|
||||
bitsUsed = DecodeHuffmanPairs(hi->huffDecBuf[ch] + rEnd[i], rEnd[i+1] - rEnd[i], sis->tableSelect[i], bitsLeft, buf, *bitOffset);
|
||||
if (bitsUsed < 0 || bitsUsed > bitsLeft) /* error - overran end of bitstream */
|
||||
return -1;
|
||||
|
||||
/* update bitstream position */
|
||||
buf += (bitsUsed + *bitOffset) >> 3;
|
||||
*bitOffset = (bitsUsed + *bitOffset) & 0x07;
|
||||
bitsLeft -= bitsUsed;
|
||||
}
|
||||
|
||||
/* decode Huffman quads (if any) */
|
||||
hi->nonZeroBound[ch] += DecodeHuffmanQuads(hi->huffDecBuf[ch] + rEnd[3], MAX_NSAMP - rEnd[3], sis->count1TableSelect, bitsLeft, buf, *bitOffset);
|
||||
|
||||
ASSERT(hi->nonZeroBound[ch] <= MAX_NSAMP);
|
||||
for (i = hi->nonZeroBound[ch]; i < MAX_NSAMP; i++)
|
||||
hi->huffDecBuf[ch][i] = 0;
|
||||
|
||||
/* If bits used for 576 samples < huffBlockBits, then the extras are considered
|
||||
* to be stuffing bits (throw away, but need to return correct bitstream position)
|
||||
*/
|
||||
buf += (bitsLeft + *bitOffset) >> 3;
|
||||
*bitOffset = (bitsLeft + *bitOffset) & 0x07;
|
||||
|
||||
return (buf - startBuf);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,755 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* hufftabs.c - compressed Huffman code tables
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
|
||||
/* NOTE - regenerated tables to use shorts instead of ints
|
||||
* (all needed data can fit in 16 bits - see below)
|
||||
*
|
||||
* format 0xABCD
|
||||
* A = length of codeword
|
||||
* B = y value
|
||||
* C = x value
|
||||
* D = number of sign bits (0, 1, or 2)
|
||||
*
|
||||
* to read a CW, the code reads maxbits from the stream (dep. on
|
||||
* table index), but doesn't remove them from the bitstream reader
|
||||
* then it gets the correct CW by direct lookup into the table
|
||||
* of length (2^maxbits) (more complicated for non-oneShot...)
|
||||
* for CW's with hlen < maxbits, there are multiple entries in the
|
||||
* table (extra bits are don't cares)
|
||||
* the bitstream reader then "purges" (or removes) only the correct
|
||||
* number of bits for the chosen CW
|
||||
*
|
||||
* entries starting with F are special: D (signbits) is maxbits,
|
||||
* so the decoder always checks huffTableXX[0] first, gets the
|
||||
* signbits, and reads that many bits from the bitstream
|
||||
* (sometimes it takes > 1 read to get the value, so maxbits is
|
||||
* can get updated by jumping to another value starting with 0xF)
|
||||
* entries starting with 0 are also special: A = hlen = 0, rest of
|
||||
* value is an offset to jump higher in the table (for tables of
|
||||
* type loopNoLinbits or loopLinbits)
|
||||
*/
|
||||
|
||||
/* store Huffman codes as one big table plus table of offsets, since some platforms
|
||||
* don't properly support table-of-tables (table of pointers to other const tables)
|
||||
*/
|
||||
const unsigned short huffTable[] = {
|
||||
/* huffTable01[9] */
|
||||
0xf003, 0x3112, 0x3101, 0x2011, 0x2011, 0x1000, 0x1000, 0x1000,
|
||||
0x1000,
|
||||
|
||||
/* huffTable02[65] */
|
||||
0xf006, 0x6222, 0x6201, 0x5212, 0x5212, 0x5122, 0x5122, 0x5021,
|
||||
0x5021, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000,
|
||||
|
||||
/* huffTable03[65] */
|
||||
0xf006, 0x6222, 0x6201, 0x5212, 0x5212, 0x5122, 0x5122, 0x5021,
|
||||
0x5021, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2101, 0x2101, 0x2101, 0x2101, 0x2101, 0x2101, 0x2101,
|
||||
0x2101, 0x2101, 0x2101, 0x2101, 0x2101, 0x2101, 0x2101, 0x2101,
|
||||
0x2101, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000,
|
||||
|
||||
/* huffTable05[257] */
|
||||
0xf008, 0x8332, 0x8322, 0x7232, 0x7232, 0x6132, 0x6132, 0x6132,
|
||||
0x6132, 0x7312, 0x7312, 0x7301, 0x7301, 0x7031, 0x7031, 0x7222,
|
||||
0x7222, 0x6212, 0x6212, 0x6212, 0x6212, 0x6122, 0x6122, 0x6122,
|
||||
0x6122, 0x6201, 0x6201, 0x6201, 0x6201, 0x6021, 0x6021, 0x6021,
|
||||
0x6021, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000,
|
||||
|
||||
/* huffTable06[129] */
|
||||
0xf007, 0x7332, 0x7301, 0x6322, 0x6322, 0x6232, 0x6232, 0x6031,
|
||||
0x6031, 0x5312, 0x5312, 0x5312, 0x5312, 0x5132, 0x5132, 0x5132,
|
||||
0x5132, 0x5222, 0x5222, 0x5222, 0x5222, 0x5201, 0x5201, 0x5201,
|
||||
0x5201, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212,
|
||||
0x4212, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122,
|
||||
0x4122, 0x4021, 0x4021, 0x4021, 0x4021, 0x4021, 0x4021, 0x4021,
|
||||
0x4021, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000,
|
||||
|
||||
/* huffTable07[110] */
|
||||
0xf006, 0x0041, 0x0052, 0x005b, 0x0060, 0x0063, 0x0068, 0x006b,
|
||||
0x6212, 0x5122, 0x5122, 0x6201, 0x6021, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0xf004, 0x4552, 0x4542, 0x4452, 0x4352, 0x3532, 0x3532,
|
||||
0x3442, 0x3442, 0x3522, 0x3522, 0x3252, 0x3252, 0x2512, 0x2512,
|
||||
0x2512, 0x2512, 0xf003, 0x2152, 0x2152, 0x3501, 0x3432, 0x2051,
|
||||
0x2051, 0x3342, 0x3332, 0xf002, 0x2422, 0x2242, 0x1412, 0x1412,
|
||||
0xf001, 0x1142, 0x1041, 0xf002, 0x2401, 0x2322, 0x2232, 0x2301,
|
||||
0xf001, 0x1312, 0x1132, 0xf001, 0x1031, 0x1222,
|
||||
|
||||
/* huffTable08[280] */
|
||||
0xf008, 0x0101, 0x010a, 0x010f, 0x8512, 0x8152, 0x0112, 0x0115,
|
||||
0x8422, 0x8242, 0x8412, 0x7142, 0x7142, 0x8401, 0x8041, 0x8322,
|
||||
0x8232, 0x8312, 0x8132, 0x8301, 0x8031, 0x6222, 0x6222, 0x6222,
|
||||
0x6222, 0x6201, 0x6201, 0x6201, 0x6201, 0x6021, 0x6021, 0x6021,
|
||||
0x6021, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212,
|
||||
0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212,
|
||||
0x4212, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122,
|
||||
0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122,
|
||||
0x4122, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112, 0x2112,
|
||||
0x2112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0xf003, 0x3552, 0x3452, 0x2542, 0x2542, 0x1352, 0x1352,
|
||||
0x1352, 0x1352, 0xf002, 0x2532, 0x2442, 0x1522, 0x1522, 0xf001,
|
||||
0x1252, 0x1501, 0xf001, 0x1432, 0x1342, 0xf001, 0x1051, 0x1332,
|
||||
|
||||
/* huffTable09[93] */
|
||||
0xf006, 0x0041, 0x004a, 0x004f, 0x0052, 0x0057, 0x005a, 0x6412,
|
||||
0x6142, 0x6322, 0x6232, 0x5312, 0x5312, 0x5132, 0x5132, 0x6301,
|
||||
0x6031, 0x5222, 0x5222, 0x5201, 0x5201, 0x4212, 0x4212, 0x4212,
|
||||
0x4212, 0x4122, 0x4122, 0x4122, 0x4122, 0x4021, 0x4021, 0x4021,
|
||||
0x4021, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000, 0xf003, 0x3552, 0x3542, 0x2532, 0x2532, 0x2352, 0x2352,
|
||||
0x3452, 0x3501, 0xf002, 0x2442, 0x2522, 0x2252, 0x2512, 0xf001,
|
||||
0x1152, 0x1432, 0xf002, 0x1342, 0x1342, 0x2051, 0x2401, 0xf001,
|
||||
0x1422, 0x1242, 0xf001, 0x1332, 0x1041,
|
||||
|
||||
/* huffTable10[320] */
|
||||
0xf008, 0x0101, 0x010a, 0x010f, 0x0118, 0x011b, 0x0120, 0x0125,
|
||||
0x8712, 0x8172, 0x012a, 0x012d, 0x0132, 0x8612, 0x8162, 0x8061,
|
||||
0x0137, 0x013a, 0x013d, 0x8412, 0x8142, 0x8041, 0x8322, 0x8232,
|
||||
0x8301, 0x7312, 0x7312, 0x7132, 0x7132, 0x7031, 0x7031, 0x7222,
|
||||
0x7222, 0x6212, 0x6212, 0x6212, 0x6212, 0x6122, 0x6122, 0x6122,
|
||||
0x6122, 0x6201, 0x6201, 0x6201, 0x6201, 0x6021, 0x6021, 0x6021,
|
||||
0x6021, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0xf003, 0x3772, 0x3762, 0x3672, 0x3752, 0x3572, 0x3662,
|
||||
0x2742, 0x2742, 0xf002, 0x2472, 0x2652, 0x2562, 0x2732, 0xf003,
|
||||
0x2372, 0x2372, 0x2642, 0x2642, 0x3552, 0x3452, 0x2362, 0x2362,
|
||||
0xf001, 0x1722, 0x1272, 0xf002, 0x2462, 0x2701, 0x1071, 0x1071,
|
||||
0xf002, 0x1262, 0x1262, 0x2542, 0x2532, 0xf002, 0x1601, 0x1601,
|
||||
0x2352, 0x2442, 0xf001, 0x1632, 0x1622, 0xf002, 0x2522, 0x2252,
|
||||
0x1512, 0x1512, 0xf002, 0x1152, 0x1152, 0x2432, 0x2342, 0xf001,
|
||||
0x1501, 0x1051, 0xf001, 0x1422, 0x1242, 0xf001, 0x1332, 0x1401,
|
||||
|
||||
/* huffTable11[296] */
|
||||
0xf008, 0x0101, 0x0106, 0x010f, 0x0114, 0x0117, 0x8722, 0x8272,
|
||||
0x011c, 0x7172, 0x7172, 0x8712, 0x8071, 0x8632, 0x8362, 0x8061,
|
||||
0x011f, 0x0122, 0x8512, 0x7262, 0x7262, 0x8622, 0x8601, 0x7612,
|
||||
0x7612, 0x7162, 0x7162, 0x8152, 0x8432, 0x8051, 0x0125, 0x8422,
|
||||
0x8242, 0x8412, 0x8142, 0x8401, 0x8041, 0x7322, 0x7322, 0x7232,
|
||||
0x7232, 0x6312, 0x6312, 0x6312, 0x6312, 0x6132, 0x6132, 0x6132,
|
||||
0x6132, 0x7301, 0x7301, 0x7031, 0x7031, 0x6222, 0x6222, 0x6222,
|
||||
0x6222, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122,
|
||||
0x5122, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212,
|
||||
0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212,
|
||||
0x4212, 0x5201, 0x5201, 0x5201, 0x5201, 0x5201, 0x5201, 0x5201,
|
||||
0x5201, 0x5021, 0x5021, 0x5021, 0x5021, 0x5021, 0x5021, 0x5021,
|
||||
0x5021, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x2000,
|
||||
0x2000, 0xf002, 0x2772, 0x2762, 0x2672, 0x2572, 0xf003, 0x2662,
|
||||
0x2662, 0x2742, 0x2742, 0x2472, 0x2472, 0x3752, 0x3552, 0xf002,
|
||||
0x2652, 0x2562, 0x1732, 0x1732, 0xf001, 0x1372, 0x1642, 0xf002,
|
||||
0x2542, 0x2452, 0x2532, 0x2352, 0xf001, 0x1462, 0x1701, 0xf001,
|
||||
0x1442, 0x1522, 0xf001, 0x1252, 0x1501, 0xf001, 0x1342, 0x1332,
|
||||
|
||||
/* huffTable12[185] */
|
||||
0xf007, 0x0081, 0x008a, 0x008f, 0x0092, 0x0097, 0x009a, 0x009d,
|
||||
0x00a2, 0x00a5, 0x00a8, 0x7622, 0x7262, 0x7162, 0x00ad, 0x00b0,
|
||||
0x00b3, 0x7512, 0x7152, 0x7432, 0x7342, 0x00b6, 0x7422, 0x7242,
|
||||
0x7412, 0x6332, 0x6332, 0x6142, 0x6142, 0x6322, 0x6322, 0x6232,
|
||||
0x6232, 0x7041, 0x7301, 0x6031, 0x6031, 0x5312, 0x5312, 0x5312,
|
||||
0x5312, 0x5132, 0x5132, 0x5132, 0x5132, 0x5222, 0x5222, 0x5222,
|
||||
0x5222, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212, 0x4212,
|
||||
0x4212, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122, 0x4122,
|
||||
0x4122, 0x5201, 0x5201, 0x5201, 0x5201, 0x5021, 0x5021, 0x5021,
|
||||
0x5021, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4000, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101, 0x3101,
|
||||
0x3101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0xf003, 0x3772, 0x3762, 0x2672, 0x2672, 0x2752, 0x2752,
|
||||
0x2572, 0x2572, 0xf002, 0x2662, 0x2742, 0x2472, 0x2562, 0xf001,
|
||||
0x1652, 0x1732, 0xf002, 0x2372, 0x2552, 0x1722, 0x1722, 0xf001,
|
||||
0x1272, 0x1642, 0xf001, 0x1462, 0x1712, 0xf002, 0x1172, 0x1172,
|
||||
0x2701, 0x2071, 0xf001, 0x1632, 0x1362, 0xf001, 0x1542, 0x1452,
|
||||
0xf002, 0x1442, 0x1442, 0x2601, 0x2501, 0xf001, 0x1612, 0x1061,
|
||||
0xf001, 0x1532, 0x1352, 0xf001, 0x1522, 0x1252, 0xf001, 0x1051,
|
||||
0x1401,
|
||||
|
||||
/* huffTable13[497] */
|
||||
0xf006, 0x0041, 0x0082, 0x00c3, 0x00e4, 0x0105, 0x0116, 0x011f,
|
||||
0x0130, 0x0139, 0x013e, 0x0143, 0x0146, 0x6212, 0x6122, 0x6201,
|
||||
0x6021, 0x4112, 0x4112, 0x4112, 0x4112, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0xf006, 0x0108, 0x0111, 0x011a, 0x0123, 0x012c, 0x0131,
|
||||
0x0136, 0x013f, 0x0144, 0x0147, 0x014c, 0x0151, 0x0156, 0x015b,
|
||||
0x6f12, 0x61f2, 0x60f1, 0x0160, 0x0163, 0x0166, 0x62e2, 0x0169,
|
||||
0x6e12, 0x61e2, 0x016c, 0x016f, 0x0172, 0x0175, 0x0178, 0x017b,
|
||||
0x66c2, 0x6d32, 0x017e, 0x6d22, 0x62d2, 0x6d12, 0x67b2, 0x0181,
|
||||
0x0184, 0x63c2, 0x0187, 0x6b42, 0x51d2, 0x51d2, 0x6d01, 0x60d1,
|
||||
0x6a82, 0x68a2, 0x6c42, 0x64c2, 0x6b62, 0x66b2, 0x5c32, 0x5c32,
|
||||
0x5c22, 0x5c22, 0x52c2, 0x52c2, 0x5b52, 0x5b52, 0x65b2, 0x6982,
|
||||
0x5c12, 0x5c12, 0xf006, 0x51c2, 0x51c2, 0x6892, 0x6c01, 0x50c1,
|
||||
0x50c1, 0x64b2, 0x6a62, 0x66a2, 0x6972, 0x5b32, 0x5b32, 0x53b2,
|
||||
0x53b2, 0x6882, 0x6a52, 0x5b22, 0x5b22, 0x65a2, 0x6962, 0x54a2,
|
||||
0x54a2, 0x6872, 0x6782, 0x5492, 0x5492, 0x6772, 0x6672, 0x42b2,
|
||||
0x42b2, 0x42b2, 0x42b2, 0x4b12, 0x4b12, 0x4b12, 0x4b12, 0x41b2,
|
||||
0x41b2, 0x41b2, 0x41b2, 0x5b01, 0x5b01, 0x50b1, 0x50b1, 0x5692,
|
||||
0x5692, 0x5a42, 0x5a42, 0x5a32, 0x5a32, 0x53a2, 0x53a2, 0x5952,
|
||||
0x5952, 0x5592, 0x5592, 0x4a22, 0x4a22, 0x4a22, 0x4a22, 0x42a2,
|
||||
0x42a2, 0x42a2, 0x42a2, 0xf005, 0x4a12, 0x4a12, 0x41a2, 0x41a2,
|
||||
0x5a01, 0x5862, 0x40a1, 0x40a1, 0x5682, 0x5942, 0x4392, 0x4392,
|
||||
0x5932, 0x5852, 0x5582, 0x5762, 0x4922, 0x4922, 0x4292, 0x4292,
|
||||
0x5752, 0x5572, 0x4832, 0x4832, 0x4382, 0x4382, 0x5662, 0x5742,
|
||||
0x5472, 0x5652, 0x5562, 0x5372, 0xf005, 0x3912, 0x3912, 0x3912,
|
||||
0x3912, 0x3192, 0x3192, 0x3192, 0x3192, 0x4901, 0x4901, 0x4091,
|
||||
0x4091, 0x4842, 0x4842, 0x4482, 0x4482, 0x4272, 0x4272, 0x5642,
|
||||
0x5462, 0x3822, 0x3822, 0x3822, 0x3822, 0x3282, 0x3282, 0x3282,
|
||||
0x3282, 0x3812, 0x3812, 0x3812, 0x3812, 0xf004, 0x4732, 0x4722,
|
||||
0x3712, 0x3712, 0x3172, 0x3172, 0x4552, 0x4701, 0x4071, 0x4632,
|
||||
0x4362, 0x4542, 0x4452, 0x4622, 0x4262, 0x4532, 0xf003, 0x2182,
|
||||
0x2182, 0x3801, 0x3081, 0x3612, 0x3162, 0x3601, 0x3061, 0xf004,
|
||||
0x4352, 0x4442, 0x3522, 0x3522, 0x3252, 0x3252, 0x3501, 0x3501,
|
||||
0x2512, 0x2512, 0x2512, 0x2512, 0x2152, 0x2152, 0x2152, 0x2152,
|
||||
0xf003, 0x3432, 0x3342, 0x3051, 0x3422, 0x3242, 0x3332, 0x2412,
|
||||
0x2412, 0xf002, 0x1142, 0x1142, 0x2401, 0x2041, 0xf002, 0x2322,
|
||||
0x2232, 0x1312, 0x1312, 0xf001, 0x1132, 0x1301, 0xf001, 0x1031,
|
||||
0x1222, 0xf003, 0x0082, 0x008b, 0x008e, 0x0091, 0x0094, 0x0097,
|
||||
0x3ce2, 0x3dd2, 0xf003, 0x0093, 0x3eb2, 0x3be2, 0x3f92, 0x39f2,
|
||||
0x3ae2, 0x3db2, 0x3bd2, 0xf003, 0x3f82, 0x38f2, 0x3cc2, 0x008d,
|
||||
0x3e82, 0x0090, 0x27f2, 0x27f2, 0xf003, 0x2ad2, 0x2ad2, 0x3da2,
|
||||
0x3cb2, 0x3bc2, 0x36f2, 0x2f62, 0x2f62, 0xf002, 0x28e2, 0x2f52,
|
||||
0x2d92, 0x29d2, 0xf002, 0x25f2, 0x27e2, 0x2ca2, 0x2bb2, 0xf003,
|
||||
0x2f42, 0x2f42, 0x24f2, 0x24f2, 0x3ac2, 0x36e2, 0x23f2, 0x23f2,
|
||||
0xf002, 0x1f32, 0x1f32, 0x2d82, 0x28d2, 0xf001, 0x1f22, 0x12f2,
|
||||
0xf002, 0x2e62, 0x2c92, 0x1f01, 0x1f01, 0xf002, 0x29c2, 0x2e52,
|
||||
0x1ba2, 0x1ba2, 0xf002, 0x2d72, 0x27d2, 0x1e42, 0x1e42, 0xf002,
|
||||
0x28c2, 0x26d2, 0x1e32, 0x1e32, 0xf002, 0x19b2, 0x19b2, 0x2b92,
|
||||
0x2aa2, 0xf001, 0x1ab2, 0x15e2, 0xf001, 0x14e2, 0x1c82, 0xf001,
|
||||
0x1d62, 0x13e2, 0xf001, 0x1e22, 0x1e01, 0xf001, 0x10e1, 0x1d52,
|
||||
0xf001, 0x15d2, 0x1c72, 0xf001, 0x17c2, 0x1d42, 0xf001, 0x1b82,
|
||||
0x18b2, 0xf001, 0x14d2, 0x1a92, 0xf001, 0x19a2, 0x1c62, 0xf001,
|
||||
0x13d2, 0x1b72, 0xf001, 0x1c52, 0x15c2, 0xf001, 0x1992, 0x1a72,
|
||||
0xf001, 0x17a2, 0x1792, 0xf003, 0x0023, 0x3df2, 0x2de2, 0x2de2,
|
||||
0x1ff2, 0x1ff2, 0x1ff2, 0x1ff2, 0xf001, 0x1fe2, 0x1fd2, 0xf001,
|
||||
0x1ee2, 0x1fc2, 0xf001, 0x1ed2, 0x1fb2, 0xf001, 0x1bf2, 0x1ec2,
|
||||
0xf002, 0x1cd2, 0x1cd2, 0x2fa2, 0x29e2, 0xf001, 0x1af2, 0x1dc2,
|
||||
0xf001, 0x1ea2, 0x1e92, 0xf001, 0x1f72, 0x1e72, 0xf001, 0x1ef2,
|
||||
0x1cf2,
|
||||
|
||||
/* huffTable15[580] */
|
||||
0xf008, 0x0101, 0x0122, 0x0143, 0x0154, 0x0165, 0x0176, 0x017f,
|
||||
0x0188, 0x0199, 0x01a2, 0x01ab, 0x01b4, 0x01bd, 0x01c2, 0x01cb,
|
||||
0x01d4, 0x01d9, 0x01de, 0x01e3, 0x01e8, 0x01ed, 0x01f2, 0x01f7,
|
||||
0x01fc, 0x0201, 0x0204, 0x0207, 0x020a, 0x020f, 0x0212, 0x0215,
|
||||
0x021a, 0x021d, 0x0220, 0x8192, 0x0223, 0x0226, 0x0229, 0x022c,
|
||||
0x022f, 0x8822, 0x8282, 0x8812, 0x8182, 0x0232, 0x0235, 0x0238,
|
||||
0x023b, 0x8722, 0x8272, 0x8462, 0x8712, 0x8552, 0x8172, 0x023e,
|
||||
0x8632, 0x8362, 0x8542, 0x8452, 0x8622, 0x8262, 0x8612, 0x0241,
|
||||
0x8532, 0x7162, 0x7162, 0x8352, 0x8442, 0x7522, 0x7522, 0x7252,
|
||||
0x7252, 0x7512, 0x7512, 0x7152, 0x7152, 0x8501, 0x8051, 0x7432,
|
||||
0x7432, 0x7342, 0x7342, 0x7422, 0x7422, 0x7242, 0x7242, 0x7332,
|
||||
0x7332, 0x6142, 0x6142, 0x6142, 0x6142, 0x7412, 0x7412, 0x7401,
|
||||
0x7401, 0x6322, 0x6322, 0x6322, 0x6322, 0x6232, 0x6232, 0x6232,
|
||||
0x6232, 0x7041, 0x7041, 0x7301, 0x7301, 0x6312, 0x6312, 0x6312,
|
||||
0x6312, 0x6132, 0x6132, 0x6132, 0x6132, 0x6031, 0x6031, 0x6031,
|
||||
0x6031, 0x5222, 0x5222, 0x5222, 0x5222, 0x5222, 0x5222, 0x5222,
|
||||
0x5222, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212,
|
||||
0x5212, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122,
|
||||
0x5122, 0x5201, 0x5201, 0x5201, 0x5201, 0x5201, 0x5201, 0x5201,
|
||||
0x5201, 0x5021, 0x5021, 0x5021, 0x5021, 0x5021, 0x5021, 0x5021,
|
||||
0x5021, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112, 0x3112,
|
||||
0x3112, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011,
|
||||
0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011,
|
||||
0x4011, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000, 0xf005, 0x5ff2, 0x5fe2, 0x5ef2, 0x5fd2, 0x4ee2, 0x4ee2,
|
||||
0x5df2, 0x5fc2, 0x5cf2, 0x5ed2, 0x5de2, 0x5fb2, 0x4bf2, 0x4bf2,
|
||||
0x5ec2, 0x5ce2, 0x4dd2, 0x4dd2, 0x4fa2, 0x4fa2, 0x4af2, 0x4af2,
|
||||
0x4eb2, 0x4eb2, 0x4be2, 0x4be2, 0x4dc2, 0x4dc2, 0x4cd2, 0x4cd2,
|
||||
0x4f92, 0x4f92, 0xf005, 0x49f2, 0x49f2, 0x4ae2, 0x4ae2, 0x4db2,
|
||||
0x4db2, 0x4bd2, 0x4bd2, 0x4f82, 0x4f82, 0x48f2, 0x48f2, 0x4cc2,
|
||||
0x4cc2, 0x4e92, 0x4e92, 0x49e2, 0x49e2, 0x4f72, 0x4f72, 0x47f2,
|
||||
0x47f2, 0x4da2, 0x4da2, 0x4ad2, 0x4ad2, 0x4cb2, 0x4cb2, 0x4f62,
|
||||
0x4f62, 0x5ea2, 0x5f01, 0xf004, 0x3bc2, 0x3bc2, 0x36f2, 0x36f2,
|
||||
0x4e82, 0x48e2, 0x4f52, 0x4d92, 0x35f2, 0x35f2, 0x3e72, 0x3e72,
|
||||
0x37e2, 0x37e2, 0x3ca2, 0x3ca2, 0xf004, 0x3ac2, 0x3ac2, 0x3bb2,
|
||||
0x3bb2, 0x49d2, 0x4d82, 0x3f42, 0x3f42, 0x34f2, 0x34f2, 0x3f32,
|
||||
0x3f32, 0x33f2, 0x33f2, 0x38d2, 0x38d2, 0xf004, 0x36e2, 0x36e2,
|
||||
0x3f22, 0x3f22, 0x32f2, 0x32f2, 0x4e62, 0x40f1, 0x3f12, 0x3f12,
|
||||
0x31f2, 0x31f2, 0x3c92, 0x3c92, 0x39c2, 0x39c2, 0xf003, 0x3e52,
|
||||
0x3ba2, 0x3ab2, 0x35e2, 0x3d72, 0x37d2, 0x3e42, 0x34e2, 0xf003,
|
||||
0x3c82, 0x38c2, 0x3e32, 0x3d62, 0x36d2, 0x33e2, 0x3b92, 0x39b2,
|
||||
0xf004, 0x3e22, 0x3e22, 0x3aa2, 0x3aa2, 0x32e2, 0x32e2, 0x3e12,
|
||||
0x3e12, 0x31e2, 0x31e2, 0x4e01, 0x40e1, 0x3d52, 0x3d52, 0x35d2,
|
||||
0x35d2, 0xf003, 0x3c72, 0x37c2, 0x3d42, 0x3b82, 0x24d2, 0x24d2,
|
||||
0x38b2, 0x3a92, 0xf003, 0x39a2, 0x3c62, 0x36c2, 0x3d32, 0x23d2,
|
||||
0x23d2, 0x22d2, 0x22d2, 0xf003, 0x3d22, 0x3d01, 0x2d12, 0x2d12,
|
||||
0x2b72, 0x2b72, 0x27b2, 0x27b2, 0xf003, 0x21d2, 0x21d2, 0x3c52,
|
||||
0x30d1, 0x25c2, 0x25c2, 0x2a82, 0x2a82, 0xf002, 0x28a2, 0x2c42,
|
||||
0x24c2, 0x2b62, 0xf003, 0x26b2, 0x26b2, 0x3992, 0x3c01, 0x2c32,
|
||||
0x2c32, 0x23c2, 0x23c2, 0xf003, 0x2a72, 0x2a72, 0x27a2, 0x27a2,
|
||||
0x26a2, 0x26a2, 0x30c1, 0x3b01, 0xf002, 0x12c2, 0x12c2, 0x2c22,
|
||||
0x2b52, 0xf002, 0x25b2, 0x2c12, 0x2982, 0x2892, 0xf002, 0x21c2,
|
||||
0x2b42, 0x24b2, 0x2a62, 0xf002, 0x2b32, 0x2972, 0x13b2, 0x13b2,
|
||||
0xf002, 0x2792, 0x2882, 0x2b22, 0x2a52, 0xf002, 0x12b2, 0x12b2,
|
||||
0x25a2, 0x2b12, 0xf002, 0x11b2, 0x11b2, 0x20b1, 0x2962, 0xf002,
|
||||
0x2692, 0x2a42, 0x24a2, 0x2872, 0xf002, 0x2782, 0x2a32, 0x13a2,
|
||||
0x13a2, 0xf001, 0x1952, 0x1592, 0xf001, 0x1a22, 0x12a2, 0xf001,
|
||||
0x1a12, 0x11a2, 0xf002, 0x2a01, 0x20a1, 0x1862, 0x1862, 0xf001,
|
||||
0x1682, 0x1942, 0xf001, 0x1492, 0x1932, 0xf002, 0x1392, 0x1392,
|
||||
0x2772, 0x2901, 0xf001, 0x1852, 0x1582, 0xf001, 0x1922, 0x1762,
|
||||
0xf001, 0x1672, 0x1292, 0xf001, 0x1912, 0x1091, 0xf001, 0x1842,
|
||||
0x1482, 0xf001, 0x1752, 0x1572, 0xf001, 0x1832, 0x1382, 0xf001,
|
||||
0x1662, 0x1742, 0xf001, 0x1472, 0x1801, 0xf001, 0x1081, 0x1652,
|
||||
0xf001, 0x1562, 0x1732, 0xf001, 0x1372, 0x1642, 0xf001, 0x1701,
|
||||
0x1071, 0xf001, 0x1601, 0x1061,
|
||||
|
||||
/* huffTable16[651] */
|
||||
0xf008, 0x0101, 0x010a, 0x0113, 0x8ff2, 0x0118, 0x011d, 0x0120,
|
||||
0x82f2, 0x0131, 0x8f12, 0x81f2, 0x0134, 0x0145, 0x0156, 0x0167,
|
||||
0x0178, 0x0189, 0x019a, 0x01a3, 0x01ac, 0x01b5, 0x01be, 0x01c7,
|
||||
0x01d0, 0x01d9, 0x01de, 0x01e3, 0x01e6, 0x01eb, 0x01f0, 0x8152,
|
||||
0x01f3, 0x01f6, 0x01f9, 0x01fc, 0x8412, 0x8142, 0x01ff, 0x8322,
|
||||
0x8232, 0x7312, 0x7312, 0x7132, 0x7132, 0x8301, 0x8031, 0x7222,
|
||||
0x7222, 0x6212, 0x6212, 0x6212, 0x6212, 0x6122, 0x6122, 0x6122,
|
||||
0x6122, 0x6201, 0x6201, 0x6201, 0x6201, 0x6021, 0x6021, 0x6021,
|
||||
0x6021, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011, 0x3011,
|
||||
0x3011, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0xf003, 0x3fe2, 0x3ef2, 0x3fd2, 0x3df2, 0x3fc2, 0x3cf2,
|
||||
0x3fb2, 0x3bf2, 0xf003, 0x2fa2, 0x2fa2, 0x3af2, 0x3f92, 0x39f2,
|
||||
0x38f2, 0x2f82, 0x2f82, 0xf002, 0x2f72, 0x27f2, 0x2f62, 0x26f2,
|
||||
0xf002, 0x2f52, 0x25f2, 0x1f42, 0x1f42, 0xf001, 0x14f2, 0x13f2,
|
||||
0xf004, 0x10f1, 0x10f1, 0x10f1, 0x10f1, 0x10f1, 0x10f1, 0x10f1,
|
||||
0x10f1, 0x2f32, 0x2f32, 0x2f32, 0x2f32, 0x00e2, 0x00f3, 0x00fc,
|
||||
0x0105, 0xf001, 0x1f22, 0x1f01, 0xf004, 0x00fa, 0x00ff, 0x0104,
|
||||
0x0109, 0x010c, 0x0111, 0x0116, 0x0119, 0x011e, 0x0123, 0x0128,
|
||||
0x43e2, 0x012d, 0x0130, 0x0133, 0x0136, 0xf004, 0x0128, 0x012b,
|
||||
0x012e, 0x4d01, 0x0131, 0x0134, 0x0137, 0x4c32, 0x013a, 0x4c12,
|
||||
0x40c1, 0x013d, 0x32e2, 0x32e2, 0x4e22, 0x4e12, 0xf004, 0x43d2,
|
||||
0x4d22, 0x42d2, 0x41d2, 0x4b32, 0x012f, 0x3d12, 0x3d12, 0x44c2,
|
||||
0x4b62, 0x43c2, 0x47a2, 0x3c22, 0x3c22, 0x42c2, 0x45b2, 0xf004,
|
||||
0x41c2, 0x4c01, 0x4b42, 0x44b2, 0x4a62, 0x46a2, 0x33b2, 0x33b2,
|
||||
0x4a52, 0x45a2, 0x3b22, 0x3b22, 0x32b2, 0x32b2, 0x3b12, 0x3b12,
|
||||
0xf004, 0x31b2, 0x31b2, 0x4b01, 0x40b1, 0x4962, 0x4692, 0x4a42,
|
||||
0x44a2, 0x4872, 0x4782, 0x33a2, 0x33a2, 0x4a32, 0x4952, 0x3a22,
|
||||
0x3a22, 0xf004, 0x4592, 0x4862, 0x31a2, 0x31a2, 0x4682, 0x4772,
|
||||
0x3492, 0x3492, 0x4942, 0x4752, 0x3762, 0x3762, 0x22a2, 0x22a2,
|
||||
0x22a2, 0x22a2, 0xf003, 0x2a12, 0x2a12, 0x3a01, 0x30a1, 0x3932,
|
||||
0x3392, 0x3852, 0x3582, 0xf003, 0x2922, 0x2922, 0x2292, 0x2292,
|
||||
0x3672, 0x3901, 0x2912, 0x2912, 0xf003, 0x2192, 0x2192, 0x3091,
|
||||
0x3842, 0x3482, 0x3572, 0x3832, 0x3382, 0xf003, 0x3662, 0x3822,
|
||||
0x2282, 0x2282, 0x3742, 0x3472, 0x2812, 0x2812, 0xf003, 0x2182,
|
||||
0x2182, 0x2081, 0x2081, 0x3801, 0x3652, 0x2732, 0x2732, 0xf003,
|
||||
0x2372, 0x2372, 0x3562, 0x3642, 0x2722, 0x2722, 0x2272, 0x2272,
|
||||
0xf003, 0x3462, 0x3552, 0x2701, 0x2701, 0x1712, 0x1712, 0x1712,
|
||||
0x1712, 0xf002, 0x1172, 0x1172, 0x2071, 0x2632, 0xf002, 0x2362,
|
||||
0x2542, 0x2452, 0x2622, 0xf001, 0x1262, 0x1612, 0xf002, 0x1162,
|
||||
0x1162, 0x2601, 0x2061, 0xf002, 0x1352, 0x1352, 0x2532, 0x2442,
|
||||
0xf001, 0x1522, 0x1252, 0xf001, 0x1512, 0x1501, 0xf001, 0x1432,
|
||||
0x1342, 0xf001, 0x1051, 0x1422, 0xf001, 0x1242, 0x1332, 0xf001,
|
||||
0x1401, 0x1041, 0xf004, 0x4ec2, 0x0086, 0x3ed2, 0x3ed2, 0x39e2,
|
||||
0x39e2, 0x4ae2, 0x49d2, 0x2ee2, 0x2ee2, 0x2ee2, 0x2ee2, 0x3de2,
|
||||
0x3de2, 0x3be2, 0x3be2, 0xf003, 0x2eb2, 0x2eb2, 0x2dc2, 0x2dc2,
|
||||
0x3cd2, 0x3bd2, 0x2ea2, 0x2ea2, 0xf003, 0x2cc2, 0x2cc2, 0x3da2,
|
||||
0x3ad2, 0x3e72, 0x3ca2, 0x2ac2, 0x2ac2, 0xf003, 0x39c2, 0x3d72,
|
||||
0x2e52, 0x2e52, 0x1db2, 0x1db2, 0x1db2, 0x1db2, 0xf002, 0x1e92,
|
||||
0x1e92, 0x2cb2, 0x2bc2, 0xf002, 0x2e82, 0x28e2, 0x2d92, 0x27e2,
|
||||
0xf002, 0x2bb2, 0x2d82, 0x28d2, 0x2e62, 0xf001, 0x16e2, 0x1c92,
|
||||
0xf002, 0x2ba2, 0x2ab2, 0x25e2, 0x27d2, 0xf002, 0x1e42, 0x1e42,
|
||||
0x24e2, 0x2c82, 0xf001, 0x18c2, 0x1e32, 0xf002, 0x1d62, 0x1d62,
|
||||
0x26d2, 0x2b92, 0xf002, 0x29b2, 0x2aa2, 0x11e2, 0x11e2, 0xf002,
|
||||
0x14d2, 0x14d2, 0x28b2, 0x29a2, 0xf002, 0x1b72, 0x1b72, 0x27b2,
|
||||
0x20d1, 0xf001, 0x1e01, 0x10e1, 0xf001, 0x1d52, 0x15d2, 0xf001,
|
||||
0x1c72, 0x17c2, 0xf001, 0x1d42, 0x1b82, 0xf001, 0x1a92, 0x1c62,
|
||||
0xf001, 0x16c2, 0x1d32, 0xf001, 0x1c52, 0x15c2, 0xf001, 0x1a82,
|
||||
0x18a2, 0xf001, 0x1992, 0x1c42, 0xf001, 0x16b2, 0x1a72, 0xf001,
|
||||
0x1b52, 0x1982, 0xf001, 0x1892, 0x1972, 0xf001, 0x1792, 0x1882,
|
||||
0xf001, 0x1ce2, 0x1dd2,
|
||||
|
||||
/* huffTable24[705] */
|
||||
0xf009, 0x8fe2, 0x8fe2, 0x8ef2, 0x8ef2, 0x8fd2, 0x8fd2, 0x8df2,
|
||||
0x8df2, 0x8fc2, 0x8fc2, 0x8cf2, 0x8cf2, 0x8fb2, 0x8fb2, 0x8bf2,
|
||||
0x8bf2, 0x7af2, 0x7af2, 0x7af2, 0x7af2, 0x8fa2, 0x8fa2, 0x8f92,
|
||||
0x8f92, 0x79f2, 0x79f2, 0x79f2, 0x79f2, 0x78f2, 0x78f2, 0x78f2,
|
||||
0x78f2, 0x8f82, 0x8f82, 0x8f72, 0x8f72, 0x77f2, 0x77f2, 0x77f2,
|
||||
0x77f2, 0x7f62, 0x7f62, 0x7f62, 0x7f62, 0x76f2, 0x76f2, 0x76f2,
|
||||
0x76f2, 0x7f52, 0x7f52, 0x7f52, 0x7f52, 0x75f2, 0x75f2, 0x75f2,
|
||||
0x75f2, 0x7f42, 0x7f42, 0x7f42, 0x7f42, 0x74f2, 0x74f2, 0x74f2,
|
||||
0x74f2, 0x7f32, 0x7f32, 0x7f32, 0x7f32, 0x73f2, 0x73f2, 0x73f2,
|
||||
0x73f2, 0x7f22, 0x7f22, 0x7f22, 0x7f22, 0x72f2, 0x72f2, 0x72f2,
|
||||
0x72f2, 0x71f2, 0x71f2, 0x71f2, 0x71f2, 0x8f12, 0x8f12, 0x80f1,
|
||||
0x80f1, 0x9f01, 0x0201, 0x0206, 0x020b, 0x0210, 0x0215, 0x021a,
|
||||
0x021f, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2,
|
||||
0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2,
|
||||
0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2,
|
||||
0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2, 0x4ff2,
|
||||
0x4ff2, 0x0224, 0x0229, 0x0232, 0x0237, 0x023a, 0x023f, 0x0242,
|
||||
0x0245, 0x024a, 0x024d, 0x0250, 0x0253, 0x0256, 0x0259, 0x025c,
|
||||
0x025f, 0x0262, 0x0265, 0x0268, 0x026b, 0x026e, 0x0271, 0x0274,
|
||||
0x0277, 0x027a, 0x027d, 0x0280, 0x0283, 0x0288, 0x028b, 0x028e,
|
||||
0x0291, 0x0294, 0x0297, 0x029a, 0x029f, 0x94b2, 0x02a4, 0x02a7,
|
||||
0x02aa, 0x93b2, 0x9882, 0x02af, 0x92b2, 0x02b2, 0x02b5, 0x9692,
|
||||
0x94a2, 0x02b8, 0x9782, 0x9a32, 0x93a2, 0x9952, 0x9592, 0x9a22,
|
||||
0x92a2, 0x91a2, 0x9862, 0x9682, 0x9772, 0x9942, 0x9492, 0x9932,
|
||||
0x9392, 0x9852, 0x9582, 0x9922, 0x9762, 0x9672, 0x9292, 0x9912,
|
||||
0x9192, 0x9842, 0x9482, 0x9752, 0x9572, 0x9832, 0x9382, 0x9662,
|
||||
0x9822, 0x9282, 0x9812, 0x9742, 0x9472, 0x9182, 0x02bb, 0x9652,
|
||||
0x9562, 0x9712, 0x02be, 0x8372, 0x8372, 0x9732, 0x9722, 0x8272,
|
||||
0x8272, 0x8642, 0x8642, 0x8462, 0x8462, 0x8552, 0x8552, 0x8172,
|
||||
0x8172, 0x8632, 0x8632, 0x8362, 0x8362, 0x8542, 0x8542, 0x8452,
|
||||
0x8452, 0x8622, 0x8622, 0x8262, 0x8262, 0x8612, 0x8612, 0x8162,
|
||||
0x8162, 0x9601, 0x9061, 0x8532, 0x8532, 0x8352, 0x8352, 0x8442,
|
||||
0x8442, 0x8522, 0x8522, 0x8252, 0x8252, 0x8512, 0x8512, 0x9501,
|
||||
0x9051, 0x7152, 0x7152, 0x7152, 0x7152, 0x8432, 0x8432, 0x8342,
|
||||
0x8342, 0x7422, 0x7422, 0x7422, 0x7422, 0x7242, 0x7242, 0x7242,
|
||||
0x7242, 0x7332, 0x7332, 0x7332, 0x7332, 0x7412, 0x7412, 0x7412,
|
||||
0x7412, 0x7142, 0x7142, 0x7142, 0x7142, 0x8401, 0x8401, 0x8041,
|
||||
0x8041, 0x7322, 0x7322, 0x7322, 0x7322, 0x7232, 0x7232, 0x7232,
|
||||
0x7232, 0x6312, 0x6312, 0x6312, 0x6312, 0x6312, 0x6312, 0x6312,
|
||||
0x6312, 0x6132, 0x6132, 0x6132, 0x6132, 0x6132, 0x6132, 0x6132,
|
||||
0x6132, 0x7301, 0x7301, 0x7301, 0x7301, 0x7031, 0x7031, 0x7031,
|
||||
0x7031, 0x6222, 0x6222, 0x6222, 0x6222, 0x6222, 0x6222, 0x6222,
|
||||
0x6222, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212,
|
||||
0x5212, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212, 0x5212,
|
||||
0x5212, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122,
|
||||
0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122, 0x5122,
|
||||
0x5122, 0x6201, 0x6201, 0x6201, 0x6201, 0x6201, 0x6201, 0x6201,
|
||||
0x6201, 0x6021, 0x6021, 0x6021, 0x6021, 0x6021, 0x6021, 0x6021,
|
||||
0x6021, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112, 0x4112,
|
||||
0x4112, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101, 0x4101,
|
||||
0x4101, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011,
|
||||
0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011,
|
||||
0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011,
|
||||
0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011, 0x4011,
|
||||
0x4011, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,
|
||||
0x4000, 0xf002, 0x2ee2, 0x2ed2, 0x2de2, 0x2ec2, 0xf002, 0x2ce2,
|
||||
0x2dd2, 0x2eb2, 0x2be2, 0xf002, 0x2dc2, 0x2cd2, 0x2ea2, 0x2ae2,
|
||||
0xf002, 0x2db2, 0x2bd2, 0x2cc2, 0x2e92, 0xf002, 0x29e2, 0x2da2,
|
||||
0x2ad2, 0x2cb2, 0xf002, 0x2bc2, 0x2e82, 0x28e2, 0x2d92, 0xf002,
|
||||
0x29d2, 0x2e72, 0x27e2, 0x2ca2, 0xf002, 0x2ac2, 0x2bb2, 0x2d82,
|
||||
0x28d2, 0xf003, 0x3e01, 0x30e1, 0x2d01, 0x2d01, 0x16e2, 0x16e2,
|
||||
0x16e2, 0x16e2, 0xf002, 0x2e62, 0x2c92, 0x19c2, 0x19c2, 0xf001,
|
||||
0x1e52, 0x1ab2, 0xf002, 0x15e2, 0x15e2, 0x2ba2, 0x2d72, 0xf001,
|
||||
0x17d2, 0x14e2, 0xf001, 0x1c82, 0x18c2, 0xf002, 0x2e42, 0x2e22,
|
||||
0x1e32, 0x1e32, 0xf001, 0x1d62, 0x16d2, 0xf001, 0x13e2, 0x1b92,
|
||||
0xf001, 0x19b2, 0x1aa2, 0xf001, 0x12e2, 0x1e12, 0xf001, 0x11e2,
|
||||
0x1d52, 0xf001, 0x15d2, 0x1c72, 0xf001, 0x17c2, 0x1d42, 0xf001,
|
||||
0x1b82, 0x18b2, 0xf001, 0x14d2, 0x1a92, 0xf001, 0x19a2, 0x1c62,
|
||||
0xf001, 0x16c2, 0x1d32, 0xf001, 0x13d2, 0x1d22, 0xf001, 0x12d2,
|
||||
0x1d12, 0xf001, 0x1b72, 0x17b2, 0xf001, 0x11d2, 0x1c52, 0xf001,
|
||||
0x15c2, 0x1a82, 0xf001, 0x18a2, 0x1992, 0xf001, 0x1c42, 0x14c2,
|
||||
0xf001, 0x1b62, 0x16b2, 0xf002, 0x20d1, 0x2c01, 0x1c32, 0x1c32,
|
||||
0xf001, 0x13c2, 0x1a72, 0xf001, 0x17a2, 0x1c22, 0xf001, 0x12c2,
|
||||
0x1b52, 0xf001, 0x15b2, 0x1c12, 0xf001, 0x1982, 0x1892, 0xf001,
|
||||
0x11c2, 0x1b42, 0xf002, 0x20c1, 0x2b01, 0x1b32, 0x1b32, 0xf002,
|
||||
0x20b1, 0x2a01, 0x1a12, 0x1a12, 0xf001, 0x1a62, 0x16a2, 0xf001,
|
||||
0x1972, 0x1792, 0xf002, 0x20a1, 0x2901, 0x1091, 0x1091, 0xf001,
|
||||
0x1b22, 0x1a52, 0xf001, 0x15a2, 0x1b12, 0xf001, 0x11b2, 0x1962,
|
||||
0xf001, 0x1a42, 0x1872, 0xf001, 0x1801, 0x1081, 0xf001, 0x1701,
|
||||
0x1071,
|
||||
};
|
||||
|
||||
#define HUFF_OFFSET_01 0
|
||||
#define HUFF_OFFSET_02 ( 9 + HUFF_OFFSET_01)
|
||||
#define HUFF_OFFSET_03 ( 65 + HUFF_OFFSET_02)
|
||||
#define HUFF_OFFSET_05 ( 65 + HUFF_OFFSET_03)
|
||||
#define HUFF_OFFSET_06 (257 + HUFF_OFFSET_05)
|
||||
#define HUFF_OFFSET_07 (129 + HUFF_OFFSET_06)
|
||||
#define HUFF_OFFSET_08 (110 + HUFF_OFFSET_07)
|
||||
#define HUFF_OFFSET_09 (280 + HUFF_OFFSET_08)
|
||||
#define HUFF_OFFSET_10 ( 93 + HUFF_OFFSET_09)
|
||||
#define HUFF_OFFSET_11 (320 + HUFF_OFFSET_10)
|
||||
#define HUFF_OFFSET_12 (296 + HUFF_OFFSET_11)
|
||||
#define HUFF_OFFSET_13 (185 + HUFF_OFFSET_12)
|
||||
#define HUFF_OFFSET_15 (497 + HUFF_OFFSET_13)
|
||||
#define HUFF_OFFSET_16 (580 + HUFF_OFFSET_15)
|
||||
#define HUFF_OFFSET_24 (651 + HUFF_OFFSET_16)
|
||||
|
||||
const int huffTabOffset[HUFF_PAIRTABS] = {
|
||||
0,
|
||||
HUFF_OFFSET_01,
|
||||
HUFF_OFFSET_02,
|
||||
HUFF_OFFSET_03,
|
||||
0,
|
||||
HUFF_OFFSET_05,
|
||||
HUFF_OFFSET_06,
|
||||
HUFF_OFFSET_07,
|
||||
HUFF_OFFSET_08,
|
||||
HUFF_OFFSET_09,
|
||||
HUFF_OFFSET_10,
|
||||
HUFF_OFFSET_11,
|
||||
HUFF_OFFSET_12,
|
||||
HUFF_OFFSET_13,
|
||||
0,
|
||||
HUFF_OFFSET_15,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_16,
|
||||
HUFF_OFFSET_24,
|
||||
HUFF_OFFSET_24,
|
||||
HUFF_OFFSET_24,
|
||||
HUFF_OFFSET_24,
|
||||
HUFF_OFFSET_24,
|
||||
HUFF_OFFSET_24,
|
||||
HUFF_OFFSET_24,
|
||||
HUFF_OFFSET_24,
|
||||
};
|
||||
|
||||
const HuffTabLookup huffTabLookup[HUFF_PAIRTABS] = {
|
||||
{ 0, noBits },
|
||||
{ 0, oneShot },
|
||||
{ 0, oneShot },
|
||||
{ 0, oneShot },
|
||||
{ 0, invalidTab },
|
||||
{ 0, oneShot },
|
||||
{ 0, oneShot },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 0, invalidTab },
|
||||
{ 0, loopNoLinbits },
|
||||
{ 1, loopLinbits },
|
||||
{ 2, loopLinbits },
|
||||
{ 3, loopLinbits },
|
||||
{ 4, loopLinbits },
|
||||
{ 6, loopLinbits },
|
||||
{ 8, loopLinbits },
|
||||
{ 10, loopLinbits },
|
||||
{ 13, loopLinbits },
|
||||
{ 4, loopLinbits },
|
||||
{ 5, loopLinbits },
|
||||
{ 6, loopLinbits },
|
||||
{ 7, loopLinbits },
|
||||
{ 8, loopLinbits },
|
||||
{ 9, loopLinbits },
|
||||
{ 11, loopLinbits },
|
||||
{ 13, loopLinbits },
|
||||
};
|
||||
|
||||
/* tables for quadruples
|
||||
* format 0xAB
|
||||
* A = length of codeword
|
||||
* B = codeword
|
||||
*/
|
||||
const unsigned char quadTable[64+16] = {
|
||||
/* table A */
|
||||
0x6b, 0x6f, 0x6d, 0x6e, 0x67, 0x65, 0x59, 0x59,
|
||||
0x56, 0x56, 0x53, 0x53, 0x5a, 0x5a, 0x5c, 0x5c,
|
||||
0x42, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, 0x41,
|
||||
0x44, 0x44, 0x44, 0x44, 0x48, 0x48, 0x48, 0x48,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
/* table B */
|
||||
0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48,
|
||||
0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40,
|
||||
};
|
||||
|
||||
const int quadTabOffset[2] = {0, 64};
|
||||
const int quadTabMaxBits[2] = {6, 4};
|
||||
|
|
@ -0,0 +1,784 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* imdct.c - antialias, inverse transform (short/long/mixed), windowing,
|
||||
* overlap-add, frequency inversion
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: AntiAlias
|
||||
*
|
||||
* Description: smooth transition across DCT block boundaries (every 18 coefficients)
|
||||
*
|
||||
* Inputs: vector of dequantized coefficients, length = (nBfly+1) * 18
|
||||
* number of "butterflies" to perform (one butterfly means one
|
||||
* inter-block smoothing operation)
|
||||
*
|
||||
* Outputs: updated coefficient vector x
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: weighted average of opposite bands (pairwise) from the 8 samples
|
||||
* before and after each block boundary
|
||||
* nBlocks = (nonZeroBound + 7) / 18, since nZB is the first ZERO sample
|
||||
* above which all other samples are also zero
|
||||
* max gain per sample = 1.372
|
||||
* MAX(i) (abs(csa[i][0]) + abs(csa[i][1]))
|
||||
* bits gained = 0
|
||||
* assume at least 1 guard bit in x[] to avoid overflow
|
||||
* (should be guaranteed from dequant, and max gain from stproc * max
|
||||
* gain from AntiAlias < 2.0)
|
||||
**************************************************************************************/
|
||||
// a little bit faster in RAM (< 1 ms per block)
|
||||
static void AntiAlias(int *x, int nBfly)
|
||||
{
|
||||
int k, a0, b0, c0, c1;
|
||||
const int *c;
|
||||
|
||||
/* csa = Q31 */
|
||||
for (k = nBfly; k > 0; k--) {
|
||||
c = csa[0];
|
||||
x += 18;
|
||||
|
||||
a0 = x[-1]; c0 = *c; c++; b0 = x[0]; c1 = *c; c++;
|
||||
x[-1] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[0] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
|
||||
a0 = x[-2]; c0 = *c; c++; b0 = x[1]; c1 = *c; c++;
|
||||
x[-2] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[1] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
|
||||
a0 = x[-3]; c0 = *c; c++; b0 = x[2]; c1 = *c; c++;
|
||||
x[-3] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[2] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
|
||||
a0 = x[-4]; c0 = *c; c++; b0 = x[3]; c1 = *c; c++;
|
||||
x[-4] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[3] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
|
||||
a0 = x[-5]; c0 = *c; c++; b0 = x[4]; c1 = *c; c++;
|
||||
x[-5] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[4] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
|
||||
a0 = x[-6]; c0 = *c; c++; b0 = x[5]; c1 = *c; c++;
|
||||
x[-6] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[5] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
|
||||
a0 = x[-7]; c0 = *c; c++; b0 = x[6]; c1 = *c; c++;
|
||||
x[-7] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[6] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
|
||||
a0 = x[-8]; c0 = *c; c++; b0 = x[7]; c1 = *c; c++;
|
||||
x[-8] = (MULSHIFT32(c0, a0) - MULSHIFT32(c1, b0)) << 1;
|
||||
x[7] = (MULSHIFT32(c0, b0) + MULSHIFT32(c1, a0)) << 1;
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: WinPrevious
|
||||
*
|
||||
* Description: apply specified window to second half of previous IMDCT (overlap part)
|
||||
*
|
||||
* Inputs: vector of 9 coefficients (xPrev)
|
||||
*
|
||||
* Outputs: 18 windowed output coefficients (gain 1 integer bit)
|
||||
* window type (0, 1, 2, 3)
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: produces 9 output samples from 18 input samples via symmetry
|
||||
* all blocks gain at least 1 guard bit via window (long blocks get extra
|
||||
* sign bit, short blocks can have one addition but max gain < 1.0)
|
||||
**************************************************************************************/
|
||||
static void WinPrevious(int *xPrev, int *xPrevWin, int btPrev)
|
||||
{
|
||||
int i, x, *xp, *xpwLo, *xpwHi, wLo, wHi;
|
||||
const int *wpLo, *wpHi;
|
||||
|
||||
xp = xPrev;
|
||||
/* mapping (see IMDCT12x3): xPrev[0-2] = sum[6-8], xPrev[3-8] = sum[12-17] */
|
||||
if (btPrev == 2) {
|
||||
/* this could be reordered for minimum loads/stores */
|
||||
wpLo = imdctWin[btPrev];
|
||||
xPrevWin[ 0] = MULSHIFT32(wpLo[ 6], xPrev[2]) + MULSHIFT32(wpLo[0], xPrev[6]);
|
||||
xPrevWin[ 1] = MULSHIFT32(wpLo[ 7], xPrev[1]) + MULSHIFT32(wpLo[1], xPrev[7]);
|
||||
xPrevWin[ 2] = MULSHIFT32(wpLo[ 8], xPrev[0]) + MULSHIFT32(wpLo[2], xPrev[8]);
|
||||
xPrevWin[ 3] = MULSHIFT32(wpLo[ 9], xPrev[0]) + MULSHIFT32(wpLo[3], xPrev[8]);
|
||||
xPrevWin[ 4] = MULSHIFT32(wpLo[10], xPrev[1]) + MULSHIFT32(wpLo[4], xPrev[7]);
|
||||
xPrevWin[ 5] = MULSHIFT32(wpLo[11], xPrev[2]) + MULSHIFT32(wpLo[5], xPrev[6]);
|
||||
xPrevWin[ 6] = MULSHIFT32(wpLo[ 6], xPrev[5]);
|
||||
xPrevWin[ 7] = MULSHIFT32(wpLo[ 7], xPrev[4]);
|
||||
xPrevWin[ 8] = MULSHIFT32(wpLo[ 8], xPrev[3]);
|
||||
xPrevWin[ 9] = MULSHIFT32(wpLo[ 9], xPrev[3]);
|
||||
xPrevWin[10] = MULSHIFT32(wpLo[10], xPrev[4]);
|
||||
xPrevWin[11] = MULSHIFT32(wpLo[11], xPrev[5]);
|
||||
xPrevWin[12] = xPrevWin[13] = xPrevWin[14] = xPrevWin[15] = xPrevWin[16] = xPrevWin[17] = 0;
|
||||
} else {
|
||||
/* use ARM-style pointers (*ptr++) so that ADS compiles well */
|
||||
wpLo = imdctWin[btPrev] + 18;
|
||||
wpHi = wpLo + 17;
|
||||
xpwLo = xPrevWin;
|
||||
xpwHi = xPrevWin + 17;
|
||||
for (i = 9; i > 0; i--) {
|
||||
x = *xp++; wLo = *wpLo++; wHi = *wpHi--;
|
||||
*xpwLo++ = MULSHIFT32(wLo, x);
|
||||
*xpwHi-- = MULSHIFT32(wHi, x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: FreqInvertRescale
|
||||
*
|
||||
* Description: do frequency inversion (odd samples of odd blocks) and rescale
|
||||
* if necessary (extra guard bits added before IMDCT)
|
||||
*
|
||||
* Inputs: output vector y (18 new samples, spaced NBANDS apart)
|
||||
* previous sample vector xPrev (9 samples)
|
||||
* index of current block
|
||||
* number of extra shifts added before IMDCT (usually 0)
|
||||
*
|
||||
* Outputs: inverted and rescaled (as necessary) outputs
|
||||
* rescaled (as necessary) previous samples
|
||||
*
|
||||
* Return: updated mOut (from new outputs y)
|
||||
**************************************************************************************/
|
||||
static int FreqInvertRescale(int *y, int *xPrev, int blockIdx, int es)
|
||||
{
|
||||
int i, d, mOut;
|
||||
int y0, y1, y2, y3, y4, y5, y6, y7, y8;
|
||||
|
||||
if (es == 0) {
|
||||
/* fast case - frequency invert only (no rescaling) - can fuse into overlap-add for speed, if desired */
|
||||
if (blockIdx & 0x01) {
|
||||
y += NBANDS;
|
||||
y0 = *y; y += 2*NBANDS;
|
||||
y1 = *y; y += 2*NBANDS;
|
||||
y2 = *y; y += 2*NBANDS;
|
||||
y3 = *y; y += 2*NBANDS;
|
||||
y4 = *y; y += 2*NBANDS;
|
||||
y5 = *y; y += 2*NBANDS;
|
||||
y6 = *y; y += 2*NBANDS;
|
||||
y7 = *y; y += 2*NBANDS;
|
||||
y8 = *y; y += 2*NBANDS;
|
||||
|
||||
y -= 18*NBANDS;
|
||||
*y = -y0; y += 2*NBANDS;
|
||||
*y = -y1; y += 2*NBANDS;
|
||||
*y = -y2; y += 2*NBANDS;
|
||||
*y = -y3; y += 2*NBANDS;
|
||||
*y = -y4; y += 2*NBANDS;
|
||||
*y = -y5; y += 2*NBANDS;
|
||||
*y = -y6; y += 2*NBANDS;
|
||||
*y = -y7; y += 2*NBANDS;
|
||||
*y = -y8; y += 2*NBANDS;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
/* undo pre-IMDCT scaling, clipping if necessary */
|
||||
mOut = 0;
|
||||
if (blockIdx & 0x01) {
|
||||
/* frequency invert */
|
||||
for (i = 0; i < 18; i+=2) {
|
||||
d = *y; CLIP_2N(d, 31 - es); *y = d << es; mOut |= FASTABS(*y); y += NBANDS;
|
||||
d = -*y; CLIP_2N(d, 31 - es); *y = d << es; mOut |= FASTABS(*y); y += NBANDS;
|
||||
d = *xPrev; CLIP_2N(d, 31 - es); *xPrev++ = d << es;
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < 18; i+=2) {
|
||||
d = *y; CLIP_2N(d, 31 - es); *y = d << es; mOut |= FASTABS(*y); y += NBANDS;
|
||||
d = *y; CLIP_2N(d, 31 - es); *y = d << es; mOut |= FASTABS(*y); y += NBANDS;
|
||||
d = *xPrev; CLIP_2N(d, 31 - es); *xPrev++ = d << es;
|
||||
}
|
||||
}
|
||||
return mOut;
|
||||
}
|
||||
}
|
||||
|
||||
/* format = Q31
|
||||
* #define M_PI 3.14159265358979323846
|
||||
* double u = 2.0 * M_PI / 9.0;
|
||||
* float c0 = sqrt(3.0) / 2.0;
|
||||
* float c1 = cos(u);
|
||||
* float c2 = cos(2*u);
|
||||
* float c3 = sin(u);
|
||||
* float c4 = sin(2*u);
|
||||
*/
|
||||
|
||||
static const int c9_0 = 0x6ed9eba1;
|
||||
static const int c9_1 = 0x620dbe8b;
|
||||
static const int c9_2 = 0x163a1a7e;
|
||||
static const int c9_3 = 0x5246dd49;
|
||||
static const int c9_4 = 0x7e0e2e32;
|
||||
|
||||
/* format = Q31
|
||||
* cos(((0:8) + 0.5) * (pi/18))
|
||||
*/
|
||||
static const int c18[9] = {
|
||||
0x7f834ed0, 0x7ba3751d, 0x7401e4c1, 0x68d9f964, 0x5a82799a, 0x496af3e2, 0x36185aee, 0x2120fb83, 0x0b27eb5c,
|
||||
};
|
||||
|
||||
/* require at least 3 guard bits in x[] to ensure no overflow */
|
||||
static __inline void idct9(int *x)
|
||||
{
|
||||
int a1, a2, a3, a4, a5, a6, a7, a8, a9;
|
||||
int a10, a11, a12, a13, a14, a15, a16, a17, a18;
|
||||
int a19, a20, a21, a22, a23, a24, a25, a26, a27;
|
||||
int m1, m3, m5, m6, m7, m8, m9, m10, m11, m12;
|
||||
int x0, x1, x2, x3, x4, x5, x6, x7, x8;
|
||||
|
||||
x0 = x[0]; x1 = x[1]; x2 = x[2]; x3 = x[3]; x4 = x[4];
|
||||
x5 = x[5]; x6 = x[6]; x7 = x[7]; x8 = x[8];
|
||||
|
||||
a1 = x0 - x6;
|
||||
a2 = x1 - x5;
|
||||
a3 = x1 + x5;
|
||||
a4 = x2 - x4;
|
||||
a5 = x2 + x4;
|
||||
a6 = x2 + x8;
|
||||
a7 = x1 + x7;
|
||||
|
||||
a8 = a6 - a5; /* ie x[8] - x[4] */
|
||||
a9 = a3 - a7; /* ie x[5] - x[7] */
|
||||
a10 = a2 - x7; /* ie x[1] - x[5] - x[7] */
|
||||
a11 = a4 - x8; /* ie x[2] - x[4] - x[8] */
|
||||
|
||||
/* do the << 1 as constant shifts where mX is actually used (free, no stall or extra inst.) */
|
||||
m1 = MULSHIFT32(c9_0, x3);
|
||||
m3 = MULSHIFT32(c9_0, a10);
|
||||
m5 = MULSHIFT32(c9_1, a5);
|
||||
m6 = MULSHIFT32(c9_2, a6);
|
||||
m7 = MULSHIFT32(c9_1, a8);
|
||||
m8 = MULSHIFT32(c9_2, a5);
|
||||
m9 = MULSHIFT32(c9_3, a9);
|
||||
m10 = MULSHIFT32(c9_4, a7);
|
||||
m11 = MULSHIFT32(c9_3, a3);
|
||||
m12 = MULSHIFT32(c9_4, a9);
|
||||
|
||||
a12 = x[0] + (x[6] >> 1);
|
||||
a13 = a12 + ( m1 << 1);
|
||||
a14 = a12 - ( m1 << 1);
|
||||
a15 = a1 + ( a11 >> 1);
|
||||
a16 = ( m5 << 1) + (m6 << 1);
|
||||
a17 = ( m7 << 1) - (m8 << 1);
|
||||
a18 = a16 + a17;
|
||||
a19 = ( m9 << 1) + (m10 << 1);
|
||||
a20 = (m11 << 1) - (m12 << 1);
|
||||
|
||||
a21 = a20 - a19;
|
||||
a22 = a13 + a16;
|
||||
a23 = a14 + a16;
|
||||
a24 = a14 + a17;
|
||||
a25 = a13 + a17;
|
||||
a26 = a14 - a18;
|
||||
a27 = a13 - a18;
|
||||
|
||||
x0 = a22 + a19; x[0] = x0;
|
||||
x1 = a15 + (m3 << 1); x[1] = x1;
|
||||
x2 = a24 + a20; x[2] = x2;
|
||||
x3 = a26 - a21; x[3] = x3;
|
||||
x4 = a1 - a11; x[4] = x4;
|
||||
x5 = a27 + a21; x[5] = x5;
|
||||
x6 = a25 - a20; x[6] = x6;
|
||||
x7 = a15 - (m3 << 1); x[7] = x7;
|
||||
x8 = a23 - a19; x[8] = x8;
|
||||
}
|
||||
|
||||
/* let c(j) = cos(M_PI/36 * ((j)+0.5)), s(j) = sin(M_PI/36 * ((j)+0.5))
|
||||
* then fastWin[2*j+0] = c(j)*(s(j) + c(j)), j = [0, 8]
|
||||
* fastWin[2*j+1] = c(j)*(s(j) - c(j))
|
||||
* format = Q30
|
||||
*/
|
||||
int fastWin36[18] = {
|
||||
0x42aace8b, 0xc2e92724, 0x47311c28, 0xc95f619a, 0x4a868feb, 0xd0859d8c,
|
||||
0x4c913b51, 0xd8243ea0, 0x4d413ccc, 0xe0000000, 0x4c913b51, 0xe7dbc161,
|
||||
0x4a868feb, 0xef7a6275, 0x47311c28, 0xf6a09e67, 0x42aace8b, 0xfd16d8dd,
|
||||
};
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: IMDCT36
|
||||
*
|
||||
* Description: 36-point modified DCT, with windowing and overlap-add (50% overlap)
|
||||
*
|
||||
* Inputs: vector of 18 coefficients (N/2 inputs produces N outputs, by symmetry)
|
||||
* overlap part of last IMDCT (9 samples - see output comments)
|
||||
* window type (0,1,2,3) of current and previous block
|
||||
* current block index (for deciding whether to do frequency inversion)
|
||||
* number of guard bits in input vector
|
||||
*
|
||||
* Outputs: 18 output samples, after windowing and overlap-add with last frame
|
||||
* second half of (unwindowed) 36-point IMDCT - save for next time
|
||||
* only save 9 xPrev samples, using symmetry (see WinPrevious())
|
||||
*
|
||||
* Notes: this is Ken's hyper-fast algorithm, including symmetric sin window
|
||||
* optimization, if applicable
|
||||
* total number of multiplies, general case:
|
||||
* 2*10 (idct9) + 9 (last stage imdct) + 36 (for windowing) = 65
|
||||
* total number of multiplies, btCurr == 0 && btPrev == 0:
|
||||
* 2*10 (idct9) + 9 (last stage imdct) + 18 (for windowing) = 47
|
||||
*
|
||||
* blockType == 0 is by far the most common case, so it should be
|
||||
* possible to use the fast path most of the time
|
||||
* this is the fastest known algorithm for performing
|
||||
* long IMDCT + windowing + overlap-add in MP3
|
||||
*
|
||||
* Return: mOut (OR of abs(y) for all y calculated here)
|
||||
*
|
||||
* TODO: optimize for ARM (reorder window coefs, ARM-style pointers in C,
|
||||
* inline asm may or may not be helpful)
|
||||
**************************************************************************************/
|
||||
// barely faster in RAM
|
||||
static int IMDCT36(int *xCurr, int *xPrev, int *y, int btCurr, int btPrev, int blockIdx, int gb)
|
||||
{
|
||||
int i, es, xBuf[18], xPrevWin[18];
|
||||
int acc1, acc2, s, d, t, mOut;
|
||||
int xo, xe, c, *xp, yLo, yHi;
|
||||
const int *cp, *wp;
|
||||
|
||||
acc1 = acc2 = 0;
|
||||
xCurr += 17;
|
||||
|
||||
/* 7 gb is always adequate for antialias + accumulator loop + idct9 */
|
||||
if (gb < 7) {
|
||||
/* rarely triggered - 5% to 10% of the time on normal clips (with Q25 input) */
|
||||
es = 7 - gb;
|
||||
for (i = 8; i >= 0; i--) {
|
||||
acc1 = ((*xCurr--) >> es) - acc1;
|
||||
acc2 = acc1 - acc2;
|
||||
acc1 = ((*xCurr--) >> es) - acc1;
|
||||
xBuf[i+9] = acc2; /* odd */
|
||||
xBuf[i+0] = acc1; /* even */
|
||||
xPrev[i] >>= es;
|
||||
}
|
||||
} else {
|
||||
es = 0;
|
||||
/* max gain = 18, assume adequate guard bits */
|
||||
for (i = 8; i >= 0; i--) {
|
||||
acc1 = (*xCurr--) - acc1;
|
||||
acc2 = acc1 - acc2;
|
||||
acc1 = (*xCurr--) - acc1;
|
||||
xBuf[i+9] = acc2; /* odd */
|
||||
xBuf[i+0] = acc1; /* even */
|
||||
}
|
||||
}
|
||||
/* xEven[0] and xOdd[0] scaled by 0.5 */
|
||||
xBuf[9] >>= 1;
|
||||
xBuf[0] >>= 1;
|
||||
|
||||
/* do 9-point IDCT on even and odd */
|
||||
idct9(xBuf+0); /* even */
|
||||
idct9(xBuf+9); /* odd */
|
||||
|
||||
xp = xBuf + 8;
|
||||
cp = c18 + 8;
|
||||
mOut = 0;
|
||||
if (btPrev == 0 && btCurr == 0) {
|
||||
/* fast path - use symmetry of sin window to reduce windowing multiplies to 18 (N/2) */
|
||||
wp = fastWin36;
|
||||
for (i = 0; i < 9; i++) {
|
||||
/* do ARM-style pointer arithmetic (i still needed for y[] indexing - compiler spills if 2 y pointers) */
|
||||
c = *cp--; xo = *(xp + 9); xe = *xp--;
|
||||
/* gain 2 int bits here */
|
||||
xo = MULSHIFT32(c, xo); /* 2*c18*xOdd (mul by 2 implicit in scaling) */
|
||||
xe >>= 2;
|
||||
|
||||
s = -(*xPrev); /* sum from last block (always at least 2 guard bits) */
|
||||
d = -(xe - xo); /* gain 2 int bits, don't shift xo (effective << 1 to eat sign bit, << 1 for mul by 2) */
|
||||
(*xPrev++) = xe + xo; /* symmetry - xPrev[i] = xPrev[17-i] for long blocks */
|
||||
t = s - d;
|
||||
|
||||
yLo = (d + (MULSHIFT32(t, *wp++) << 2));
|
||||
yHi = (s + (MULSHIFT32(t, *wp++) << 2));
|
||||
y[(i)*NBANDS] = yLo;
|
||||
y[(17-i)*NBANDS] = yHi;
|
||||
mOut |= FASTABS(yLo);
|
||||
mOut |= FASTABS(yHi);
|
||||
}
|
||||
} else {
|
||||
/* slower method - either prev or curr is using window type != 0 so do full 36-point window
|
||||
* output xPrevWin has at least 3 guard bits (xPrev has 2, gain 1 in WinPrevious)
|
||||
*/
|
||||
WinPrevious(xPrev, xPrevWin, btPrev);
|
||||
|
||||
wp = imdctWin[btCurr];
|
||||
for (i = 0; i < 9; i++) {
|
||||
c = *cp--; xo = *(xp + 9); xe = *xp--;
|
||||
/* gain 2 int bits here */
|
||||
xo = MULSHIFT32(c, xo); /* 2*c18*xOdd (mul by 2 implicit in scaling) */
|
||||
xe >>= 2;
|
||||
|
||||
d = xe - xo;
|
||||
(*xPrev++) = xe + xo; /* symmetry - xPrev[i] = xPrev[17-i] for long blocks */
|
||||
|
||||
yLo = (xPrevWin[i] + MULSHIFT32(d, wp[i])) << 2;
|
||||
yHi = (xPrevWin[17-i] + MULSHIFT32(d, wp[17-i])) << 2;
|
||||
y[(i)*NBANDS] = yLo;
|
||||
y[(17-i)*NBANDS] = yHi;
|
||||
mOut |= FASTABS(yLo);
|
||||
mOut |= FASTABS(yHi);
|
||||
}
|
||||
}
|
||||
|
||||
xPrev -= 9;
|
||||
mOut |= FreqInvertRescale(y, xPrev, blockIdx, es);
|
||||
|
||||
return mOut;
|
||||
}
|
||||
|
||||
static int c3_0 = 0x6ed9eba1; /* format = Q31, cos(pi/6) */
|
||||
static int c6[3] = { 0x7ba3751d, 0x5a82799a, 0x2120fb83 }; /* format = Q31, cos(((0:2) + 0.5) * (pi/6)) */
|
||||
|
||||
/* 12-point inverse DCT, used in IMDCT12x3()
|
||||
* 4 input guard bits will ensure no overflow
|
||||
*/
|
||||
static __inline void imdct12 (int *x, int *out)
|
||||
{
|
||||
int a0, a1, a2;
|
||||
int x0, x1, x2, x3, x4, x5;
|
||||
|
||||
x0 = *x; x+=3; x1 = *x; x+=3;
|
||||
x2 = *x; x+=3; x3 = *x; x+=3;
|
||||
x4 = *x; x+=3; x5 = *x; x+=3;
|
||||
|
||||
x4 -= x5;
|
||||
x3 -= x4;
|
||||
x2 -= x3;
|
||||
x3 -= x5;
|
||||
x1 -= x2;
|
||||
x0 -= x1;
|
||||
x1 -= x3;
|
||||
|
||||
x0 >>= 1;
|
||||
x1 >>= 1;
|
||||
|
||||
a0 = MULSHIFT32(c3_0, x2) << 1;
|
||||
a1 = x0 + (x4 >> 1);
|
||||
a2 = x0 - x4;
|
||||
x0 = a1 + a0;
|
||||
x2 = a2;
|
||||
x4 = a1 - a0;
|
||||
|
||||
a0 = MULSHIFT32(c3_0, x3) << 1;
|
||||
a1 = x1 + (x5 >> 1);
|
||||
a2 = x1 - x5;
|
||||
|
||||
/* cos window odd samples, mul by 2, eat sign bit */
|
||||
x1 = MULSHIFT32(c6[0], a1 + a0) << 2;
|
||||
x3 = MULSHIFT32(c6[1], a2) << 2;
|
||||
x5 = MULSHIFT32(c6[2], a1 - a0) << 2;
|
||||
|
||||
*out = x0 + x1; out++;
|
||||
*out = x2 + x3; out++;
|
||||
*out = x4 + x5; out++;
|
||||
*out = x4 - x5; out++;
|
||||
*out = x2 - x3; out++;
|
||||
*out = x0 - x1;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: IMDCT12x3
|
||||
*
|
||||
* Description: three 12-point modified DCT's for short blocks, with windowing,
|
||||
* short block concatenation, and overlap-add
|
||||
*
|
||||
* Inputs: 3 interleaved vectors of 6 samples each
|
||||
* (block0[0], block1[0], block2[0], block0[1], block1[1]....)
|
||||
* overlap part of last IMDCT (9 samples - see output comments)
|
||||
* window type (0,1,2,3) of previous block
|
||||
* current block index (for deciding whether to do frequency inversion)
|
||||
* number of guard bits in input vector
|
||||
*
|
||||
* Outputs: updated sample vector x, net gain of 1 integer bit
|
||||
* second half of (unwindowed) IMDCT's - save for next time
|
||||
* only save 9 xPrev samples, using symmetry (see WinPrevious())
|
||||
*
|
||||
* Return: mOut (OR of abs(y) for all y calculated here)
|
||||
*
|
||||
* TODO: optimize for ARM
|
||||
**************************************************************************************/
|
||||
// barely faster in RAM
|
||||
static int IMDCT12x3(int *xCurr, int *xPrev, int *y, int btPrev, int blockIdx, int gb)
|
||||
{
|
||||
int i, es, mOut, yLo, xBuf[18], xPrevWin[18]; /* need temp buffer for reordering short blocks */
|
||||
const int *wp;
|
||||
|
||||
es = 0;
|
||||
/* 7 gb is always adequate for accumulator loop + idct12 + window + overlap */
|
||||
if (gb < 7) {
|
||||
es = 7 - gb;
|
||||
for (i = 0; i < 18; i+=2) {
|
||||
xCurr[i+0] >>= es;
|
||||
xCurr[i+1] >>= es;
|
||||
*xPrev++ >>= es;
|
||||
}
|
||||
xPrev -= 9;
|
||||
}
|
||||
|
||||
/* requires 4 input guard bits for each imdct12 */
|
||||
imdct12(xCurr + 0, xBuf + 0);
|
||||
imdct12(xCurr + 1, xBuf + 6);
|
||||
imdct12(xCurr + 2, xBuf + 12);
|
||||
|
||||
/* window previous from last time */
|
||||
WinPrevious(xPrev, xPrevWin, btPrev);
|
||||
|
||||
/* could unroll this for speed, minimum loads (short blocks usually rare, so doesn't make much overall difference)
|
||||
* xPrevWin[i] << 2 still has 1 gb always, max gain of windowed xBuf stuff also < 1.0 and gain the sign bit
|
||||
* so y calculations won't overflow
|
||||
*/
|
||||
wp = imdctWin[2];
|
||||
mOut = 0;
|
||||
for (i = 0; i < 3; i++) {
|
||||
yLo = (xPrevWin[ 0+i] << 2);
|
||||
mOut |= FASTABS(yLo); y[( 0+i)*NBANDS] = yLo;
|
||||
yLo = (xPrevWin[ 3+i] << 2);
|
||||
mOut |= FASTABS(yLo); y[( 3+i)*NBANDS] = yLo;
|
||||
yLo = (xPrevWin[ 6+i] << 2) + (MULSHIFT32(wp[0+i], xBuf[3+i]));
|
||||
mOut |= FASTABS(yLo); y[( 6+i)*NBANDS] = yLo;
|
||||
yLo = (xPrevWin[ 9+i] << 2) + (MULSHIFT32(wp[3+i], xBuf[5-i]));
|
||||
mOut |= FASTABS(yLo); y[( 9+i)*NBANDS] = yLo;
|
||||
yLo = (xPrevWin[12+i] << 2) + (MULSHIFT32(wp[6+i], xBuf[2-i]) + MULSHIFT32(wp[0+i], xBuf[(6+3)+i]));
|
||||
mOut |= FASTABS(yLo); y[(12+i)*NBANDS] = yLo;
|
||||
yLo = (xPrevWin[15+i] << 2) + (MULSHIFT32(wp[9+i], xBuf[0+i]) + MULSHIFT32(wp[3+i], xBuf[(6+5)-i]));
|
||||
mOut |= FASTABS(yLo); y[(15+i)*NBANDS] = yLo;
|
||||
}
|
||||
|
||||
/* save previous (unwindowed) for overlap - only need samples 6-8, 12-17 */
|
||||
for (i = 6; i < 9; i++)
|
||||
*xPrev++ = xBuf[i] >> 2;
|
||||
for (i = 12; i < 18; i++)
|
||||
*xPrev++ = xBuf[i] >> 2;
|
||||
|
||||
xPrev -= 9;
|
||||
mOut |= FreqInvertRescale(y, xPrev, blockIdx, es);
|
||||
|
||||
return mOut;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: HybridTransform
|
||||
*
|
||||
* Description: IMDCT's, windowing, and overlap-add on long/short/mixed blocks
|
||||
*
|
||||
* Inputs: vector of input coefficients, length = nBlocksTotal * 18)
|
||||
* vector of overlap samples from last time, length = nBlocksPrev * 9)
|
||||
* buffer for output samples, length = MAXNSAMP
|
||||
* SideInfoSub struct for this granule/channel
|
||||
* BlockCount struct with necessary info
|
||||
* number of non-zero input and overlap blocks
|
||||
* number of long blocks in input vector (rest assumed to be short blocks)
|
||||
* number of blocks which use long window (type) 0 in case of mixed block
|
||||
* (bc->currWinSwitch, 0 for non-mixed blocks)
|
||||
*
|
||||
* Outputs: transformed, windowed, and overlapped sample buffer
|
||||
* does frequency inversion on odd blocks
|
||||
* updated buffer of samples for overlap
|
||||
*
|
||||
* Return: number of non-zero IMDCT blocks calculated in this call
|
||||
* (including overlap-add)
|
||||
*
|
||||
* TODO: examine mixedBlock/winSwitch logic carefully (test he_mode.bit)
|
||||
**************************************************************************************/
|
||||
static int HybridTransform(int *xCurr, int *xPrev, int y[BLOCK_SIZE][NBANDS], SideInfoSub *sis, BlockCount *bc)
|
||||
{
|
||||
int xPrevWin[18], currWinIdx, prevWinIdx;
|
||||
int i, j, nBlocksOut, nonZero, mOut;
|
||||
int fiBit, xp;
|
||||
|
||||
ASSERT(bc->nBlocksLong <= NBANDS);
|
||||
ASSERT(bc->nBlocksTotal <= NBANDS);
|
||||
ASSERT(bc->nBlocksPrev <= NBANDS);
|
||||
|
||||
mOut = 0;
|
||||
|
||||
/* do long blocks, if any */
|
||||
for(i = 0; i < bc->nBlocksLong; i++) {
|
||||
/* currWinIdx picks the right window for long blocks (if mixed, long blocks use window type 0) */
|
||||
currWinIdx = sis->blockType;
|
||||
if (sis->mixedBlock && i < bc->currWinSwitch)
|
||||
currWinIdx = 0;
|
||||
|
||||
prevWinIdx = bc->prevType;
|
||||
if (i < bc->prevWinSwitch)
|
||||
prevWinIdx = 0;
|
||||
|
||||
/* do 36-point IMDCT, including windowing and overlap-add */
|
||||
mOut |= IMDCT36(xCurr, xPrev, &(y[0][i]), currWinIdx, prevWinIdx, i, bc->gbIn);
|
||||
xCurr += 18;
|
||||
xPrev += 9;
|
||||
}
|
||||
|
||||
/* do short blocks (if any) */
|
||||
for ( ; i < bc->nBlocksTotal; i++) {
|
||||
ASSERT(sis->blockType == 2);
|
||||
|
||||
prevWinIdx = bc->prevType;
|
||||
if (i < bc->prevWinSwitch)
|
||||
prevWinIdx = 0;
|
||||
|
||||
mOut |= IMDCT12x3(xCurr, xPrev, &(y[0][i]), prevWinIdx, i, bc->gbIn);
|
||||
xCurr += 18;
|
||||
xPrev += 9;
|
||||
}
|
||||
nBlocksOut = i;
|
||||
|
||||
/* window and overlap prev if prev longer that current */
|
||||
for ( ; i < bc->nBlocksPrev; i++) {
|
||||
prevWinIdx = bc->prevType;
|
||||
if (i < bc->prevWinSwitch)
|
||||
prevWinIdx = 0;
|
||||
WinPrevious(xPrev, xPrevWin, prevWinIdx);
|
||||
|
||||
nonZero = 0;
|
||||
fiBit = i << 31;
|
||||
for (j = 0; j < 9; j++) {
|
||||
xp = xPrevWin[2*j+0] << 2; /* << 2 temp for scaling */
|
||||
nonZero |= xp;
|
||||
y[2*j+0][i] = xp;
|
||||
mOut |= FASTABS(xp);
|
||||
|
||||
/* frequency inversion on odd blocks/odd samples (flip sign if i odd, j odd) */
|
||||
xp = xPrevWin[2*j+1] << 2;
|
||||
xp = (xp ^ (fiBit >> 31)) + (i & 0x01);
|
||||
nonZero |= xp;
|
||||
y[2*j+1][i] = xp;
|
||||
mOut |= FASTABS(xp);
|
||||
|
||||
xPrev[j] = 0;
|
||||
}
|
||||
xPrev += 9;
|
||||
if (nonZero)
|
||||
nBlocksOut = i;
|
||||
}
|
||||
|
||||
/* clear rest of blocks */
|
||||
for ( ; i < 32; i++) {
|
||||
for (j = 0; j < 18; j++)
|
||||
y[j][i] = 0;
|
||||
}
|
||||
|
||||
bc->gbOut = CLZ(mOut) - 1;
|
||||
|
||||
return nBlocksOut;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: IMDCT
|
||||
*
|
||||
* Description: do alias reduction, inverse MDCT, overlap-add, and frequency inversion
|
||||
*
|
||||
* Inputs: MP3DecInfo structure filled by UnpackFrameHeader(), UnpackSideInfo(),
|
||||
* UnpackScaleFactors(), and DecodeHuffman() (for this granule, channel)
|
||||
* includes PCM samples in overBuf (from last call to IMDCT) for OLA
|
||||
* index of current granule and channel
|
||||
*
|
||||
* Outputs: PCM samples in outBuf, for input to subband transform
|
||||
* PCM samples in overBuf, for OLA next time
|
||||
* updated hi->nonZeroBound index for this channel
|
||||
*
|
||||
* Return: 0 on success, -1 if null input pointers
|
||||
**************************************************************************************/
|
||||
// a bit faster in RAM
|
||||
int IMDCT(MP3DecInfo *mp3DecInfo, int gr, int ch)
|
||||
{
|
||||
int nBfly, blockCutoff;
|
||||
FrameHeader *fh;
|
||||
SideInfo *si;
|
||||
HuffmanInfo *hi;
|
||||
IMDCTInfo *mi;
|
||||
BlockCount bc;
|
||||
|
||||
/* validate pointers */
|
||||
if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS ||
|
||||
!mp3DecInfo->HuffmanInfoPS || !mp3DecInfo->IMDCTInfoPS)
|
||||
return -1;
|
||||
|
||||
/* si is an array of up to 4 structs, stored as gr0ch0, gr0ch1, gr1ch0, gr1ch1 */
|
||||
fh = (FrameHeader *)(mp3DecInfo->FrameHeaderPS);
|
||||
si = (SideInfo *)(mp3DecInfo->SideInfoPS);
|
||||
hi = (HuffmanInfo*)(mp3DecInfo->HuffmanInfoPS);
|
||||
mi = (IMDCTInfo *)(mp3DecInfo->IMDCTInfoPS);
|
||||
|
||||
/* anti-aliasing done on whole long blocks only
|
||||
* for mixed blocks, nBfly always 1, except 3 for 8 kHz MPEG 2.5 (see sfBandTab)
|
||||
* nLongBlocks = number of blocks with (possibly) non-zero power
|
||||
* nBfly = number of butterflies to do (nLongBlocks - 1, unless no long blocks)
|
||||
*/
|
||||
blockCutoff = fh->sfBand->l[(fh->ver == MPEG1 ? 8 : 6)] / 18; /* same as 3* num short sfb's in spec */
|
||||
if (si->sis[gr][ch].blockType != 2) {
|
||||
/* all long transforms */
|
||||
bc.nBlocksLong = MIN((hi->nonZeroBound[ch] + 7) / 18 + 1, 32);
|
||||
nBfly = bc.nBlocksLong - 1;
|
||||
} else if (si->sis[gr][ch].blockType == 2 && si->sis[gr][ch].mixedBlock) {
|
||||
/* mixed block - long transforms until cutoff, then short transforms */
|
||||
bc.nBlocksLong = blockCutoff;
|
||||
nBfly = bc.nBlocksLong - 1;
|
||||
} else {
|
||||
/* all short transforms */
|
||||
bc.nBlocksLong = 0;
|
||||
nBfly = 0;
|
||||
}
|
||||
|
||||
AntiAlias(hi->huffDecBuf[ch], nBfly);
|
||||
hi->nonZeroBound[ch] = MAX(hi->nonZeroBound[ch], (nBfly * 18) + 8);
|
||||
|
||||
ASSERT(hi->nonZeroBound[ch] <= MAX_NSAMP);
|
||||
|
||||
/* for readability, use a struct instead of passing a million parameters to HybridTransform() */
|
||||
bc.nBlocksTotal = (hi->nonZeroBound[ch] + 17) / 18;
|
||||
bc.nBlocksPrev = mi->numPrevIMDCT[ch];
|
||||
bc.prevType = mi->prevType[ch];
|
||||
bc.prevWinSwitch = mi->prevWinSwitch[ch];
|
||||
bc.currWinSwitch = (si->sis[gr][ch].mixedBlock ? blockCutoff : 0); /* where WINDOW switches (not nec. transform) */
|
||||
bc.gbIn = hi->gb[ch];
|
||||
|
||||
mi->numPrevIMDCT[ch] = HybridTransform(hi->huffDecBuf[ch], mi->overBuf[ch], mi->outBuf[ch], &si->sis[gr][ch], &bc);
|
||||
mi->prevType[ch] = si->sis[gr][ch].blockType;
|
||||
mi->prevWinSwitch[ch] = bc.currWinSwitch; /* 0 means not a mixed block (either all short or all long) */
|
||||
mi->gb[ch] = bc.gbOut;
|
||||
|
||||
ASSERT(mi->numPrevIMDCT[ch] <= NBANDS);
|
||||
|
||||
/* output has gained 2 int bits */
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,295 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* polyphase.c - final stage of subband transform (polyphase synthesis filter)
|
||||
*
|
||||
* This is the C reference version using __int64
|
||||
* Look in the appropriate subdirectories for optimized asm implementations
|
||||
* (e.g. arm/asmpoly.s)
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
/* input to Polyphase = Q(DQ_FRACBITS_OUT-2), gain 2 bits in convolution
|
||||
* we also have the implicit bias of 2^15 to add back, so net fraction bits =
|
||||
* DQ_FRACBITS_OUT - 2 - 2 - 15
|
||||
* (see comment on Dequantize() for more info)
|
||||
*/
|
||||
#define DEF_NFRACBITS (DQ_FRACBITS_OUT - 2 - 2 - 15)
|
||||
#define CSHIFT 12 /* coefficients have 12 leading sign bits for early-terminating mulitplies */
|
||||
|
||||
static __inline short ClipToShort(int x, int fracBits)
|
||||
{
|
||||
int sign;
|
||||
|
||||
/* assumes you've already rounded (x += (1 << (fracBits-1))) */
|
||||
x >>= fracBits;
|
||||
|
||||
/* Ken's trick: clips to [-32768, 32767] */
|
||||
sign = x >> 31;
|
||||
if (sign != (x >> 15))
|
||||
x = sign ^ ((1 << 15) - 1);
|
||||
|
||||
return (short)x;
|
||||
}
|
||||
|
||||
#define MC0M(x) { \
|
||||
c1 = *coef; coef++; c2 = *coef; coef++; \
|
||||
vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
|
||||
sum1L = MADD64(sum1L, vLo, c1); sum1L = MADD64(sum1L, vHi, -c2); \
|
||||
}
|
||||
|
||||
#define MC1M(x) { \
|
||||
c1 = *coef; coef++; \
|
||||
vLo = *(vb1+(x)); \
|
||||
sum1L = MADD64(sum1L, vLo, c1); \
|
||||
}
|
||||
|
||||
#define MC2M(x) { \
|
||||
c1 = *coef; coef++; c2 = *coef; coef++; \
|
||||
vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
|
||||
sum1L = MADD64(sum1L, vLo, c1); sum2L = MADD64(sum2L, vLo, c2); \
|
||||
sum1L = MADD64(sum1L, vHi, -c2); sum2L = MADD64(sum2L, vHi, c1); \
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: PolyphaseMono
|
||||
*
|
||||
* Description: filter one subband and produce 32 output PCM samples for one channel
|
||||
*
|
||||
* Inputs: pointer to PCM output buffer
|
||||
* number of "extra shifts" (vbuf format = Q(DQ_FRACBITS_OUT-2))
|
||||
* pointer to start of vbuf (preserved from last call)
|
||||
* start of filter coefficient table (in proper, shuffled order)
|
||||
* no minimum number of guard bits is required for input vbuf
|
||||
* (see additional scaling comments below)
|
||||
*
|
||||
* Outputs: 32 samples of one channel of decoded PCM data, (i.e. Q16.0)
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* TODO: add 32-bit version for platforms where 64-bit mul-acc is not supported
|
||||
* (note max filter gain - see polyCoef[] comments)
|
||||
**************************************************************************************/
|
||||
void PolyphaseMono(short *pcm, int *vbuf, const int *coefBase)
|
||||
{
|
||||
int i;
|
||||
const int *coef;
|
||||
int *vb1;
|
||||
int vLo, vHi, c1, c2;
|
||||
Word64 sum1L, sum2L, rndVal;
|
||||
|
||||
rndVal = (Word64)( 1 << (DEF_NFRACBITS - 1 + (32 - CSHIFT)) );
|
||||
|
||||
/* special case, output sample 0 */
|
||||
coef = coefBase;
|
||||
vb1 = vbuf;
|
||||
sum1L = rndVal;
|
||||
|
||||
MC0M(0)
|
||||
MC0M(1)
|
||||
MC0M(2)
|
||||
MC0M(3)
|
||||
MC0M(4)
|
||||
MC0M(5)
|
||||
MC0M(6)
|
||||
MC0M(7)
|
||||
|
||||
*(pcm + 0) = ClipToShort((int)SAR64(sum1L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
|
||||
/* special case, output sample 16 */
|
||||
coef = coefBase + 256;
|
||||
vb1 = vbuf + 64*16;
|
||||
sum1L = rndVal;
|
||||
|
||||
MC1M(0)
|
||||
MC1M(1)
|
||||
MC1M(2)
|
||||
MC1M(3)
|
||||
MC1M(4)
|
||||
MC1M(5)
|
||||
MC1M(6)
|
||||
MC1M(7)
|
||||
|
||||
*(pcm + 16) = ClipToShort((int)SAR64(sum1L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
|
||||
/* main convolution loop: sum1L = samples 1, 2, 3, ... 15 sum2L = samples 31, 30, ... 17 */
|
||||
coef = coefBase + 16;
|
||||
vb1 = vbuf + 64;
|
||||
pcm++;
|
||||
|
||||
/* right now, the compiler creates bad asm from this... */
|
||||
for (i = 15; i > 0; i--) {
|
||||
sum1L = sum2L = rndVal;
|
||||
|
||||
MC2M(0)
|
||||
MC2M(1)
|
||||
MC2M(2)
|
||||
MC2M(3)
|
||||
MC2M(4)
|
||||
MC2M(5)
|
||||
MC2M(6)
|
||||
MC2M(7)
|
||||
|
||||
vb1 += 64;
|
||||
*(pcm) = ClipToShort((int)SAR64(sum1L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
*(pcm + 2*i) = ClipToShort((int)SAR64(sum2L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
pcm++;
|
||||
}
|
||||
}
|
||||
|
||||
#define MC0S(x) { \
|
||||
c1 = *coef; coef++; c2 = *coef; coef++; \
|
||||
vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
|
||||
sum1L = MADD64(sum1L, vLo, c1); sum1L = MADD64(sum1L, vHi, -c2); \
|
||||
vLo = *(vb1+32+(x)); vHi = *(vb1+32+(23-(x))); \
|
||||
sum1R = MADD64(sum1R, vLo, c1); sum1R = MADD64(sum1R, vHi, -c2); \
|
||||
}
|
||||
|
||||
#define MC1S(x) { \
|
||||
c1 = *coef; coef++; \
|
||||
vLo = *(vb1+(x)); \
|
||||
sum1L = MADD64(sum1L, vLo, c1); \
|
||||
vLo = *(vb1+32+(x)); \
|
||||
sum1R = MADD64(sum1R, vLo, c1); \
|
||||
}
|
||||
|
||||
#define MC2S(x) { \
|
||||
c1 = *coef; coef++; c2 = *coef; coef++; \
|
||||
vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
|
||||
sum1L = MADD64(sum1L, vLo, c1); sum2L = MADD64(sum2L, vLo, c2); \
|
||||
sum1L = MADD64(sum1L, vHi, -c2); sum2L = MADD64(sum2L, vHi, c1); \
|
||||
vLo = *(vb1+32+(x)); vHi = *(vb1+32+(23-(x))); \
|
||||
sum1R = MADD64(sum1R, vLo, c1); sum2R = MADD64(sum2R, vLo, c2); \
|
||||
sum1R = MADD64(sum1R, vHi, -c2); sum2R = MADD64(sum2R, vHi, c1); \
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: PolyphaseStereo
|
||||
*
|
||||
* Description: filter one subband and produce 32 output PCM samples for each channel
|
||||
*
|
||||
* Inputs: pointer to PCM output buffer
|
||||
* number of "extra shifts" (vbuf format = Q(DQ_FRACBITS_OUT-2))
|
||||
* pointer to start of vbuf (preserved from last call)
|
||||
* start of filter coefficient table (in proper, shuffled order)
|
||||
* no minimum number of guard bits is required for input vbuf
|
||||
* (see additional scaling comments below)
|
||||
*
|
||||
* Outputs: 32 samples of two channels of decoded PCM data, (i.e. Q16.0)
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: interleaves PCM samples LRLRLR...
|
||||
*
|
||||
* TODO: add 32-bit version for platforms where 64-bit mul-acc is not supported
|
||||
**************************************************************************************/
|
||||
void PolyphaseStereo(short *pcm, int *vbuf, const int *coefBase)
|
||||
{
|
||||
int i;
|
||||
const int *coef;
|
||||
int *vb1;
|
||||
int vLo, vHi, c1, c2;
|
||||
Word64 sum1L, sum2L, sum1R, sum2R, rndVal;
|
||||
|
||||
rndVal = (Word64)( 1 << (DEF_NFRACBITS - 1 + (32 - CSHIFT)) );
|
||||
|
||||
/* special case, output sample 0 */
|
||||
coef = coefBase;
|
||||
vb1 = vbuf;
|
||||
sum1L = sum1R = rndVal;
|
||||
|
||||
MC0S(0)
|
||||
MC0S(1)
|
||||
MC0S(2)
|
||||
MC0S(3)
|
||||
MC0S(4)
|
||||
MC0S(5)
|
||||
MC0S(6)
|
||||
MC0S(7)
|
||||
|
||||
*(pcm + 0) = ClipToShort((int)SAR64(sum1L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
*(pcm + 1) = ClipToShort((int)SAR64(sum1R, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
|
||||
/* special case, output sample 16 */
|
||||
coef = coefBase + 256;
|
||||
vb1 = vbuf + 64*16;
|
||||
sum1L = sum1R = rndVal;
|
||||
|
||||
MC1S(0)
|
||||
MC1S(1)
|
||||
MC1S(2)
|
||||
MC1S(3)
|
||||
MC1S(4)
|
||||
MC1S(5)
|
||||
MC1S(6)
|
||||
MC1S(7)
|
||||
|
||||
*(pcm + 2*16 + 0) = ClipToShort((int)SAR64(sum1L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
*(pcm + 2*16 + 1) = ClipToShort((int)SAR64(sum1R, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
|
||||
/* main convolution loop: sum1L = samples 1, 2, 3, ... 15 sum2L = samples 31, 30, ... 17 */
|
||||
coef = coefBase + 16;
|
||||
vb1 = vbuf + 64;
|
||||
pcm += 2;
|
||||
|
||||
/* right now, the compiler creates bad asm from this... */
|
||||
for (i = 15; i > 0; i--) {
|
||||
sum1L = sum2L = rndVal;
|
||||
sum1R = sum2R = rndVal;
|
||||
|
||||
MC2S(0)
|
||||
MC2S(1)
|
||||
MC2S(2)
|
||||
MC2S(3)
|
||||
MC2S(4)
|
||||
MC2S(5)
|
||||
MC2S(6)
|
||||
MC2S(7)
|
||||
|
||||
vb1 += 64;
|
||||
*(pcm + 0) = ClipToShort((int)SAR64(sum1L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
*(pcm + 1) = ClipToShort((int)SAR64(sum1R, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
*(pcm + 2*2*i + 0) = ClipToShort((int)SAR64(sum2L, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
*(pcm + 2*2*i + 1) = ClipToShort((int)SAR64(sum2R, (32-CSHIFT)), DEF_NFRACBITS);
|
||||
pcm += 2;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
|
|
@ -0,0 +1,335 @@
|
|||
# Microsoft eMbedded Visual Tools Project File - Name="mp3dec" - Package Owner=<4>
|
||||
# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (WCE ARM) Static Library" 0x8504
|
||||
|
||||
CFG=mp3dec - Win32 (WCE ARM) Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mp3dec.vcn".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mp3dec.vcn" CFG="mp3dec - Win32 (WCE ARM) Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "mp3dec - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Static Library")
|
||||
!MESSAGE "mp3dec - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
# PROP ATL_Project 2
|
||||
CPP=xicle3
|
||||
|
||||
!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ARMRel"
|
||||
# PROP BASE Intermediate_Dir "ARMRel"
|
||||
# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ARMRel"
|
||||
# PROP Intermediate_Dir "ARMRel_obj"
|
||||
# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /Oxs /M$(CECrtMT) /c
|
||||
# ADD CPP /nologo /W3 /Zi /O2 /I "..\..\..\..\..\..\..\common\runtime\pub" /I "..\..\..\..\..\..\..\common\include" /I "..\..\..\pub" /D "NDEBUG" /D "_WINDOWS" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Oxs /M$(CECrtMT) /c
|
||||
# SUBTRACT CPP /YX
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "ARMDbg"
|
||||
# PROP BASE Intermediate_Dir "ARMDbg"
|
||||
# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "ARMDbg"
|
||||
# PROP Intermediate_Dir "ARMDbg"
|
||||
# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /M$(CECrtMTDebug) /c
|
||||
# ADD CPP /nologo /W3 /Zi /Od /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /I "..\..\..\..\..\..\..\common\include" /D "DEBUG" /D "_WINDOWS" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /M$(CECrtMTDebug) /c
|
||||
# SUBTRACT CPP /YX
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "mp3dec - Win32 (WCE ARM) Release"
|
||||
# Name "mp3dec - Win32 (WCE ARM) Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Group "general"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\mp3dec.c
|
||||
DEP_CPP_MP3DE=\
|
||||
"..\..\..\..\..\..\..\common\include\hxbastsd.h"\
|
||||
"..\..\..\..\..\..\..\common\include\hxtypes.h"\
|
||||
"..\..\..\..\..\..\..\common\include\platform\symbian\symbiantypes.h"\
|
||||
"..\..\..\..\..\..\..\common\runtime\pub\hlxclib\stdlib.h"\
|
||||
"..\..\..\..\..\..\..\common\runtime\pub\hlxclib\string.h"\
|
||||
"..\..\..\..\..\..\..\common\runtime\pub\platform\openwave\hx_op_stdc.h"\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
|
||||
NODEP_CPP_MP3DE=\
|
||||
"..\..\..\..\..\..\..\common\include\types\vxTypesOld.h"\
|
||||
"..\..\..\..\..\..\..\common\include\vxWorks.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\mp3tabs.c
|
||||
DEP_CPP_MP3TA=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "csource"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\bitstream.c
|
||||
DEP_CPP_BITST=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\assembly.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\buffers.c
|
||||
DEP_CPP_BUFFE=\
|
||||
"..\..\..\..\..\..\..\common\include\hxbastsd.h"\
|
||||
"..\..\..\..\..\..\..\common\include\hxtypes.h"\
|
||||
"..\..\..\..\..\..\..\common\include\platform\symbian\symbiantypes.h"\
|
||||
"..\..\..\..\..\..\..\common\runtime\pub\hlxclib\stdlib.h"\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
NODEP_CPP_BUFFE=\
|
||||
"..\..\..\..\..\..\..\common\include\types\vxTypesOld.h"\
|
||||
"..\..\..\..\..\..\..\common\include\vxWorks.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\dct32.c
|
||||
DEP_CPP_DCT32=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\assembly.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\dequant.c
|
||||
DEP_CPP_DEQUA=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\assembly.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\dqchan.c
|
||||
DEP_CPP_DQCHA=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\assembly.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\huffman.c
|
||||
DEP_CPP_HUFFM=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\hufftabs.c
|
||||
DEP_CPP_HUFFT=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\imdct.c
|
||||
DEP_CPP_IMDCT=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\assembly.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\scalfact.c
|
||||
DEP_CPP_SCALF=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\stproc.c
|
||||
DEP_CPP_STPRO=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\assembly.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\subband.c
|
||||
DEP_CPP_SUBBA=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\assembly.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\trigtabs.c
|
||||
DEP_CPP_TRIGT=\
|
||||
"..\..\..\pub\mp3common.h"\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\statname.h"\
|
||||
"..\..\coder.h"\
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "assembly"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\arm\asmmisc.s
|
||||
|
||||
!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release"
|
||||
|
||||
# PROP Ignore_Default_Tool 1
|
||||
# Begin Custom Build - Performing Custom Build Step on $(InputPath)
|
||||
IntDir=.\ARMRel_obj
|
||||
InputPath=..\..\arm\asmmisc.s
|
||||
InputName=asmmisc
|
||||
|
||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
"$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug"
|
||||
|
||||
# PROP Ignore_Default_Tool 1
|
||||
# Begin Custom Build - Performing Custom Build Step on $(InputPath)
|
||||
IntDir=.\ARMDbg
|
||||
InputPath=..\..\arm\asmmisc.s
|
||||
InputName=asmmisc
|
||||
|
||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
"$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\arm\asmpoly.s
|
||||
|
||||
!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release"
|
||||
|
||||
# PROP Ignore_Default_Tool 1
|
||||
# Begin Custom Build
|
||||
IntDir=.\ARMRel_obj
|
||||
InputPath=..\..\arm\asmpoly.s
|
||||
InputName=asmpoly
|
||||
|
||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
"$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug"
|
||||
|
||||
# PROP Ignore_Default_Tool 1
|
||||
# Begin Custom Build
|
||||
IntDir=.\ARMDbg
|
||||
InputPath=..\..\arm\asmpoly.s
|
||||
InputName=asmpoly
|
||||
|
||||
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
"$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
Microsoft eMbedded Visual Tools Workspace File, Format Version 3.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "mp3dec"=.\mp3dec.vcp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "testwrap"=.\testwrap.vcp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mp3dec
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
# Microsoft eMbedded Visual Tools Project File - Name="testwrap" - Package Owner=<4>
|
||||
# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (WCE ARM) Application" 0x8501
|
||||
|
||||
CFG=testwrap - Win32 (WCE ARM) Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "testwrap.vcn".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "testwrap.vcn" CFG="testwrap - Win32 (WCE ARM) Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "testwrap - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application")
|
||||
!MESSAGE "testwrap - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
# PROP ATL_Project 2
|
||||
CPP=xicle3
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "testwrap - Win32 (WCE ARM) Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ARMRel"
|
||||
# PROP BASE Intermediate_Dir "ARMRel"
|
||||
# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ARMRel"
|
||||
# PROP Intermediate_Dir "ARMRel"
|
||||
# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
|
||||
# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
|
||||
# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /YX /Oxs /M$(CECrtMT) /c
|
||||
# ADD CPP /nologo /W3 /Zi /O2 /I "..\..\..\pub" /I "..\..\..\testwrap" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /YX /Oxs /M$(CECrtMT) /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilinke3
|
||||
# ADD BASE LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
|
||||
# ADD LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
|
||||
|
||||
!ELSEIF "$(CFG)" == "testwrap - Win32 (WCE ARM) Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "ARMDbg"
|
||||
# PROP BASE Intermediate_Dir "ARMDbg"
|
||||
# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "ARMDbg"
|
||||
# PROP Intermediate_Dir "ARMDbg"
|
||||
# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}"
|
||||
# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
|
||||
# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r
|
||||
# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /YX /M$(CECrtMTDebug) /c
|
||||
# ADD CPP /nologo /W3 /Zi /Od /I "..\..\..\pub" /I "..\..\..\testwrap" /D "DEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /YX /M$(CECrtMTDebug) /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilinke3
|
||||
# ADD BASE LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
|
||||
# ADD LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "testwrap - Win32 (WCE ARM) Release"
|
||||
# Name "testwrap - Win32 (WCE ARM) Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\testwrap\debug.c
|
||||
DEP_CPP_DEBUG=\
|
||||
"..\..\..\testwrap\debug.h"\
|
||||
|
||||
NODEP_CPP_DEBUG=\
|
||||
"..\..\..\testwrap\fortify.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\mpadecobj.cpp
|
||||
DEP_CPP_MPADE=\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\mpadecobjfixpt.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\testwrap\timing.c
|
||||
DEP_CPP_TIMIN=\
|
||||
"..\..\..\testwrap\timing.h"\
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\testwrap\winmain.cpp
|
||||
DEP_CPP_WINMA=\
|
||||
"..\..\..\pub\mp3dec.h"\
|
||||
"..\..\..\pub\mpadecobjfixpt.h"\
|
||||
"..\..\..\testwrap\debug.h"\
|
||||
"..\..\..\testwrap\timing.h"\
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
# Microsoft Developer Studio Project File - Name="mp3dec" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=mp3dec - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mp3dec.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "mp3dec.mak" CFG="mp3dec - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "mp3dec - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "mp3dec - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "mp3dec - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "release"
|
||||
# PROP Intermediate_Dir "rel_obj"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\..\..\common\include" /I "..\.." /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /D "NDEBUG" /D "REL_ENABLE_ASSERTS" /D "_WINDOWS" /D "_LIB" /D "WIN32" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "mp3dec - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "debug"
|
||||
# PROP Intermediate_Dir "debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\..\..\common\include" /I "..\.." /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /D "_DEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_WINDOWS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "mp3dec - Win32 Release"
|
||||
# Name "mp3dec - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Group "general"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\mp3dec.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\mp3tabs.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "csource"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\bitstream.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\buffers.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\dct32.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\dequant.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\dqchan.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\huffman.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\hufftabs.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\imdct.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\polyphase.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\scalfact.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\stproc.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\subband.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\trigtabs.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "mp3dec"=.\mp3dec.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "testwrap"=.\testwrap.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name mp3dec
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
# Microsoft Developer Studio Project File - Name="testwrap" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=testwrap - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "testwrap.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "testwrap.mak" CFG="testwrap - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "testwrap - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "testwrap - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "testwrap - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "release"
|
||||
# PROP Intermediate_Dir "rel_obj"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\pub" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HELIX_FEATURE_AUDIO_MPA_LAYER3" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"release\mp3dec.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "testwrap - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "debug"
|
||||
# PROP Intermediate_Dir "debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\pub" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HELIX_FEATURE_AUDIO_MPA_LAYER3" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"debug\mp3dec.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "testwrap - Win32 Release"
|
||||
# Name "testwrap - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Group "cppwrapper"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\mpadecobj.cpp
|
||||
|
||||
!IF "$(CFG)" == "testwrap - Win32 Release"
|
||||
|
||||
# ADD CPP /I "..\..\..\testwrap\cppshim"
|
||||
|
||||
!ELSEIF "$(CFG)" == "testwrap - Win32 Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
# ADD CPP /I "..\..\..\testwrap\cppshim"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\testwrap\winmain.cpp
|
||||
|
||||
!IF "$(CFG)" == "testwrap - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "testwrap - Win32 Debug"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "cwrapper"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\testwrap\main.c
|
||||
|
||||
!IF "$(CFG)" == "testwrap - Win32 Release"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "testwrap - Win32 Debug"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\testwrap\timing.c
|
||||
|
||||
!IF "$(CFG)" == "testwrap - Win32 Release"
|
||||
|
||||
# PROP Exclude_From_Build 1
|
||||
|
||||
!ELSEIF "$(CFG)" == "testwrap - Win32 Debug"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\testwrap\debug.c
|
||||
|
||||
!IF "$(CFG)" == "testwrap - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "testwrap - Win32 Debug"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
|
@ -0,0 +1,391 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* scalfact.c - scalefactor unpacking functions
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
|
||||
/* scale factor lengths (num bits) */
|
||||
static const char SFLenTab[16][2] = {
|
||||
{0, 0}, {0, 1},
|
||||
{0, 2}, {0, 3},
|
||||
{3, 0}, {1, 1},
|
||||
{1, 2}, {1, 3},
|
||||
{2, 1}, {2, 2},
|
||||
{2, 3}, {3, 1},
|
||||
{3, 2}, {3, 3},
|
||||
{4, 2}, {4, 3},
|
||||
};
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: UnpackSFMPEG1
|
||||
*
|
||||
* Description: unpack MPEG 1 scalefactors from bitstream
|
||||
*
|
||||
* Inputs: BitStreamInfo, SideInfoSub, ScaleFactorInfoSub structs for this
|
||||
* granule/channel
|
||||
* vector of scfsi flags from side info, length = 4 (MAX_SCFBD)
|
||||
* index of current granule
|
||||
* ScaleFactorInfoSub from granule 0 (for granule 1, if scfsi[i] is set,
|
||||
* then we just replicate the scale factors from granule 0 in the
|
||||
* i'th set of scalefactor bands)
|
||||
*
|
||||
* Outputs: updated BitStreamInfo struct
|
||||
* scalefactors in sfis (short and/or long arrays, as appropriate)
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: set order of short blocks to s[band][window] instead of s[window][band]
|
||||
* so that we index through consectutive memory locations when unpacking
|
||||
* (make sure dequantizer follows same convention)
|
||||
* Illegal Intensity Position = 7 (always) for MPEG1 scale factors
|
||||
**************************************************************************************/
|
||||
static void UnpackSFMPEG1(BitStreamInfo *bsi, SideInfoSub *sis, ScaleFactorInfoSub *sfis, int *scfsi, int gr, ScaleFactorInfoSub *sfisGr0)
|
||||
{
|
||||
int sfb;
|
||||
int slen0, slen1;
|
||||
|
||||
/* these can be 0, so make sure GetBits(bsi, 0) returns 0 (no >> 32 or anything) */
|
||||
slen0 = (int)SFLenTab[sis->sfCompress][0];
|
||||
slen1 = (int)SFLenTab[sis->sfCompress][1];
|
||||
|
||||
if (sis->blockType == 2) {
|
||||
/* short block, type 2 (implies winSwitchFlag == 1) */
|
||||
if (sis->mixedBlock) {
|
||||
/* do long block portion */
|
||||
for (sfb = 0; sfb < 8; sfb++)
|
||||
sfis->l[sfb] = (char)GetBits(bsi, slen0);
|
||||
sfb = 3;
|
||||
} else {
|
||||
/* all short blocks */
|
||||
sfb = 0;
|
||||
}
|
||||
|
||||
for ( ; sfb < 6; sfb++) {
|
||||
sfis->s[sfb][0] = (char)GetBits(bsi, slen0);
|
||||
sfis->s[sfb][1] = (char)GetBits(bsi, slen0);
|
||||
sfis->s[sfb][2] = (char)GetBits(bsi, slen0);
|
||||
}
|
||||
|
||||
for ( ; sfb < 12; sfb++) {
|
||||
sfis->s[sfb][0] = (char)GetBits(bsi, slen1);
|
||||
sfis->s[sfb][1] = (char)GetBits(bsi, slen1);
|
||||
sfis->s[sfb][2] = (char)GetBits(bsi, slen1);
|
||||
}
|
||||
|
||||
/* last sf band not transmitted */
|
||||
sfis->s[12][0] = sfis->s[12][1] = sfis->s[12][2] = 0;
|
||||
} else {
|
||||
/* long blocks, type 0, 1, or 3 */
|
||||
if(gr == 0) {
|
||||
/* first granule */
|
||||
for (sfb = 0; sfb < 11; sfb++)
|
||||
sfis->l[sfb] = (char)GetBits(bsi, slen0);
|
||||
for (sfb = 11; sfb < 21; sfb++)
|
||||
sfis->l[sfb] = (char)GetBits(bsi, slen1);
|
||||
return;
|
||||
} else {
|
||||
/* second granule
|
||||
* scfsi: 0 = different scalefactors for each granule, 1 = copy sf's from granule 0 into granule 1
|
||||
* for block type == 2, scfsi is always 0
|
||||
*/
|
||||
sfb = 0;
|
||||
if(scfsi[0]) for( ; sfb < 6 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
|
||||
else for( ; sfb < 6 ; sfb++) sfis->l[sfb] = (char)GetBits(bsi, slen0);
|
||||
if(scfsi[1]) for( ; sfb <11 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
|
||||
else for( ; sfb <11 ; sfb++) sfis->l[sfb] = (char)GetBits(bsi, slen0);
|
||||
if(scfsi[2]) for( ; sfb <16 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
|
||||
else for( ; sfb <16 ; sfb++) sfis->l[sfb] = (char)GetBits(bsi, slen1);
|
||||
if(scfsi[3]) for( ; sfb <21 ; sfb++) sfis->l[sfb] = sfisGr0->l[sfb];
|
||||
else for( ; sfb <21 ; sfb++) sfis->l[sfb] = (char)GetBits(bsi, slen1);
|
||||
}
|
||||
/* last sf band not transmitted */
|
||||
sfis->l[21] = 0;
|
||||
sfis->l[22] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* NRTab[size + 3*is_right][block type][partition]
|
||||
* block type index: 0 = (bt0,bt1,bt3), 1 = bt2 non-mixed, 2 = bt2 mixed
|
||||
* partition: scale factor groups (sfb1 through sfb4)
|
||||
* for block type = 2 (mixed or non-mixed) / by 3 is rolled into this table
|
||||
* (for 3 short blocks per long block)
|
||||
* see 2.4.3.2 in MPEG 2 (low sample rate) spec
|
||||
* stuff rolled into this table:
|
||||
* NRTab[x][1][y] --> (NRTab[x][1][y]) / 3
|
||||
* NRTab[x][2][>=1] --> (NRTab[x][2][>=1]) / 3 (first partition is long block)
|
||||
*/
|
||||
static const char NRTab[6][3][4] = {
|
||||
/* non-intensity stereo */
|
||||
{ {6, 5, 5, 5},
|
||||
{3, 3, 3, 3}, /* includes / 3 */
|
||||
{6, 3, 3, 3}, /* includes / 3 except for first entry */
|
||||
},
|
||||
{ {6, 5, 7, 3},
|
||||
{3, 3, 4, 2},
|
||||
{6, 3, 4, 2},
|
||||
},
|
||||
{ {11, 10, 0, 0},
|
||||
{6, 6, 0, 0},
|
||||
{6, 3, 6, 0}, /* spec = [15,18,0,0], but 15 = 6L + 9S, so move 9/3=3 into col 1, 18/3=6 into col 2 and adj. slen[1,2] below */
|
||||
},
|
||||
/* intensity stereo, right chan */
|
||||
{ {7, 7, 7, 0},
|
||||
{4, 4, 4, 0},
|
||||
{6, 5, 4, 0},
|
||||
},
|
||||
{ {6, 6, 6, 3},
|
||||
{4, 3, 3, 2},
|
||||
{6, 4, 3, 2},
|
||||
},
|
||||
{ {8, 8, 5, 0},
|
||||
{5, 4, 3, 0},
|
||||
{6, 6, 3, 0},
|
||||
}
|
||||
};
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: UnpackSFMPEG2
|
||||
*
|
||||
* Description: unpack MPEG 2 scalefactors from bitstream
|
||||
*
|
||||
* Inputs: BitStreamInfo, SideInfoSub, ScaleFactorInfoSub structs for this
|
||||
* granule/channel
|
||||
* index of current granule and channel
|
||||
* ScaleFactorInfoSub from this granule
|
||||
* modeExt field from frame header, to tell whether intensity stereo is on
|
||||
* ScaleFactorJS struct for storing IIP info used in Dequant()
|
||||
*
|
||||
* Outputs: updated BitStreamInfo struct
|
||||
* scalefactors in sfis (short and/or long arrays, as appropriate)
|
||||
* updated intensityScale and preFlag flags
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: Illegal Intensity Position = (2^slen) - 1 for MPEG2 scale factors
|
||||
*
|
||||
* TODO: optimize the / and % stuff (only do one divide, get modulo x
|
||||
* with (x / m) * m, etc.)
|
||||
**************************************************************************************/
|
||||
static void UnpackSFMPEG2(BitStreamInfo *bsi, SideInfoSub *sis, ScaleFactorInfoSub *sfis, int gr, int ch, int modeExt, ScaleFactorJS *sfjs)
|
||||
{
|
||||
|
||||
int i, sfb, sfcIdx, btIdx, nrIdx, iipTest;
|
||||
int slen[4], nr[4];
|
||||
int sfCompress, preFlag, intensityScale;
|
||||
|
||||
sfCompress = sis->sfCompress;
|
||||
preFlag = 0;
|
||||
intensityScale = 0;
|
||||
|
||||
/* stereo mode bits (1 = on): bit 1 = mid-side on/off, bit 0 = intensity on/off */
|
||||
if (! ((modeExt & 0x01) && (ch == 1)) ) {
|
||||
/* in other words: if ((modeExt & 0x01) == 0 || ch == 0) */
|
||||
if (sfCompress < 400) {
|
||||
/* max slen = floor[(399/16) / 5] = 4 */
|
||||
slen[0] = (sfCompress >> 4) / 5;
|
||||
slen[1]= (sfCompress >> 4) % 5;
|
||||
slen[2]= (sfCompress & 0x0f) >> 2;
|
||||
slen[3]= (sfCompress & 0x03);
|
||||
sfcIdx = 0;
|
||||
} else if (sfCompress < 500) {
|
||||
/* max slen = floor[(99/4) / 5] = 4 */
|
||||
sfCompress -= 400;
|
||||
slen[0] = (sfCompress >> 2) / 5;
|
||||
slen[1]= (sfCompress >> 2) % 5;
|
||||
slen[2]= (sfCompress & 0x03);
|
||||
slen[3]= 0;
|
||||
sfcIdx = 1;
|
||||
} else {
|
||||
/* max slen = floor[11/3] = 3 (sfCompress = 9 bits in MPEG2) */
|
||||
sfCompress -= 500;
|
||||
slen[0] = sfCompress / 3;
|
||||
slen[1] = sfCompress % 3;
|
||||
slen[2] = slen[3] = 0;
|
||||
if (sis->mixedBlock) {
|
||||
/* adjust for long/short mix logic (see comment above in NRTab[] definition) */
|
||||
slen[2] = slen[1];
|
||||
slen[1] = slen[0];
|
||||
}
|
||||
preFlag = 1;
|
||||
sfcIdx = 2;
|
||||
}
|
||||
} else {
|
||||
/* intensity stereo ch = 1 (right) */
|
||||
intensityScale = sfCompress & 0x01;
|
||||
sfCompress >>= 1;
|
||||
if (sfCompress < 180) {
|
||||
/* max slen = floor[35/6] = 5 (from mod 36) */
|
||||
slen[0] = (sfCompress / 36);
|
||||
slen[1] = (sfCompress % 36) / 6;
|
||||
slen[2] = (sfCompress % 36) % 6;
|
||||
slen[3] = 0;
|
||||
sfcIdx = 3;
|
||||
} else if (sfCompress < 244) {
|
||||
/* max slen = floor[63/16] = 3 */
|
||||
sfCompress -= 180;
|
||||
slen[0] = (sfCompress & 0x3f) >> 4;
|
||||
slen[1] = (sfCompress & 0x0f) >> 2;
|
||||
slen[2] = (sfCompress & 0x03);
|
||||
slen[3] = 0;
|
||||
sfcIdx = 4;
|
||||
} else {
|
||||
/* max slen = floor[11/3] = 3 (max sfCompress >> 1 = 511/2 = 255) */
|
||||
sfCompress -= 244;
|
||||
slen[0] = (sfCompress / 3);
|
||||
slen[1] = (sfCompress % 3);
|
||||
slen[2] = slen[3] = 0;
|
||||
sfcIdx = 5;
|
||||
}
|
||||
}
|
||||
|
||||
/* set index based on block type: (0,1,3) --> 0, (2 non-mixed) --> 1, (2 mixed) ---> 2 */
|
||||
btIdx = 0;
|
||||
if (sis->blockType == 2)
|
||||
btIdx = (sis->mixedBlock ? 2 : 1);
|
||||
for (i = 0; i < 4; i++)
|
||||
nr[i] = (int)NRTab[sfcIdx][btIdx][i];
|
||||
|
||||
/* save intensity stereo scale factor info */
|
||||
if( (modeExt & 0x01) && (ch == 1) ) {
|
||||
for (i = 0; i < 4; i++) {
|
||||
sfjs->slen[i] = slen[i];
|
||||
sfjs->nr[i] = nr[i];
|
||||
}
|
||||
sfjs->intensityScale = intensityScale;
|
||||
}
|
||||
sis->preFlag = preFlag;
|
||||
|
||||
/* short blocks */
|
||||
if(sis->blockType == 2) {
|
||||
if(sis->mixedBlock) {
|
||||
/* do long block portion */
|
||||
iipTest = (1 << slen[0]) - 1;
|
||||
for (sfb=0; sfb < 6; sfb++) {
|
||||
sfis->l[sfb] = (char)GetBits(bsi, slen[0]);
|
||||
}
|
||||
sfb = 3; /* start sfb for short */
|
||||
nrIdx = 1;
|
||||
} else {
|
||||
/* all short blocks, so start nr, sfb at 0 */
|
||||
sfb = 0;
|
||||
nrIdx = 0;
|
||||
}
|
||||
|
||||
/* remaining short blocks, sfb just keeps incrementing */
|
||||
for ( ; nrIdx <= 3; nrIdx++) {
|
||||
iipTest = (1 << slen[nrIdx]) - 1;
|
||||
for (i=0; i < nr[nrIdx]; i++, sfb++) {
|
||||
sfis->s[sfb][0] = (char)GetBits(bsi, slen[nrIdx]);
|
||||
sfis->s[sfb][1] = (char)GetBits(bsi, slen[nrIdx]);
|
||||
sfis->s[sfb][2] = (char)GetBits(bsi, slen[nrIdx]);
|
||||
}
|
||||
}
|
||||
/* last sf band not transmitted */
|
||||
sfis->s[12][0] = sfis->s[12][1] = sfis->s[12][2] = 0;
|
||||
} else {
|
||||
/* long blocks */
|
||||
sfb = 0;
|
||||
for (nrIdx = 0; nrIdx <= 3; nrIdx++) {
|
||||
iipTest = (1 << slen[nrIdx]) - 1;
|
||||
for(i=0; i < nr[nrIdx]; i++, sfb++) {
|
||||
sfis->l[sfb] = (char)GetBits(bsi, slen[nrIdx]);
|
||||
}
|
||||
}
|
||||
/* last sf band not transmitted */
|
||||
sfis->l[21] = sfis->l[22] = 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: UnpackScaleFactors
|
||||
*
|
||||
* Description: parse the fields of the MP3 scale factor data section
|
||||
*
|
||||
* Inputs: MP3DecInfo structure filled by UnpackFrameHeader() and UnpackSideInfo()
|
||||
* buffer pointing to the MP3 scale factor data
|
||||
* pointer to bit offset (0-7) indicating starting bit in buf[0]
|
||||
* number of bits available in data buffer
|
||||
* index of current granule and channel
|
||||
*
|
||||
* Outputs: updated platform-specific ScaleFactorInfo struct
|
||||
* updated bitOffset
|
||||
*
|
||||
* Return: length (in bytes) of scale factor data, -1 if null input pointers
|
||||
**************************************************************************************/
|
||||
int UnpackScaleFactors(MP3DecInfo *mp3DecInfo, unsigned char *buf, int *bitOffset, int bitsAvail, int gr, int ch)
|
||||
{
|
||||
int bitsUsed;
|
||||
unsigned char *startBuf;
|
||||
BitStreamInfo bitStreamInfo, *bsi;
|
||||
FrameHeader *fh;
|
||||
SideInfo *si;
|
||||
ScaleFactorInfo *sfi;
|
||||
|
||||
/* validate pointers */
|
||||
if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS || !mp3DecInfo->ScaleFactorInfoPS)
|
||||
return -1;
|
||||
fh = ((FrameHeader *)(mp3DecInfo->FrameHeaderPS));
|
||||
si = ((SideInfo *)(mp3DecInfo->SideInfoPS));
|
||||
sfi = ((ScaleFactorInfo *)(mp3DecInfo->ScaleFactorInfoPS));
|
||||
|
||||
/* init GetBits reader */
|
||||
startBuf = buf;
|
||||
bsi = &bitStreamInfo;
|
||||
SetBitstreamPointer(bsi, (bitsAvail + *bitOffset + 7) / 8, buf);
|
||||
if (*bitOffset)
|
||||
GetBits(bsi, *bitOffset);
|
||||
|
||||
if (fh->ver == MPEG1)
|
||||
UnpackSFMPEG1(bsi, &si->sis[gr][ch], &sfi->sfis[gr][ch], si->scfsi[ch], gr, &sfi->sfis[0][ch]);
|
||||
else
|
||||
UnpackSFMPEG2(bsi, &si->sis[gr][ch], &sfi->sfis[gr][ch], gr, ch, fh->modeExt, &sfi->sfjs);
|
||||
|
||||
mp3DecInfo->part23Length[gr][ch] = si->sis[gr][ch].part23Length;
|
||||
|
||||
bitsUsed = CalcBitsUsed(bsi, buf, *bitOffset);
|
||||
buf += (bitsUsed + *bitOffset) >> 3;
|
||||
*bitOffset = (bitsUsed + *bitOffset) & 0x07;
|
||||
|
||||
return (buf - startBuf);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,296 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* stproc.c - mid-side and intensity (MPEG1 and MPEG2) stereo processing
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: MidSideProc
|
||||
*
|
||||
* Description: sum-difference stereo reconstruction
|
||||
*
|
||||
* Inputs: vector x with dequantized samples from left and right channels
|
||||
* number of non-zero samples (MAX of left and right)
|
||||
* assume 1 guard bit in input
|
||||
* guard bit mask (left and right channels)
|
||||
*
|
||||
* Outputs: updated sample vector x
|
||||
* updated guard bit mask
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: assume at least 1 GB in input
|
||||
**************************************************************************************/
|
||||
void MidSideProc(int x[MAX_NCHAN][MAX_NSAMP], int nSamps, int mOut[2])
|
||||
{
|
||||
int i, xr, xl, mOutL, mOutR;
|
||||
|
||||
/* L = (M+S)/sqrt(2), R = (M-S)/sqrt(2)
|
||||
* NOTE: 1/sqrt(2) done in DequantChannel() - see comments there
|
||||
*/
|
||||
mOutL = mOutR = 0;
|
||||
for(i = 0; i < nSamps; i++) {
|
||||
xl = x[0][i];
|
||||
xr = x[1][i];
|
||||
x[0][i] = xl + xr;
|
||||
x[1][i] = xl - xr;
|
||||
mOutL |= FASTABS(x[0][i]);
|
||||
mOutR |= FASTABS(x[1][i]);
|
||||
}
|
||||
mOut[0] |= mOutL;
|
||||
mOut[1] |= mOutR;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: IntensityProcMPEG1
|
||||
*
|
||||
* Description: intensity stereo processing for MPEG1
|
||||
*
|
||||
* Inputs: vector x with dequantized samples from left and right channels
|
||||
* number of non-zero samples in left channel
|
||||
* valid FrameHeader struct
|
||||
* two each of ScaleFactorInfoSub, CriticalBandInfo structs (both channels)
|
||||
* flags indicating midSide on/off, mixedBlock on/off
|
||||
* guard bit mask (left and right channels)
|
||||
*
|
||||
* Outputs: updated sample vector x
|
||||
* updated guard bit mask
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: assume at least 1 GB in input
|
||||
*
|
||||
* TODO: combine MPEG1/2 into one function (maybe)
|
||||
* make sure all the mixed-block and IIP logic is right
|
||||
**************************************************************************************/
|
||||
void IntensityProcMPEG1(int x[MAX_NCHAN][MAX_NSAMP], int nSamps, FrameHeader *fh, ScaleFactorInfoSub *sfis,
|
||||
CriticalBandInfo *cbi, int midSideFlag, int mixFlag, int mOut[2])
|
||||
{
|
||||
int i=0, j=0, n=0, cb=0, w=0;
|
||||
int sampsLeft, isf, mOutL, mOutR, xl, xr;
|
||||
int fl, fr, fls[3], frs[3];
|
||||
int cbStartL=0, cbStartS=0, cbEndL=0, cbEndS=0;
|
||||
int *isfTab;
|
||||
|
||||
/* NOTE - this works fine for mixed blocks, as long as the switch point starts in the
|
||||
* short block section (i.e. on or after sample 36 = sfBand->l[8] = 3*sfBand->s[3]
|
||||
* is this a safe assumption?
|
||||
* TODO - intensity + mixed not quite right (diff = 11 on he_mode)
|
||||
* figure out correct implementation (spec ambiguous about when to do short block reorder)
|
||||
*/
|
||||
if (cbi[1].cbType == 0) {
|
||||
/* long block */
|
||||
cbStartL = cbi[1].cbEndL + 1;
|
||||
cbEndL = cbi[0].cbEndL + 1;
|
||||
cbStartS = cbEndS = 0;
|
||||
i = fh->sfBand->l[cbStartL];
|
||||
} else if (cbi[1].cbType == 1 || cbi[1].cbType == 2) {
|
||||
/* short or mixed block */
|
||||
cbStartS = cbi[1].cbEndSMax + 1;
|
||||
cbEndS = cbi[0].cbEndSMax + 1;
|
||||
cbStartL = cbEndL = 0;
|
||||
i = 3 * fh->sfBand->s[cbStartS];
|
||||
}
|
||||
|
||||
sampsLeft = nSamps - i; /* process to length of left */
|
||||
isfTab = (int *)ISFMpeg1[midSideFlag];
|
||||
mOutL = mOutR = 0;
|
||||
|
||||
/* long blocks */
|
||||
for (cb = cbStartL; cb < cbEndL && sampsLeft > 0; cb++) {
|
||||
isf = sfis->l[cb];
|
||||
if (isf == 7) {
|
||||
fl = ISFIIP[midSideFlag][0];
|
||||
fr = ISFIIP[midSideFlag][1];
|
||||
} else {
|
||||
fl = isfTab[isf];
|
||||
fr = isfTab[6] - isfTab[isf];
|
||||
}
|
||||
|
||||
n = fh->sfBand->l[cb + 1] - fh->sfBand->l[cb];
|
||||
for (j = 0; j < n && sampsLeft > 0; j++, i++) {
|
||||
xr = MULSHIFT32(fr, x[0][i]) << 2; x[1][i] = xr; mOutR |= FASTABS(xr);
|
||||
xl = MULSHIFT32(fl, x[0][i]) << 2; x[0][i] = xl; mOutL |= FASTABS(xl);
|
||||
sampsLeft--;
|
||||
}
|
||||
}
|
||||
|
||||
/* short blocks */
|
||||
for (cb = cbStartS; cb < cbEndS && sampsLeft >= 3; cb++) {
|
||||
for (w = 0; w < 3; w++) {
|
||||
isf = sfis->s[cb][w];
|
||||
if (isf == 7) {
|
||||
fls[w] = ISFIIP[midSideFlag][0];
|
||||
frs[w] = ISFIIP[midSideFlag][1];
|
||||
} else {
|
||||
fls[w] = isfTab[isf];
|
||||
frs[w] = isfTab[6] - isfTab[isf];
|
||||
}
|
||||
}
|
||||
|
||||
n = fh->sfBand->s[cb + 1] - fh->sfBand->s[cb];
|
||||
for (j = 0; j < n && sampsLeft >= 3; j++, i+=3) {
|
||||
xr = MULSHIFT32(frs[0], x[0][i+0]) << 2; x[1][i+0] = xr; mOutR |= FASTABS(xr);
|
||||
xl = MULSHIFT32(fls[0], x[0][i+0]) << 2; x[0][i+0] = xl; mOutL |= FASTABS(xl);
|
||||
xr = MULSHIFT32(frs[1], x[0][i+1]) << 2; x[1][i+1] = xr; mOutR |= FASTABS(xr);
|
||||
xl = MULSHIFT32(fls[1], x[0][i+1]) << 2; x[0][i+1] = xl; mOutL |= FASTABS(xl);
|
||||
xr = MULSHIFT32(frs[2], x[0][i+2]) << 2; x[1][i+2] = xr; mOutR |= FASTABS(xr);
|
||||
xl = MULSHIFT32(fls[2], x[0][i+2]) << 2; x[0][i+2] = xl; mOutL |= FASTABS(xl);
|
||||
sampsLeft -= 3;
|
||||
}
|
||||
}
|
||||
mOut[0] = mOutL;
|
||||
mOut[1] = mOutR;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: IntensityProcMPEG2
|
||||
*
|
||||
* Description: intensity stereo processing for MPEG2
|
||||
*
|
||||
* Inputs: vector x with dequantized samples from left and right channels
|
||||
* number of non-zero samples in left channel
|
||||
* valid FrameHeader struct
|
||||
* two each of ScaleFactorInfoSub, CriticalBandInfo structs (both channels)
|
||||
* ScaleFactorJS struct with joint stereo info from UnpackSFMPEG2()
|
||||
* flags indicating midSide on/off, mixedBlock on/off
|
||||
* guard bit mask (left and right channels)
|
||||
*
|
||||
* Outputs: updated sample vector x
|
||||
* updated guard bit mask
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* Notes: assume at least 1 GB in input
|
||||
*
|
||||
* TODO: combine MPEG1/2 into one function (maybe)
|
||||
* make sure all the mixed-block and IIP logic is right
|
||||
* probably redo IIP logic to be simpler
|
||||
**************************************************************************************/
|
||||
void IntensityProcMPEG2(int x[MAX_NCHAN][MAX_NSAMP], int nSamps, FrameHeader *fh, ScaleFactorInfoSub *sfis,
|
||||
CriticalBandInfo *cbi, ScaleFactorJS *sfjs, int midSideFlag, int mixFlag, int mOut[2])
|
||||
{
|
||||
int i, j, k, n, r, cb, w;
|
||||
int fl, fr, mOutL, mOutR, xl, xr;
|
||||
int sampsLeft;
|
||||
int isf, sfIdx, tmp, il[23];
|
||||
int *isfTab;
|
||||
int cbStartL, cbStartS, cbEndL, cbEndS;
|
||||
|
||||
isfTab = (int *)ISFMpeg2[sfjs->intensityScale][midSideFlag];
|
||||
mOutL = mOutR = 0;
|
||||
|
||||
/* fill buffer with illegal intensity positions (depending on slen) */
|
||||
for (k = r = 0; r < 4; r++) {
|
||||
tmp = (1 << sfjs->slen[r]) - 1;
|
||||
for (j = 0; j < sfjs->nr[r]; j++, k++)
|
||||
il[k] = tmp;
|
||||
}
|
||||
|
||||
if (cbi[1].cbType == 0) {
|
||||
/* long blocks */
|
||||
il[21] = il[22] = 1;
|
||||
cbStartL = cbi[1].cbEndL + 1; /* start at end of right */
|
||||
cbEndL = cbi[0].cbEndL + 1; /* process to end of left */
|
||||
i = fh->sfBand->l[cbStartL];
|
||||
sampsLeft = nSamps - i;
|
||||
|
||||
for(cb = cbStartL; cb < cbEndL; cb++) {
|
||||
sfIdx = sfis->l[cb];
|
||||
if (sfIdx == il[cb]) {
|
||||
fl = ISFIIP[midSideFlag][0];
|
||||
fr = ISFIIP[midSideFlag][1];
|
||||
} else {
|
||||
isf = (sfis->l[cb] + 1) >> 1;
|
||||
fl = isfTab[(sfIdx & 0x01 ? isf : 0)];
|
||||
fr = isfTab[(sfIdx & 0x01 ? 0 : isf)];
|
||||
}
|
||||
n = MIN(fh->sfBand->l[cb + 1] - fh->sfBand->l[cb], sampsLeft);
|
||||
|
||||
for(j = 0; j < n; j++, i++) {
|
||||
xr = MULSHIFT32(fr, x[0][i]) << 2; x[1][i] = xr; mOutR |= FASTABS(xr);
|
||||
xl = MULSHIFT32(fl, x[0][i]) << 2; x[0][i] = xl; mOutL |= FASTABS(xl);
|
||||
}
|
||||
|
||||
/* early exit once we've used all the non-zero samples */
|
||||
sampsLeft -= n;
|
||||
if (sampsLeft == 0)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* short or mixed blocks */
|
||||
il[12] = 1;
|
||||
|
||||
for(w = 0; w < 3; w++) {
|
||||
cbStartS = cbi[1].cbEndS[w] + 1; /* start at end of right */
|
||||
cbEndS = cbi[0].cbEndS[w] + 1; /* process to end of left */
|
||||
i = 3 * fh->sfBand->s[cbStartS] + w;
|
||||
|
||||
/* skip through sample array by 3, so early-exit logic would be more tricky */
|
||||
for(cb = cbStartS; cb < cbEndS; cb++) {
|
||||
sfIdx = sfis->s[cb][w];
|
||||
if (sfIdx == il[cb]) {
|
||||
fl = ISFIIP[midSideFlag][0];
|
||||
fr = ISFIIP[midSideFlag][1];
|
||||
} else {
|
||||
isf = (sfis->s[cb][w] + 1) >> 1;
|
||||
fl = isfTab[(sfIdx & 0x01 ? isf : 0)];
|
||||
fr = isfTab[(sfIdx & 0x01 ? 0 : isf)];
|
||||
}
|
||||
n = fh->sfBand->s[cb + 1] - fh->sfBand->s[cb];
|
||||
|
||||
for(j = 0; j < n; j++, i+=3) {
|
||||
xr = MULSHIFT32(fr, x[0][i]) << 2; x[1][i] = xr; mOutR |= FASTABS(xr);
|
||||
xl = MULSHIFT32(fl, x[0][i]) << 2; x[0][i] = xl; mOutL |= FASTABS(xl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mOut[0] = mOutL;
|
||||
mOut[1] = mOutR;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* subband.c - subband transform (synthesis filterbank implemented via 32-point DCT
|
||||
* followed by polyphase filter)
|
||||
**************************************************************************************/
|
||||
|
||||
#include "coder.h"
|
||||
#include "assembly.h"
|
||||
|
||||
/**************************************************************************************
|
||||
* Function: Subband
|
||||
*
|
||||
* Description: do subband transform on all the blocks in one granule, all channels
|
||||
*
|
||||
* Inputs: filled MP3DecInfo structure, after calling IMDCT for all channels
|
||||
* vbuf[ch] and vindex[ch] must be preserved between calls
|
||||
*
|
||||
* Outputs: decoded PCM data, interleaved LRLRLR... if stereo
|
||||
*
|
||||
* Return: 0 on success, -1 if null input pointers
|
||||
**************************************************************************************/
|
||||
int Subband(MP3DecInfo *mp3DecInfo, short *pcmBuf)
|
||||
{
|
||||
int b;
|
||||
HuffmanInfo *hi;
|
||||
IMDCTInfo *mi;
|
||||
SubbandInfo *sbi;
|
||||
|
||||
/* validate pointers */
|
||||
if (!mp3DecInfo || !mp3DecInfo->HuffmanInfoPS || !mp3DecInfo->IMDCTInfoPS || !mp3DecInfo->SubbandInfoPS)
|
||||
return -1;
|
||||
|
||||
hi = (HuffmanInfo *)mp3DecInfo->HuffmanInfoPS;
|
||||
mi = (IMDCTInfo *)(mp3DecInfo->IMDCTInfoPS);
|
||||
sbi = (SubbandInfo*)(mp3DecInfo->SubbandInfoPS);
|
||||
|
||||
if (mp3DecInfo->nChans == 2) {
|
||||
/* stereo */
|
||||
for (b = 0; b < BLOCK_SIZE; b++) {
|
||||
FDCT32(mi->outBuf[0][b], sbi->vbuf + 0*32, sbi->vindex, (b & 0x01), mi->gb[0]);
|
||||
FDCT32(mi->outBuf[1][b], sbi->vbuf + 1*32, sbi->vindex, (b & 0x01), mi->gb[1]);
|
||||
PolyphaseStereo(pcmBuf, sbi->vbuf + sbi->vindex + VBUF_LENGTH * (b & 0x01), polyCoef);
|
||||
sbi->vindex = (sbi->vindex - (b & 0x01)) & 7;
|
||||
pcmBuf += (2 * NBANDS);
|
||||
}
|
||||
} else {
|
||||
/* mono */
|
||||
for (b = 0; b < BLOCK_SIZE; b++) {
|
||||
FDCT32(mi->outBuf[0][b], sbi->vbuf + 0*32, sbi->vindex, (b & 0x01), mi->gb[0]);
|
||||
PolyphaseMono(pcmBuf, sbi->vbuf + sbi->vindex + VBUF_LENGTH * (b & 0x01), polyCoef);
|
||||
sbi->vindex = (sbi->vindex - (b & 0x01)) & 7;
|
||||
pcmBuf += NBANDS;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,314 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* trigtabs.c - global ROM tables for pre-calculated trig coefficients
|
||||
**************************************************************************************/
|
||||
|
||||
// constants in RAM are not significantly faster
|
||||
|
||||
#include "coder.h"
|
||||
|
||||
/* post-IMDCT window, win[blockType][i]
|
||||
* format = Q31
|
||||
* Fused sin window with final stage of IMDCT
|
||||
* includes 1/sqrt(2) scaling, since we scale by sqrt(2) in dequant in order
|
||||
* for fast IMDCT36 to be usable
|
||||
*
|
||||
* for(i=0;i<9;i++) win[0][i] = sin(pi/36 *(i+0.5));
|
||||
* for(i=9;i<36;i++) win[0][i] = -sin(pi/36 *(i+0.5));
|
||||
*
|
||||
* for(i=0;i<9;i++) win[1][i] = sin(pi/36 *(i+0.5));
|
||||
* for(i=9;i<18;i++) win[1][i] = -sin(pi/36 *(i+0.5));
|
||||
* for(i=18;i<24;i++) win[1][i] = -1;
|
||||
* for(i=24;i<30;i++) win[1][i] = -sin(pi/12 *(i+0.5-18));
|
||||
* for(i=30;i<36;i++) win[1][i] = 0;
|
||||
*
|
||||
* for(i=0;i<6;i++) win[3][i] = 0;
|
||||
* for(i=6;i<9;i++) win[3][i] = sin(pi/12 *(i+0.5-6));
|
||||
* for(i=9;i<12;i++) win[3][i] = -sin(pi/12 *(i+0.5-6));
|
||||
* for(i=12;i<18;i++) win[3][i] = -1;
|
||||
* for(i=18;i<36;i++) win[3][i] = -sin(pi/36*(i+0.5));
|
||||
*
|
||||
* for(i=0;i<3;i++) win[2][i] = sin(pi/12*(i+0.5));
|
||||
* for(i=3;i<12;i++) win[2][i] = -sin(pi/12*(i+0.5));
|
||||
* for(i=12;i<36;i++) win[2][i] = 0;
|
||||
*
|
||||
* for (i = 0; i < 4; i++) {
|
||||
* if (i == 2) {
|
||||
* win[i][8] *= cos(pi/12 * (0+0.5));
|
||||
* win[i][9] *= cos(pi/12 * (0+0.5));
|
||||
* win[i][7] *= cos(pi/12 * (1+0.5));
|
||||
* win[i][10] *= cos(pi/12 * (1+0.5));
|
||||
* win[i][6] *= cos(pi/12 * (2+0.5));
|
||||
* win[i][11] *= cos(pi/12 * (2+0.5));
|
||||
* win[i][0] *= cos(pi/12 * (3+0.5));
|
||||
* win[i][5] *= cos(pi/12 * (3+0.5));
|
||||
* win[i][1] *= cos(pi/12 * (4+0.5));
|
||||
* win[i][4] *= cos(pi/12 * (4+0.5));
|
||||
* win[i][2] *= cos(pi/12 * (5+0.5));
|
||||
* win[i][3] *= cos(pi/12 * (5+0.5));
|
||||
* } else {
|
||||
* for (j = 0; j < 9; j++) {
|
||||
* win[i][8-j] *= cos(pi/36 * (17-j+0.5));
|
||||
* win[i][9+j] *= cos(pi/36 * (17-j+0.5));
|
||||
* }
|
||||
* for (j = 0; j < 9; j++) {
|
||||
* win[i][18+8-j] *= cos(pi/36 * (j+0.5));
|
||||
* win[i][18+9+j] *= cos(pi/36 * (j+0.5));
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* for (i = 0; i < 4; i++)
|
||||
* for (j = 0; j < 36; j++)
|
||||
* win[i][j] *= 1.0 / sqrt(2);
|
||||
*/
|
||||
|
||||
const int imdctWin[4][36] = {
|
||||
{
|
||||
0x02aace8b, 0x07311c28, 0x0a868fec, 0x0c913b52, 0x0d413ccd, 0x0c913b52, 0x0a868fec, 0x07311c28,
|
||||
0x02aace8b, 0xfd16d8dd, 0xf6a09e66, 0xef7a6275, 0xe7dbc161, 0xe0000000, 0xd8243e9f, 0xd0859d8b,
|
||||
0xc95f619a, 0xc2e92723, 0xbd553175, 0xb8cee3d8, 0xb5797014, 0xb36ec4ae, 0xb2bec333, 0xb36ec4ae,
|
||||
0xb5797014, 0xb8cee3d8, 0xbd553175, 0xc2e92723, 0xc95f619a, 0xd0859d8b, 0xd8243e9f, 0xe0000000,
|
||||
0xe7dbc161, 0xef7a6275, 0xf6a09e66, 0xfd16d8dd,
|
||||
},
|
||||
{
|
||||
0x02aace8b, 0x07311c28, 0x0a868fec, 0x0c913b52, 0x0d413ccd, 0x0c913b52, 0x0a868fec, 0x07311c28,
|
||||
0x02aace8b, 0xfd16d8dd, 0xf6a09e66, 0xef7a6275, 0xe7dbc161, 0xe0000000, 0xd8243e9f, 0xd0859d8b,
|
||||
0xc95f619a, 0xc2e92723, 0xbd44ef14, 0xb831a052, 0xb3aa3837, 0xafb789a4, 0xac6145bb, 0xa9adecdc,
|
||||
0xa864491f, 0xad1868f0, 0xb8431f49, 0xc8f42236, 0xdda8e6b1, 0xf47755dc, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
},
|
||||
{
|
||||
0x07311c28, 0x0d413ccd, 0x07311c28, 0xf6a09e66, 0xe0000000, 0xc95f619a, 0xb8cee3d8, 0xb2bec333,
|
||||
0xb8cee3d8, 0xc95f619a, 0xe0000000, 0xf6a09e66, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
},
|
||||
{
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x028e9709, 0x04855ec0,
|
||||
0x026743a1, 0xfcde2c10, 0xf515dc82, 0xec93e53b, 0xe4c880f8, 0xdd5d0b08, 0xd63510b7, 0xcf5e834a,
|
||||
0xc8e6b562, 0xc2da4105, 0xbd553175, 0xb8cee3d8, 0xb5797014, 0xb36ec4ae, 0xb2bec333, 0xb36ec4ae,
|
||||
0xb5797014, 0xb8cee3d8, 0xbd553175, 0xc2e92723, 0xc95f619a, 0xd0859d8b, 0xd8243e9f, 0xe0000000,
|
||||
0xe7dbc161, 0xef7a6275, 0xf6a09e66, 0xfd16d8dd,
|
||||
},
|
||||
};
|
||||
|
||||
/* indexing = [mid-side off/on][intensity scale factor]
|
||||
* format = Q30, range = [0.0, 1.414]
|
||||
*
|
||||
* mid-side off:
|
||||
* ISFMpeg1[0][i] = tan(i*pi/12) / [1 + tan(i*pi/12)] (left scalefactor)
|
||||
* = 1 / [1 + tan(i*pi/12)] (right scalefactor)
|
||||
*
|
||||
* mid-side on:
|
||||
* ISFMpeg1[1][i] = sqrt(2) * ISFMpeg1[0][i]
|
||||
*
|
||||
* output L = ISFMpeg1[midSide][isf][0] * input L
|
||||
* output R = ISFMpeg1[midSide][isf][1] * input L
|
||||
*
|
||||
* obviously left scalefactor + right scalefactor = 1 (m-s off) or sqrt(2) (m-s on)
|
||||
* so just store left and calculate right as 1 - left
|
||||
* (can derive as right = ISFMpeg1[x][6] - left)
|
||||
*
|
||||
* if mid-side enabled, multiply joint stereo scale factors by sqrt(2)
|
||||
* - we scaled whole spectrum by 1/sqrt(2) in Dequant for the M+S/sqrt(2) in MidSideProc
|
||||
* - but the joint stereo part of the spectrum doesn't need this, so we have to undo it
|
||||
*
|
||||
* if scale factor is and illegal intensity position, this becomes a passthrough
|
||||
* - gain = [1, 0] if mid-side off, since L is coded directly and R = 0 in this region
|
||||
* - gain = [1, 1] if mid-side on, since L = (M+S)/sqrt(2), R = (M-S)/sqrt(2)
|
||||
* - and since S = 0 in the joint stereo region (above NZB right) then L = R = M * 1.0
|
||||
*/
|
||||
const int ISFMpeg1[2][7] = {
|
||||
{0x00000000, 0x0d8658ba, 0x176cf5d0, 0x20000000, 0x28930a2f, 0x3279a745, 0x40000000},
|
||||
{0x00000000, 0x13207f5c, 0x2120fb83, 0x2d413ccc, 0x39617e16, 0x4761fa3d, 0x5a827999}
|
||||
};
|
||||
|
||||
/* indexing = [intensity scale on/off][mid-side off/on][intensity scale factor]
|
||||
* format = Q30, range = [0.0, 1.414]
|
||||
*
|
||||
* if (isf == 0) kl = 1.0 kr = 1.0
|
||||
* else if (isf & 0x01 == 0x01) kl = i0^((isf+1)/2), kr = 1.0
|
||||
* else if (isf & 0x01 == 0x00) kl = 1.0, kr = i0^(isf/2)
|
||||
*
|
||||
* if (intensityScale == 1) i0 = 1/sqrt(2) = 0x2d413ccc (Q30)
|
||||
* else i0 = 1/sqrt(sqrt(2)) = 0x35d13f32 (Q30)
|
||||
*
|
||||
* see comments for ISFMpeg1 (just above) regarding scaling, sqrt(2), etc.
|
||||
*
|
||||
* compress the MPEG2 table using the obvious identities above...
|
||||
* for isf = [0, 1, 2, ... 30], let sf = table[(isf+1) >> 1]
|
||||
* - if isf odd, L = sf*L, R = tab[0]*R
|
||||
* - if isf even, L = tab[0]*L, R = sf*R
|
||||
*/
|
||||
const int ISFMpeg2[2][2][16] = {
|
||||
{
|
||||
{
|
||||
/* intensityScale off, mid-side off */
|
||||
0x40000000, 0x35d13f32, 0x2d413ccc, 0x260dfc14, 0x1fffffff, 0x1ae89f99, 0x16a09e66, 0x1306fe0a,
|
||||
0x0fffffff, 0x0d744fcc, 0x0b504f33, 0x09837f05, 0x07ffffff, 0x06ba27e6, 0x05a82799, 0x04c1bf82,
|
||||
},
|
||||
{
|
||||
/* intensityScale off, mid-side on */
|
||||
0x5a827999, 0x4c1bf827, 0x3fffffff, 0x35d13f32, 0x2d413ccc, 0x260dfc13, 0x1fffffff, 0x1ae89f99,
|
||||
0x16a09e66, 0x1306fe09, 0x0fffffff, 0x0d744fcc, 0x0b504f33, 0x09837f04, 0x07ffffff, 0x06ba27e6,
|
||||
},
|
||||
},
|
||||
{
|
||||
{
|
||||
/* intensityScale on, mid-side off */
|
||||
0x40000000, 0x2d413ccc, 0x20000000, 0x16a09e66, 0x10000000, 0x0b504f33, 0x08000000, 0x05a82799,
|
||||
0x04000000, 0x02d413cc, 0x02000000, 0x016a09e6, 0x01000000, 0x00b504f3, 0x00800000, 0x005a8279,
|
||||
},
|
||||
/* intensityScale on, mid-side on */
|
||||
{
|
||||
0x5a827999, 0x3fffffff, 0x2d413ccc, 0x1fffffff, 0x16a09e66, 0x0fffffff, 0x0b504f33, 0x07ffffff,
|
||||
0x05a82799, 0x03ffffff, 0x02d413cc, 0x01ffffff, 0x016a09e6, 0x00ffffff, 0x00b504f3, 0x007fffff,
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* indexing = [intensity scale on/off][left/right]
|
||||
* format = Q30, range = [0.0, 1.414]
|
||||
*
|
||||
* illegal intensity position scalefactors (see comments on ISFMpeg1)
|
||||
*/
|
||||
const int ISFIIP[2][2] = {
|
||||
{0x40000000, 0x00000000}, /* mid-side off */
|
||||
{0x40000000, 0x40000000}, /* mid-side on */
|
||||
};
|
||||
|
||||
const unsigned char uniqueIDTab[8] = {0x5f, 0x4b, 0x43, 0x5f, 0x5f, 0x4a, 0x52, 0x5f};
|
||||
|
||||
/* anti-alias coefficients - see spec Annex B, table 3-B.9
|
||||
* csa[0][i] = CSi, csa[1][i] = CAi
|
||||
* format = Q31
|
||||
*/
|
||||
const int csa[8][2] = {
|
||||
{0x6dc253f0, 0xbe2500aa},
|
||||
{0x70dcebe4, 0xc39e4949},
|
||||
{0x798d6e73, 0xd7e33f4a},
|
||||
{0x7ddd40a7, 0xe8b71176},
|
||||
{0x7f6d20b7, 0xf3e4fe2f},
|
||||
{0x7fe47e40, 0xfac1a3c7},
|
||||
{0x7ffcb263, 0xfe2ebdc6},
|
||||
{0x7fffc694, 0xff86c25d},
|
||||
};
|
||||
|
||||
/* format = Q30, range = [0.0981, 1.9976]
|
||||
*
|
||||
* n = 16;
|
||||
* k = 0;
|
||||
* for(i=0; i<5; i++, n=n/2) {
|
||||
* for(p=0; p<n; p++, k++) {
|
||||
* t = (PI / (4*n)) * (2*p + 1);
|
||||
* coef32[k] = 2.0 * cos(t);
|
||||
* }
|
||||
* }
|
||||
* coef32[30] *= 0.5; / *** for initial back butterfly (i.e. two-point DCT) *** /
|
||||
*/
|
||||
const int coef32[31] = {
|
||||
0x7fd8878d, 0x7e9d55fc, 0x7c29fbee, 0x78848413, 0x73b5ebd0, 0x6dca0d14, 0x66cf811f, 0x5ed77c89,
|
||||
0x55f5a4d2, 0x4c3fdff3, 0x41ce1e64, 0x36ba2013, 0x2b1f34eb, 0x1f19f97b, 0x12c8106e, 0x0647d97c,
|
||||
0x7f62368f, 0x7a7d055b, 0x70e2cbc6, 0x62f201ac, 0x5133cc94, 0x3c56ba70, 0x25280c5d, 0x0c8bd35e,
|
||||
0x7d8a5f3f, 0x6a6d98a4, 0x471cece6, 0x18f8b83c, 0x7641af3c, 0x30fbc54d, 0x2d413ccc,
|
||||
};
|
||||
|
||||
/* format = Q30, right shifted by 12 (sign bits only in top 12 - undo this when rounding to short)
|
||||
* this is to enable early-terminating multiplies on ARM
|
||||
* range = [-1.144287109, 1.144989014]
|
||||
* max gain of filter (per output sample) ~= 2.731
|
||||
*
|
||||
* new (properly sign-flipped) values
|
||||
* - these actually are correct to 32 bits, (floating-pt coefficients in spec
|
||||
* chosen such that only ~20 bits are required)
|
||||
*
|
||||
* Reordering - see table 3-B.3 in spec (appendix B)
|
||||
*
|
||||
* polyCoef[i] =
|
||||
* D[ 0, 32, 64, ... 480], i = [ 0, 15]
|
||||
* D[ 1, 33, 65, ... 481], i = [ 16, 31]
|
||||
* D[ 2, 34, 66, ... 482], i = [ 32, 47]
|
||||
* ...
|
||||
* D[15, 47, 79, ... 495], i = [240,255]
|
||||
*
|
||||
* also exploits symmetry: D[i] = -D[512 - i], for i = [1, 255]
|
||||
*
|
||||
* polyCoef[256, 257, ... 263] are for special case of sample 16 (out of 0)
|
||||
* see PolyphaseStereo() and PolyphaseMono()
|
||||
*/
|
||||
const int polyCoef[264] = {
|
||||
/* shuffled vs. original from 0, 1, ... 15 to 0, 15, 2, 13, ... 14, 1 */
|
||||
0x00000000, 0x00000074, 0x00000354, 0x0000072c, 0x00001fd4, 0x00005084, 0x000066b8, 0x000249c4,
|
||||
0x00049478, 0xfffdb63c, 0x000066b8, 0xffffaf7c, 0x00001fd4, 0xfffff8d4, 0x00000354, 0xffffff8c,
|
||||
0xfffffffc, 0x00000068, 0x00000368, 0x00000644, 0x00001f40, 0x00004ad0, 0x00005d1c, 0x00022ce0,
|
||||
0x000493c0, 0xfffd9960, 0x00006f78, 0xffffa9cc, 0x0000203c, 0xfffff7e4, 0x00000340, 0xffffff84,
|
||||
0xfffffffc, 0x00000060, 0x00000378, 0x0000056c, 0x00001e80, 0x00004524, 0x000052a0, 0x00020ffc,
|
||||
0x000491a0, 0xfffd7ca0, 0x00007760, 0xffffa424, 0x00002080, 0xfffff6ec, 0x00000328, 0xffffff74,
|
||||
0xfffffffc, 0x00000054, 0x00000384, 0x00000498, 0x00001d94, 0x00003f7c, 0x00004744, 0x0001f32c,
|
||||
0x00048e18, 0xfffd6008, 0x00007e70, 0xffff9e8c, 0x0000209c, 0xfffff5ec, 0x00000310, 0xffffff68,
|
||||
0xfffffffc, 0x0000004c, 0x0000038c, 0x000003d0, 0x00001c78, 0x000039e4, 0x00003b00, 0x0001d680,
|
||||
0x00048924, 0xfffd43ac, 0x000084b0, 0xffff990c, 0x00002094, 0xfffff4e4, 0x000002f8, 0xffffff5c,
|
||||
0xfffffffc, 0x00000044, 0x00000390, 0x00000314, 0x00001b2c, 0x0000345c, 0x00002ddc, 0x0001ba04,
|
||||
0x000482d0, 0xfffd279c, 0x00008a20, 0xffff93a4, 0x0000206c, 0xfffff3d4, 0x000002dc, 0xffffff4c,
|
||||
0xfffffffc, 0x00000040, 0x00000390, 0x00000264, 0x000019b0, 0x00002ef0, 0x00001fd4, 0x00019dc8,
|
||||
0x00047b1c, 0xfffd0be8, 0x00008ecc, 0xffff8e64, 0x00002024, 0xfffff2c0, 0x000002c0, 0xffffff3c,
|
||||
0xfffffff8, 0x00000038, 0x0000038c, 0x000001bc, 0x000017fc, 0x0000299c, 0x000010e8, 0x000181d8,
|
||||
0x0004720c, 0xfffcf09c, 0x000092b4, 0xffff894c, 0x00001fc0, 0xfffff1a4, 0x000002a4, 0xffffff2c,
|
||||
0xfffffff8, 0x00000034, 0x00000380, 0x00000120, 0x00001618, 0x00002468, 0x00000118, 0x00016644,
|
||||
0x000467a4, 0xfffcd5cc, 0x000095e0, 0xffff8468, 0x00001f44, 0xfffff084, 0x00000284, 0xffffff18,
|
||||
0xfffffff8, 0x0000002c, 0x00000374, 0x00000090, 0x00001400, 0x00001f58, 0xfffff068, 0x00014b14,
|
||||
0x00045bf0, 0xfffcbb88, 0x00009858, 0xffff7fbc, 0x00001ea8, 0xffffef60, 0x00000268, 0xffffff04,
|
||||
0xfffffff8, 0x00000028, 0x0000035c, 0x00000008, 0x000011ac, 0x00001a70, 0xffffded8, 0x00013058,
|
||||
0x00044ef8, 0xfffca1d8, 0x00009a1c, 0xffff7b54, 0x00001dfc, 0xffffee3c, 0x0000024c, 0xfffffef0,
|
||||
0xfffffff4, 0x00000024, 0x00000340, 0xffffff8c, 0x00000f28, 0x000015b0, 0xffffcc70, 0x0001161c,
|
||||
0x000440bc, 0xfffc88d8, 0x00009b3c, 0xffff7734, 0x00001d38, 0xffffed18, 0x0000022c, 0xfffffedc,
|
||||
0xfffffff4, 0x00000020, 0x00000320, 0xffffff1c, 0x00000c68, 0x0000111c, 0xffffb92c, 0x0000fc6c,
|
||||
0x00043150, 0xfffc708c, 0x00009bb8, 0xffff7368, 0x00001c64, 0xffffebf4, 0x00000210, 0xfffffec4,
|
||||
0xfffffff0, 0x0000001c, 0x000002f4, 0xfffffeb4, 0x00000974, 0x00000cb8, 0xffffa518, 0x0000e350,
|
||||
0x000420b4, 0xfffc5908, 0x00009b9c, 0xffff6ff4, 0x00001b7c, 0xffffead0, 0x000001f4, 0xfffffeac,
|
||||
0xfffffff0, 0x0000001c, 0x000002c4, 0xfffffe58, 0x00000648, 0x00000884, 0xffff9038, 0x0000cad0,
|
||||
0x00040ef8, 0xfffc425c, 0x00009af0, 0xffff6ce0, 0x00001a88, 0xffffe9b0, 0x000001d4, 0xfffffe94,
|
||||
0xffffffec, 0x00000018, 0x0000028c, 0xfffffe04, 0x000002e4, 0x00000480, 0xffff7a90, 0x0000b2fc,
|
||||
0x0003fc28, 0xfffc2c90, 0x000099b8, 0xffff6a3c, 0x00001988, 0xffffe898, 0x000001bc, 0xfffffe7c,
|
||||
0x000001a0, 0x0000187c, 0x000097fc, 0x0003e84c, 0xffff6424, 0xffffff4c, 0x00000248, 0xffffffec,
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
||||
|
||||
The contents of this directory, and (except where otherwise
|
||||
indicated) the directories included within this directory, are
|
||||
subject to the current version of the RealNetworks Public Source
|
||||
License (the "RPSL") available at RPSL.txt in this directory, unless
|
||||
you have licensed the directory under the current version of the
|
||||
RealNetworks Community Source License (the "RCSL") available at
|
||||
RCSL.txt in this directory, in which case the RCSL will apply. You
|
||||
may also obtain the license terms directly from RealNetworks. You
|
||||
may not use the files in this directory except in compliance with the
|
||||
RPSL or, if you have a valid RCSL with RealNetworks applicable to
|
||||
this directory, the RCSL. Please see the applicable RPSL or RCSL for
|
||||
the rights, obligations and limitations governing use of the contents
|
||||
of the directory.
|
||||
|
||||
This directory is part of the Helix DNA Technology. RealNetworks is
|
||||
the developer of the Original Code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This directory, and the directories included with this directory, are
|
||||
distributed and made available on an 'AS IS' basis, WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY
|
||||
DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
http://www.helixcommunity.org/content/tck
|
||||
|
||||
|
|
@ -0,0 +1,948 @@
|
|||
The RCSL is made up of a base agreement and a few Attachments.
|
||||
|
||||
For Research and Development use, you agree to the terms of the
|
||||
RCSL R&D License (base RCSL and Attachments A, B, and C)
|
||||
|
||||
For Commercial Use (either distribution or internal commercial
|
||||
deployment) of the Helix DNA with or without support for RealNetworks'
|
||||
RealAudio and RealVideo Add-on Technology, you agree to the
|
||||
terms of the same RCSL R&D license
|
||||
and execute one or more additional Commercial Use License attachments
|
||||
<see http://www.helixcommunity.org/content/rcsl-attachments>.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
REALNETWORKS COMMUNITY SOURCE LICENSE
|
||||
|
||||
Version 1.2 (Rev. Date: January 22, 2003).
|
||||
|
||||
|
||||
RECITALS
|
||||
|
||||
Original Contributor has developed Specifications, Source Code
|
||||
implementations and Executables of certain Technology; and
|
||||
|
||||
Original Contributor desires to license the Technology to a large
|
||||
community to facilitate research, innovation and product development
|
||||
while maintaining compatibility of such products with the Technology as
|
||||
delivered by Original Contributor; and
|
||||
|
||||
Original Contributor desires to license certain Trademarks for the
|
||||
purpose of branding products that are compatible with the relevant
|
||||
Technology delivered by Original Contributor; and
|
||||
|
||||
You desire to license the Technology and possibly certain Trademarks
|
||||
from Original Contributor on the terms and conditions specified in this
|
||||
License.
|
||||
|
||||
In consideration for the mutual covenants contained herein, You and
|
||||
Original Contributor agree as follows:
|
||||
|
||||
|
||||
AGREEMENT
|
||||
|
||||
*1. Introduction.*
|
||||
|
||||
The RealNetworks Community Source License ("RCSL") and effective
|
||||
attachments ("License") may include five distinct licenses:
|
||||
|
||||
i) Research Use license -- License plus Attachments A, B and C only.
|
||||
|
||||
ii) Commercial Use and Trademark License, which may be for Internal
|
||||
Deployment Use or external distribution, or both -- License plus
|
||||
Attachments A, B, C, and D.
|
||||
|
||||
iii) Technology Compatibility Kit (TCK) license -- Attachment C.
|
||||
|
||||
iv) Add-On Technology License (Executable) Commercial Use License
|
||||
-Attachment F.
|
||||
|
||||
v) Add-On Technology Source Code Porting and Optimization
|
||||
License-Attachment G.
|
||||
|
||||
The Research Use license is effective when You click and accept this
|
||||
License. The TCK is effective when You click and accept this License,
|
||||
unless otherwise specified in the TCK attachments. The Commercial Use
|
||||
and Trademark, Add-On Technology License, and the Add-On Technology
|
||||
Source Code Porting and Optimization licenses must each be signed by You
|
||||
and Original Contributor to become effective. Once effective, these
|
||||
licenses and the associated requirements and responsibilities are
|
||||
cumulative. Capitalized terms used in this License are defined in the
|
||||
Glossary.
|
||||
|
||||
*2. License Grants.*
|
||||
|
||||
2.1 Original Contributor Grant.
|
||||
|
||||
Subject to Your compliance with Sections 3, 8.10 and Attachment A of
|
||||
this License, Original Contributor grants to You a worldwide,
|
||||
royalty-free, non-exclusive license, to the extent of Original
|
||||
Contributor's Intellectual Property Rights covering the Original Code,
|
||||
Upgraded Code and Specifications, to do the following:
|
||||
|
||||
(a) Research Use License:
|
||||
|
||||
(i) use, reproduce and modify the Original Code, Upgraded Code and
|
||||
Specifications to create Modifications and Reformatted Specifications
|
||||
for Research Use by You;
|
||||
|
||||
(ii) publish and display Original Code, Upgraded Code and Specifications
|
||||
with, or as part of Modifications, as permitted under Section 3.1(b) below;
|
||||
|
||||
(iii) reproduce and distribute copies of Original Code and Upgraded Code
|
||||
to Licensees and students for Research Use by You;
|
||||
|
||||
(iv) compile, reproduce and distribute Original Code and Upgraded Code
|
||||
in Executable form, and Reformatted Specifications to anyone for
|
||||
Research Use by You.
|
||||
|
||||
(b) Other than the licenses expressly granted in this License, Original
|
||||
Contributor retains all right, title, and interest in Original Code and
|
||||
Upgraded Code and Specifications.
|
||||
|
||||
2.2 Your Grants.
|
||||
|
||||
(a) To Other Licensees. You hereby grant to each Licensee a license to
|
||||
Your Error Corrections and Shared Modifications, of the same scope and
|
||||
extent as Original Contributor's licenses under Section 2.1 a) above
|
||||
relative to Research Use and Attachment D relative to Commercial Use.
|
||||
|
||||
(b) To Original Contributor. You hereby grant to Original Contributor a
|
||||
worldwide, royalty-free, non-exclusive, perpetual and irrevocable
|
||||
license, to the extent of Your Intellectual Property Rights covering
|
||||
Your Error Corrections, Shared Modifications and Reformatted
|
||||
Specifications, to use, reproduce, modify, display and distribute Your
|
||||
Error Corrections, Shared Modifications and Reformatted Specifications,
|
||||
in any form, including the right to sublicense such rights through
|
||||
multiple tiers of distribution.
|
||||
|
||||
(c) Other than the licenses expressly granted in Sections 2.2(a) and (b)
|
||||
above, and the restrictions set forth in Section 3.1(d)(iv) below, You
|
||||
retain all right, title, and interest in Your Error Corrections, Shared
|
||||
Modifications and Reformatted Specifications.
|
||||
|
||||
2.3 Contributor Modifications.
|
||||
|
||||
You may use, reproduce, modify, display and distribute Contributor Error
|
||||
Corrections, Shared Modifications and Reformatted Specifications,
|
||||
obtained by You under this License, to the same scope and extent as with
|
||||
Original Code, Upgraded Code and Specifications.
|
||||
|
||||
2.4 Subcontracting.
|
||||
|
||||
You may deliver the Source Code of Covered Code to other Licensees
|
||||
having at least a Research Use license, for the sole purpose of
|
||||
furnishing development services to You in connection with Your rights
|
||||
granted in this License. All such Licensees must execute appropriate
|
||||
documents with respect to such work consistent with the terms of this
|
||||
License, and acknowledging their work-made-for-hire status or assigning
|
||||
exclusive right to the work product and associated Intellectual Property
|
||||
Rights to You.
|
||||
|
||||
*3. Requirements and Responsibilities*.
|
||||
|
||||
3.1 Research Use License.
|
||||
|
||||
As a condition of exercising the rights granted under Section 2.1(a)
|
||||
above, You agree to comply with the following:
|
||||
|
||||
(a) Your Contribution to the Community. All Error Corrections and Shared
|
||||
Modifications which You create or contribute to are automatically
|
||||
subject to the licenses granted under Section 2.2 above. You are
|
||||
encouraged to license all of Your other Modifications under Section 2.2
|
||||
as Shared Modifications, but are not required to do so. You agree to
|
||||
notify Original Contributor of any errors in the Specification.
|
||||
|
||||
(b) Source Code Availability. You agree to provide all Your Error
|
||||
Corrections to Original Contributor as soon as reasonably practicable
|
||||
and, in any event, prior to Internal Deployment Use or Commercial Use,
|
||||
if applicable. Original Contributor may, at its discretion, post Source
|
||||
Code for Your Error Corrections and Shared Modifications on the
|
||||
Community Webserver. You may also post Error Corrections and Shared
|
||||
Modifications on a web-server of Your choice; provided, that You must
|
||||
take reasonable precautions to ensure that only Licensees have access to
|
||||
such Error Corrections and Shared Modifications. Such precautions shall
|
||||
include, without limitation, a password protection scheme limited to
|
||||
Licensees and a click-on, download certification of Licensee status
|
||||
required of those attempting to download from the server. An example of
|
||||
an acceptable certification is attached as Attachment A-2.
|
||||
|
||||
(c) Notices. All Error Corrections and Shared Modifications You create
|
||||
or contribute to must include a file documenting the additions and
|
||||
changes You made and the date of such additions and changes. You must
|
||||
also include the notice set forth in Attachment A-1 in the file header.
|
||||
If it is not possible to put the notice in a particular Source Code file
|
||||
due to its structure, then You must include the notice in a location
|
||||
(such as a relevant directory file), where a recipient would be most
|
||||
likely to look for such a notice.
|
||||
|
||||
(d) Redistribution.
|
||||
|
||||
(i) Source. Covered Code may be distributed in Source Code form only to
|
||||
another Licensee (except for students as provided below). You may not
|
||||
offer or impose any terms on any Covered Code that alter the rights,
|
||||
requirements, or responsibilities of such Licensee. You may distribute
|
||||
Covered Code to students for use in connection with their course work
|
||||
and research projects undertaken at accredited educational institutions.
|
||||
Such students need not be Licensees, but must be given a copy of the
|
||||
notice set forth in Attachment A-3 and such notice must also be included
|
||||
in a file header or prominent location in the Source Code made available
|
||||
to such students.
|
||||
|
||||
(ii) Executable. You may distribute Executable version(s) of Covered
|
||||
Code to Licensees and other third parties only for the purpose of
|
||||
evaluation and comment in connection with Research Use by You and under
|
||||
a license of Your choice, but which limits use of such Executable
|
||||
version(s) of Covered Code only to that purpose.
|
||||
|
||||
(iii) Modified Class, Interface and Package Naming. In connection with
|
||||
Research Use by You only, You may use Original Contributor's class,
|
||||
Interface and package names only to accurately reference or invoke the
|
||||
Source Code files You modify. Original Contributor grants to You a
|
||||
limited license to the extent necessary for such purposes.
|
||||
|
||||
(iv) You expressly agree that any distribution, in whole or in part, of
|
||||
Modifications developed by You shall only be done pursuant to the terms
|
||||
and conditions of this License.
|
||||
|
||||
(e) Extensions.
|
||||
|
||||
(i) Covered Code. You may not include any Source Code of Community Code
|
||||
in any Extensions. You may include the compiled Header Files of
|
||||
Community Code in an Extension provided that Your use of the Covered
|
||||
Code, including Heading Files, complies with the Commercial Use License,
|
||||
the TCK and all other terms of this License.
|
||||
|
||||
(ii) Publication. No later than the date on which You first distribute
|
||||
such Extension for Commercial Use, You must publish to the industry, on
|
||||
a non-confidential basis and free of all copyright restrictions with
|
||||
respect to reproduction and use, an accurate and current specification
|
||||
for any Extension. In addition, You must make available an appropriate
|
||||
test suite, pursuant to the same rights as the specification,
|
||||
sufficiently detailed to allow any third party reasonably skilled in the
|
||||
technology to produce implementations of the Extension compatible with
|
||||
the specification. Such test suites must be made available as soon as
|
||||
reasonably practicable but, in no event, later than ninety (90) days
|
||||
after Your first Commercial Use of the Extension. You must use
|
||||
reasonable efforts to promptly clarify and correct the specification and
|
||||
the test suite upon written request by Original Contributor.
|
||||
|
||||
(iii) Open. You agree to refrain from enforcing any Intellectual
|
||||
Property Rights You may have covering any interface(s) of Your
|
||||
Extension, which would prevent the implementation of such interface(s)
|
||||
by Original Contributor or any Licensee. This obligation does not
|
||||
prevent You from enforcing any Intellectual Property Right You have that
|
||||
would otherwise be infringed by an implementation of Your Extension.
|
||||
|
||||
(iv) Interface Modifications and Naming. You may not modify or add to
|
||||
the GUID space * * "xxxxxxxx-0901-11d1-8B06-00A024406D59" or any other
|
||||
GUID space designated by Original Contributor. You may not modify any
|
||||
Interface prefix provided with the Covered Code or any other prefix
|
||||
designated by Original Contributor.* *
|
||||
|
||||
* *
|
||||
|
||||
(f) You agree that any Specifications provided to You by Original
|
||||
Contributor are confidential and proprietary information of Original
|
||||
Contributor. You must maintain the confidentiality of the Specifications
|
||||
and may not disclose them to any third party without Original
|
||||
Contributor's prior written consent. You may only use the Specifications
|
||||
under the terms of this License and only for the purpose of implementing
|
||||
the terms of this License with respect to Covered Code. You agree not
|
||||
use, copy or distribute any such Specifications except as provided in
|
||||
writing by Original Contributor.
|
||||
|
||||
3.2 Commercial Use License.
|
||||
|
||||
You may not make Commercial Use of any Covered Code unless You and
|
||||
Original Contributor have executed a copy of the Commercial Use and
|
||||
Trademark License attached as Attachment D.
|
||||
|
||||
*4. Versions of the License.*
|
||||
|
||||
4.1 License Versions.
|
||||
|
||||
Original Contributor may publish revised versions of the License from
|
||||
time to time. Each version will be given a distinguishing version number.
|
||||
|
||||
4.2 Effect.
|
||||
|
||||
Once a particular version of Covered Code has been provided under a
|
||||
version of the License, You may always continue to use such Covered Code
|
||||
under the terms of that version of the License. You may also choose to
|
||||
use such Covered Code under the terms of any subsequent version of the
|
||||
License. No one other than Original Contributor has the right to
|
||||
promulgate License versions.
|
||||
|
||||
4.3 Multiple-Licensed Code.
|
||||
|
||||
Original Contributor may designate portions of the Covered Code as
|
||||
"Multiple-Licensed." "Multiple-Licensed" means that the Original
|
||||
Contributor permits You to utilize those designated portions of the
|
||||
Covered Code under Your choice of this License or the alternative
|
||||
license(s), if any, specified by the Original Contributor in an
|
||||
Attachment to this License.
|
||||
|
||||
*5. Disclaimer of Warranty.*
|
||||
|
||||
5.1 COVERED CODE PROVIDED AS IS.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE "AS IS," WITHOUT WARRANTY OF
|
||||
ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
|
||||
WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
|
||||
FOR A PARTICULAR PURPOSE OR NON-INFRINGING. YOU AGREE TO BEAR THE ENTIRE
|
||||
RISK IN CONNECTION WITH YOUR USE AND DISTRIBUTION OF COVERED CODE UNDER
|
||||
THIS LICENSE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART
|
||||
OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER
|
||||
EXCEPT SUBJECT TO THIS DISCLAIMER.
|
||||
|
||||
5.2 Not Designed for High Risk Activities.
|
||||
|
||||
You acknowledge that Original Code, Upgraded Code and Specifications are
|
||||
not designed or intended for use in high risk activities including, but
|
||||
not limited to: (i) on-line control of aircraft, air traffic, aircraft
|
||||
navigation or aircraft communications; or (ii) in the design,
|
||||
construction, operation or maintenance of any nuclear facility. Original
|
||||
Contributor disclaims any express or implied warranty of fitness for
|
||||
such uses.
|
||||
|
||||
*6. Termination.*
|
||||
|
||||
6.1 By You.
|
||||
|
||||
You may terminate this Research Use license at anytime by providing
|
||||
written notice to Original Contributor.
|
||||
|
||||
6.2 By Original Contributor.
|
||||
|
||||
This License and the rights granted hereunder will terminate:
|
||||
|
||||
(i) automatically if You fail to comply with the terms of this License
|
||||
and fail to cure such breach within 30 days of receipt of written notice
|
||||
of the breach;
|
||||
|
||||
(ii) immediately in the event of circumstances specified in Sections 7.1
|
||||
and 8.4; or
|
||||
|
||||
(iii) at Original Contributor's discretion upon any action initiated by
|
||||
You (including by cross-claim or counter claim) alleging that use or
|
||||
distribution by Original Contributor or any Licensee, of Original Code,
|
||||
Upgraded Code, Error Corrections, Shared Modifications or Specifications
|
||||
infringe a patent owned or controlled by You.
|
||||
|
||||
6.3 Effective of Termination.
|
||||
|
||||
Upon termination, You agree to discontinue use of and destroy all copies
|
||||
of Covered Code in Your possession. All sublicenses to the Covered Code
|
||||
which You have properly granted shall survive any termination of this
|
||||
License. Provisions that, by their nature, should remain in effect
|
||||
beyond the termination of this License shall survive including, without
|
||||
limitation, Sections 2.2, 3, 5, 7 and 8.
|
||||
|
||||
6.4 No Compensation.
|
||||
|
||||
Each party waives and releases the other from any claim to compensation
|
||||
or indemnity for permitted or lawful termination of the business
|
||||
relationship established by this License.
|
||||
|
||||
*7. Liability.*
|
||||
|
||||
7.1 Infringement. Should any of the Original Code, Upgraded Code, TCK or
|
||||
Specifications ("Materials") become the subject of a claim of
|
||||
infringement, Original Contributor may, at its sole option, (i) attempt
|
||||
to procure the rights necessary for You to continue using the Materials,
|
||||
(ii) modify the Materials so that they are no longer infringing, or
|
||||
(iii) terminate Your right to use the Materials, immediately upon
|
||||
written notice, and refund to You the amount, if any, having then
|
||||
actually been paid by You to Original Contributor for the Original Code,
|
||||
Upgraded Code and TCK, depreciated on a straight line, five year basis.
|
||||
|
||||
7.2 LIMITATION OF LIABILITY. TO THE FULL EXTENT ALLOWED BY APPLICABLE
|
||||
LAW, ORIGINAL CONTRIBUTOR'S LIABILITY TO YOU FOR CLAIMS RELATING TO THIS
|
||||
LICENSE, WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE HUNDRED
|
||||
PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY BEEN PAID BY YOU TO
|
||||
ORIGINAL CONTRIBUTOR FOR ALL COPIES LICENSED HEREUNDER OF THE PARTICULAR
|
||||
ITEMS GIVING RISE TO SUCH CLAIM, IF ANY, DURING THE TWELVE MONTHS
|
||||
PRECEDING THE CLAIMED BREACH. IN NO EVENT WILL YOU (RELATIVE TO YOUR
|
||||
SHARED MODIFICATIONS OR ERROR CORRECTIONS) OR ORIGINAL CONTRIBUTOR BE
|
||||
LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES IN CONNECTION WITH OR RISING OUT OF THIS LICENSE (INCLUDING,
|
||||
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER ECONOMIC
|
||||
ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
AN ACTION FOR CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE)
|
||||
OR OTHERWISE, WHETHER OR NOT YOU OR ORIGINAL CONTRIBUTOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE
|
||||
FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
|
||||
|
||||
*8. Miscellaneous.*
|
||||
|
||||
8.1 Trademark.
|
||||
|
||||
You shall not use any Trademark unless You and Original Contributor
|
||||
execute a copy of the Commercial Use and Trademark License Agreement
|
||||
attached hereto as Attachment D. Except as expressly provided in the
|
||||
License, You are granted no right, title or license to, or interest in,
|
||||
any Trademarks. Whether or not You and Original Contributor enter into
|
||||
the Trademark License, You agree not to (i) challenge Original
|
||||
Contributor's ownership or use of Trademarks; (ii) attempt to register
|
||||
any Trademarks, or any mark or logo substantially similar thereto; or
|
||||
(iii) incorporate any Trademarks into Your own trademarks, product
|
||||
names, service marks, company names, or domain names.
|
||||
|
||||
8.2 Integration.
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof.
|
||||
|
||||
8.3 Assignment.
|
||||
|
||||
Original Contributor may assign this License, and its rights and
|
||||
obligations hereunder, in its sole discretion. You may assign the
|
||||
Research Use portions of this License and the TCK license to a third
|
||||
party upon prior written notice to Original Contributor (which may be
|
||||
provided electronically via the Community Web-Server). You may not
|
||||
assign the Commercial Use and Trademark license, the Add-On Technology
|
||||
License, or the Add-On Technology Source Code Porting License, including
|
||||
by way of merger (regardless of whether You are the surviving entity) or
|
||||
acquisition, without Original Contributor's prior written consent.
|
||||
|
||||
8.4 Severability.
|
||||
|
||||
If any provision of this License is held to be unenforceable, such
|
||||
provision shall be reformed only to the extent necessary to make it
|
||||
enforceable. Notwithstanding the foregoing, if You are prohibited by law
|
||||
from fully and specifically complying with Sections 2.2 or 3, this
|
||||
License will immediately terminate and You must immediately discontinue
|
||||
any use of Covered Code.
|
||||
|
||||
8.5 Governing Law.
|
||||
|
||||
This License shall be governed by the laws of the United States and the
|
||||
State of Washington, as applied to contracts entered into and to be
|
||||
performed in Washington between Washington residents. The application of
|
||||
the United Nations Convention on Contracts for the International Sale of
|
||||
Goods is expressly excluded. You agree that the state and federal courts
|
||||
located in Seattle, Washington have exclusive jurisdiction over any
|
||||
claim relating to the License, including contract and tort claims.
|
||||
|
||||
8.6 Dispute Resolution.
|
||||
|
||||
a) Arbitration. Any dispute arising out of or relating to this License
|
||||
shall be finally settled by arbitration as set out herein, except that
|
||||
either party may bring any action, in a court of competent jurisdiction
|
||||
(which jurisdiction shall be exclusive), with respect to any dispute
|
||||
relating to such party's Intellectual Property Rights or with respect to
|
||||
Your compliance with the TCK license. Arbitration shall be administered:
|
||||
(i) by the American Arbitration Association (AAA), (ii) in accordance
|
||||
with the rules of the United Nations Commission on International Trade
|
||||
Law (UNCITRAL) (the "Rules") in effect at the time of arbitration as
|
||||
modified herein; and (iii) the arbitrator will apply the substantive
|
||||
laws of Washington and the United States. Judgment upon the award
|
||||
rendered by the arbitrator may be entered in any court having
|
||||
jurisdiction to enforce such award.
|
||||
|
||||
b) Arbitration language, venue and damages. All arbitration proceedings
|
||||
shall be conducted in English by a single arbitrator selected in
|
||||
accordance with the Rules, who must be fluent in English and be either a
|
||||
retired judge or practicing attorney having at least ten (10) years
|
||||
litigation experience and be reasonably familiar with the technology
|
||||
matters relative to the dispute. Unless otherwise agreed, arbitration
|
||||
venue shall be in Seattle, Washington. The arbitrator may award monetary
|
||||
damages only and nothing shall preclude either party from seeking
|
||||
provisional or emergency relief from a court of competent jurisdiction.
|
||||
The arbitrator shall have no authority to award damages in excess of
|
||||
those permitted in this License and any such award in excess is void.
|
||||
All awards will be payable in U.S. dollars and may include, for the
|
||||
prevailing party (i) pre-judgment award interest, (ii) reasonable
|
||||
attorneys' fees incurred in connection with the arbitration, and (iii)
|
||||
reasonable costs and expenses incurred in enforcing the award. The
|
||||
arbitrator will order each party to produce identified documents and
|
||||
respond to no more than twenty-five single question interrogatories.
|
||||
|
||||
8.7 Construction.
|
||||
|
||||
Any law or regulation, which provides that the language of a contract
|
||||
shall be construed against the drafter, shall not apply to this License.
|
||||
|
||||
8.8 U.S. Government End Users.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in 48
|
||||
C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software"
|
||||
and "commercial computer software documentation," as such terms are used
|
||||
in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
|
||||
48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
|
||||
End Users acquire Covered Code with only those rights set forth herein.
|
||||
You agree to pass this notice to our licensees.
|
||||
|
||||
8.9 Marketing Activities.
|
||||
|
||||
Licensee hereby grants Original Contributor a non-exclusive,
|
||||
non-transferable, limited license to use the Licensee's company name and
|
||||
logo ("Licensee Marks") in any presentations, press releases, or
|
||||
marketing materials solely for the purpose of identifying Licensee as a
|
||||
member of the Helix Community. Licensee shall provide samples of
|
||||
Licensee Marks to Original Contributor upon request by Original
|
||||
Contributor. Original Contributor acknowledges that the Licensee Marks
|
||||
are the trademarks of Licensee. Original Contributor shall not use the
|
||||
Licensee Marks in a way that may imply that Original Contributor is an
|
||||
agency or branch of Licensee. Original Contributor understands and
|
||||
agrees that the use of any Licensee Marks in connection with this
|
||||
Agreement shall not create any right, title or interest, in, or to the
|
||||
Licensee Marks or any Licensee trademarks and that all such use and
|
||||
goodwill associated with any such trademarks will inure to the benefit
|
||||
of Licensee. Further the Original Contributor will stop usage of the
|
||||
Licensee Marks upon Licensee's request.
|
||||
|
||||
8.10 Press Announcements.
|
||||
|
||||
You may make press announcements or other public statements regarding
|
||||
this License without the prior written consent of the Original
|
||||
Contributor, if Your statement is limited to announcing the licensing of
|
||||
the Covered Code or the availability of Your Product and its
|
||||
compatibility with the Covered Code. All other public announcements
|
||||
regarding this license require the prior written consent of the Original
|
||||
Contributor. Consent requests are welcome at press@helixcommunity.org.
|
||||
|
||||
8.11 International Use.
|
||||
|
||||
a) Export/Import laws. Covered Code is subject to U.S. export control
|
||||
laws and may be subject to export or import regulations in other
|
||||
countries. Each party agrees to comply strictly with all such laws and
|
||||
regulations and acknowledges their responsibility to obtain such
|
||||
licenses to export, re-export, or import as may be required. You agree
|
||||
to pass these obligations to Your licensees.
|
||||
|
||||
b) Intellectual Property Protection. Due to limited intellectual
|
||||
property protection and enforcement in certain countries, You agree not
|
||||
to redistribute the Original Code, Upgraded Code, TCK and Specifications
|
||||
to any country on the list of restricted countries on the Community Web
|
||||
Server.
|
||||
|
||||
8.12 Language.
|
||||
|
||||
This License is in the English language only, which language shall be
|
||||
controlling in all respects, and all versions of this License in any
|
||||
other language shall be for accommodation only and shall not be binding
|
||||
on the parties to this License. All communications and notices made or
|
||||
given pursuant to this License, and all documentation and support to be
|
||||
provided, unless otherwise noted, shall be in the English language.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH REALNETWORKS, INC. IF YOU ARE AGREEING
|
||||
TO THIS LICENSE ON BEHALF OF A COMPANY, YOU REPRESENT THAT YOU ARE
|
||||
AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE. WHETHER YOU ARE ACTING
|
||||
ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY, YOU MUST BE OF MAJORITY
|
||||
AGE AND BE OTHERWISE COMPETENT TO ENTER INTO CONTRACTS. IF YOU DO NOT
|
||||
MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY OF THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON TO EXIT.
|
||||
|
||||
|
||||
GLOSSARY
|
||||
|
||||
1. *"Added Value"* means code which:
|
||||
|
||||
(i) has a principal purpose which is substantially different from that
|
||||
of the stand-alone Technology;
|
||||
|
||||
(ii) represents a significant functional and value enhancement to the
|
||||
Technology;
|
||||
|
||||
(iii) operates in conjunction with the Technology; and
|
||||
|
||||
(iv) is not marketed as a technology which replaces or substitutes for
|
||||
the Technology
|
||||
|
||||
2. "*Applicable Patent Rights*" mean: (a) in the case where Original
|
||||
Contributor is the grantor of rights, claims of patents that (i) are now
|
||||
or hereafter acquired, owned by or assigned to Original Contributor and
|
||||
(ii) are necessarily infringed by using or making the Original Code or
|
||||
Upgraded Code, including Modifications provided by Original Contributor,
|
||||
alone and not in combination with other software or hardware; and (b) in
|
||||
the case where Licensee is the grantor of rights, claims of patents that
|
||||
(i) are now or hereafter acquired, owned by or assigned to Licensee and
|
||||
(ii) are infringed (directly or indirectly) by using or making
|
||||
Licensee's Modifications or Error Corrections, taken alone or in
|
||||
combination with Covered Code.
|
||||
|
||||
3. "*Application Programming Interfaces (APIs)"* means the interfaces,
|
||||
associated header files, service provider interfaces, and protocols that
|
||||
enable a device, application, Operating System, or other program to
|
||||
obtain services from or make requests of (or provide services in
|
||||
response to requests from) other programs, and to use, benefit from, or
|
||||
rely on the resources, facilities, and capabilities of the relevant
|
||||
programs using the APIs. APIs includes the technical documentation
|
||||
describing the APIs, the Source Code constituting the API, and any
|
||||
Header Files used with the APIs.
|
||||
|
||||
4. "*Commercial Use*" means any use (internal or external), copying,
|
||||
sublicensing or distribution (internal or external), directly or
|
||||
indirectly of Covered Code by You other than Your Research Use of
|
||||
Covered Code within Your business or organization or in conjunction with
|
||||
other Licensees with equivalent Research Use rights. Commercial Use
|
||||
includes any use of the Covered Code for direct or indirect commercial
|
||||
or strategic gain, advantage or other business purpose. Any Commercial
|
||||
Use requires execution of Attachment D by You and Original Contributor.
|
||||
|
||||
5. "*Community Code*" means the Original Code, Upgraded Code, Error
|
||||
Corrections, Shared Modifications, or any combination thereof.
|
||||
|
||||
6. "*Community Webserver(s)"* means the webservers designated by
|
||||
Original Contributor for access to the Original Code, Upgraded Code, TCK
|
||||
and Specifications and for posting Error Corrections and Shared
|
||||
Modifications.
|
||||
|
||||
7. "*Compliant Covered Code*" means Covered Code that complies with the
|
||||
requirements of the TCK.
|
||||
|
||||
8. "*Contributor*" means each Licensee that creates or contributes to
|
||||
the creation of any Error Correction or Shared Modification.
|
||||
|
||||
9. "*Covered Code*" means the Original Code, Upgraded Code,
|
||||
Modifications, or any combination thereof.
|
||||
|
||||
10. "*Error Correction*" means any change made to Community Code which
|
||||
conforms to the Specification and corrects the adverse effect of a
|
||||
failure of Community Code to perform any function set forth in or
|
||||
required by the Specifications.
|
||||
|
||||
11. "*Executable*" means Covered Code that has been converted from
|
||||
Source Code to the preferred form for execution by a computer or digital
|
||||
processor (e.g. binary form).
|
||||
|
||||
12. "*Extension(s)"* means any additional Interfaces developed by or for
|
||||
You which: (i) are designed for use with the Technology; (ii) constitute
|
||||
an API for a library of computing functions or services; and (iii) are
|
||||
disclosed or otherwise made available to third party software developers
|
||||
for the purpose of developing software which invokes such additional
|
||||
Interfaces. The foregoing shall not apply to software developed by Your
|
||||
subcontractors to be exclusively used by You.
|
||||
|
||||
13. "*Header File(s)"* means that portion of the Source Code that
|
||||
provides the names and types of member functions, data members, class
|
||||
definitions, and interface definitions necessary to implement the APIs
|
||||
for the Covered Code. Header Files include, files specifically
|
||||
designated by Original Contributor as Header Files. Header Files do not
|
||||
include the code necessary to implement the functionality underlying the
|
||||
Interface.
|
||||
|
||||
14. *"Helix DNA Server Technology"* means the program(s) that implement
|
||||
the Helix Universal Server streaming engine for the Technology as
|
||||
defined in the Specification.
|
||||
|
||||
15. *"Helix DNA Client Technology"* means the Covered Code that
|
||||
implements the RealOne Player engine as defined in the Specification.
|
||||
|
||||
16. *"Helix DNA Producer Technology"* means the Covered Code that
|
||||
implements the Helix Producer engine as defined in the Specification.
|
||||
|
||||
17. *"Helix DNA Technology"* means the Helix DNA Server Technology, the
|
||||
Helix DNA Client Technology, the Helix DNA Producer Technology and other
|
||||
Helix technologies designated by Original Contributor.
|
||||
|
||||
18. "*Intellectual Property Rights*" means worldwide statutory and
|
||||
common law rights associated solely with (i) Applicable Patent Rights;
|
||||
(ii) works of authorship including copyrights, copyright applications,
|
||||
copyright registrations and "moral rights"; (iii) the protection of
|
||||
trade and industrial secrets and confidential information; and (iv)
|
||||
divisions, continuations, renewals, and re-issuances of the foregoing
|
||||
now existing or acquired in the future.
|
||||
|
||||
19. *"Interface*" means interfaces, functions, properties, class
|
||||
definitions, APIs, Header Files, GUIDs, V-Tables, and/or protocols
|
||||
allowing one piece of software, firmware or hardware to communicate or
|
||||
interoperate with another piece of software, firmware or hardware.
|
||||
|
||||
20. "*Internal Deployment Use*" means use of Compliant Covered Code
|
||||
(excluding Research Use) within Your business or organization only by
|
||||
Your employees and/or agents on behalf of Your business or organization,
|
||||
but not to provide services, including content distribution, to third
|
||||
parties, subject to execution of Attachment D by You and Original
|
||||
Contributor, if required.
|
||||
|
||||
21. "*Licensee*" means any party that has entered into and has in effect
|
||||
a version of this License with Original Contributor.
|
||||
|
||||
22. "*MIME type*" means a description of what type of media or other
|
||||
content is in a file, including by way of example but not limited to
|
||||
'audio/x-pn-realaudio-plugin.'
|
||||
|
||||
23. "*Modification(s)"* means (i) any addition to, deletion from and/or
|
||||
change to the substance and/or structure of the Covered Code, including
|
||||
Interfaces; (ii) the combination of any Covered Code and any previous
|
||||
Modifications; (iii) any new file or other representation of computer
|
||||
program statements that contains any portion of Covered Code; and/or
|
||||
(iv) any new Source Code implementing any portion of the Specifications.
|
||||
|
||||
24. "*MP3 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Picture Experts Group known as MPEG-1 Audio Layer-3 or MP3,
|
||||
including but not limited to all past and future versions, profiles,
|
||||
extensions, parts and amendments relating to the MP3 specification.
|
||||
|
||||
25. "*MPEG-4 Patents*" means any patents necessary to make, use or sell
|
||||
technology implementing any portion of the specification developed by
|
||||
the Moving Pictures Experts Group known as MPEG-4, including but not
|
||||
limited to all past and future versions, profiles, extensions, parts and
|
||||
amendments relating to the MPEG-4 specification.
|
||||
|
||||
26. "*Original Code*" means the initial Source Code for the Technology
|
||||
as described on the Community Web Server.
|
||||
|
||||
27. "*Original Contributor*" means RealNetworks, Inc., its affiliates
|
||||
and its successors and assigns.
|
||||
|
||||
28. "*Original Contributor MIME Type*" means the MIME registry, browser
|
||||
preferences, or local file/protocol associations invoking any Helix DNA
|
||||
Client-based application, including the RealOne Player, for playback of
|
||||
RealAudio, RealVideo, other RealMedia MIME types or datatypes (e.g.,
|
||||
.ram, .rnx, .rpm, .ra, .rm, .rp, .rt, .rf, .prx, .mpe, .rmp, .rmj, .rav,
|
||||
.rjs, .rmx, .rjt, .rms), and any other Original Contributor-specific or
|
||||
proprietary MIME types that Original Contributor may introduce in the
|
||||
future.
|
||||
|
||||
29. "*Personal Use*" means use of Covered Code by an individual solely
|
||||
for his or her personal, private and non-commercial purposes. An
|
||||
individual's use of Covered Code in his or her capacity as an officer,
|
||||
employee, member, independent contractor or agent of a corporation,
|
||||
business or organization (commercial or non-commercial) does not qualify
|
||||
as Personal Use.
|
||||
|
||||
30. "*RealMedia File Format*" means the file format designed and
|
||||
developed by RealNetworks for storing multimedia data and used to store
|
||||
RealAudio and RealVideo encoded streams. Valid RealMedia File Format
|
||||
extensions include: .rm, .rmj, .rmc, .rmvb, .rms.
|
||||
|
||||
31. "*RCSL Webpage*" means the RealNetworks Community Source License
|
||||
webpage located at https://www.helixcommunity.org/content/rcsl or such
|
||||
other URL that Original Contributor may designate from time to time.
|
||||
|
||||
32. "*Reformatted Specifications*" means any revision to the
|
||||
Specifications which translates or reformats the Specifications (as for
|
||||
example in connection with Your documentation) but which does not alter,
|
||||
subset or superset * *the functional or operational aspects of the
|
||||
Specifications.
|
||||
|
||||
33. "*Research Use*" means use and distribution of Covered Code only for
|
||||
Your Personal Use, research or development use and expressly excludes
|
||||
Internal Deployment Use and Commercial Use. Research Use also includes
|
||||
use of Covered Code to teach individuals how to use Covered Code.
|
||||
|
||||
34. "*Shared Modifications*" means Modifications that You distribute or
|
||||
use for a Commercial Use, in addition to any Modifications provided by
|
||||
You, at Your option, pursuant to Section 2.2, or received by You from a
|
||||
Contributor pursuant to Section 2.3.
|
||||
|
||||
35. "*Source Code*" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus any
|
||||
associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
36. "*Specifications*" means the specifications for the Technology and
|
||||
other documentation, as designated on the Community Web Server, as may
|
||||
be revised by Original Contributor from time to time.
|
||||
|
||||
37. "*Trademarks*" means Original Contributor's trademarks and logos,
|
||||
including, but not limited to, RealNetworks, RealAudio, RealVideo,
|
||||
RealOne, RealSystem, SureStream, Helix, Helix DNA and other trademarks
|
||||
whether now used or adopted in the future.
|
||||
|
||||
38. "*Technology*" means the technology described in Attachment B, and
|
||||
Upgrades.
|
||||
|
||||
39. "*Technology Compatibility Kit"* or *"TCK*" means the test programs,
|
||||
procedures, acceptance criteria and/or other requirements, designated by
|
||||
Original Contributor for use in verifying compliance of Covered Code
|
||||
with the Specifications, in conjunction with the Original Code and
|
||||
Upgraded Code. Original Contributor may, in its sole discretion and from
|
||||
time to time, revise a TCK to correct errors and/or omissions and in
|
||||
connection with Upgrades.
|
||||
|
||||
40. "*Upgrade(s)"* means new versions of Technology designated
|
||||
exclusively by Original Contributor as an "Upgrade" and released by
|
||||
Original Contributor from time to time under the terms of the License.
|
||||
|
||||
41. "*Upgraded Code*" means the Source Code and/or Executables for
|
||||
Upgrades, possibly including Modifications made by Contributors.
|
||||
|
||||
42. *"User's Guide"* means the users guide for the TCK which Original
|
||||
Contributor makes available to You to provide direction in how to run
|
||||
the TCK and properly interpret the results, as may be revised by
|
||||
Original Contributor from time to time.
|
||||
|
||||
43. "*You(r)*" means an individual, or a legal entity acting by and
|
||||
through an individual or individuals, exercising rights either under
|
||||
this License or under a future version of this License issued pursuant
|
||||
to Section 4.1. For legal entities, "You(r)" includes any entity that by
|
||||
majority voting interest controls, is controlled by, or is under common
|
||||
control with You.
|
||||
|
||||
44. "*Your Products*" means any (i) hardware products You distribute
|
||||
integrating the Covered Code; (ii) any software products You distribute
|
||||
with the Covered Code that utilize the APIs of the Covered Code; or
|
||||
(iii) any services You provide using the Covered Code.
|
||||
|
||||
|
||||
ATTACHMENT A
|
||||
|
||||
REQUIRED NOTICES
|
||||
|
||||
|
||||
ATTACHMENT A-1
|
||||
|
||||
REQUIRED IN ALL CASES
|
||||
|
||||
Notice to be included in header file of all Error Corrections and Shared
|
||||
Modifications:
|
||||
|
||||
Portions Copyright 1994-2003 © RealNetworks, Inc. All rights reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are
|
||||
subject to the current version of RealNetworks Community Source License
|
||||
Version 1.1 (the "License"). You may not use this file except in
|
||||
compliance with the License executed by both You and RealNetworks. You
|
||||
may obtain a copy of the License at *
|
||||
https://www.helixcommunity.org/content/rcsl.* You may also obtain a copy
|
||||
of the License by contacting RealNetworks directly. Please see the
|
||||
License for the rights, obligations and limitations governing use of the
|
||||
contents of the file.
|
||||
|
||||
This file is part of the Helix DNA technology. RealNetworks, Inc., is
|
||||
the developer of the Original code and owns the copyrights in the
|
||||
portions it created.
|
||||
|
||||
This file, and the files included with this file, are distributed on an
|
||||
'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
||||
AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s):
|
||||
|
||||
_______________________________________________
|
||||
|
||||
Technology Compatibility Kit Test Suite(s) Location:
|
||||
|
||||
________________________________
|
||||
|
||||
|
||||
ATTACHMENT A-2
|
||||
|
||||
SAMPLE LICENSEE CERTIFICATION
|
||||
|
||||
"By clicking the `Agree' button below, You certify that You are a
|
||||
Licensee in good standing under the RealNetworks Community Source
|
||||
License, ("License") and that Your access, use and distribution of code
|
||||
and information You may obtain at this site is subject to the License.
|
||||
If You are not a Licensee under the RealNetworks Community Source
|
||||
License You agree not to download, copy or use the Helix DNA technology.
|
||||
|
||||
|
||||
ATTACHMENT A-3
|
||||
|
||||
REQUIRED STUDENT NOTIFICATION
|
||||
|
||||
"This software and related documentation has been obtained by Your
|
||||
educational institution subject to the RealNetworks Community Source
|
||||
License. You have been provided access to the software and related
|
||||
documentation for use only in connection with your course work and
|
||||
research activities as a matriculated student of Your educational
|
||||
institution. Any other use is expressly prohibited.
|
||||
|
||||
THIS SOFTWARE AND RELATED DOCUMENTATION CONTAINS PROPRIETARY MATERIAL OF
|
||||
REALNETWORKS, INC, WHICH ARE PROTECTED BY VARIOUS INTELLECTUAL PROPERTY
|
||||
RIGHTS.
|
||||
|
||||
You may not use this file except in compliance with the License. You may
|
||||
obtain a copy of the License on the web at
|
||||
https://www.helixcommunity.org/content/rcsl.
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
ATTACHMENT B
|
||||
|
||||
Description of Technology
|
||||
|
||||
Helix DNA, which consists of Helix DNA Client, Helix DNA Server and
|
||||
Helix DNA Producer.
|
||||
|
||||
Description of "Technology"
|
||||
|
||||
Helix DNA Technology v1.0 as described on the Community Web Server.
|
||||
|
||||
|
||||
ATTACHMENT C
|
||||
|
||||
TECHNOLOGY COMPATIBILITY KIT LICENSE
|
||||
|
||||
The following license is effective for the *Helix DNA* Technology
|
||||
Compatibility Kit - as described on the Community Web Server. The
|
||||
Technology Compatibility Kit(s) for the Technology specified in
|
||||
Attachment B may be accessed at the Community Web Server.
|
||||
|
||||
1. TCK License.
|
||||
|
||||
1.1 Grants to use TCK
|
||||
|
||||
Subject to the terms and restrictions set forth below and the
|
||||
RealNetworks Community Source License, and the Research Use license,
|
||||
Original Contributor grants to You a worldwide, non-exclusive,
|
||||
non-transferable license, to the extent of Original Contributor's
|
||||
Intellectual Property Rights in the TCK (without the right to
|
||||
sublicense), to use the TCK to develop and test Covered Code.
|
||||
|
||||
1.2 TCK Use Restrictions.
|
||||
|
||||
You are not authorized to create derivative works of the TCK or use the
|
||||
TCK to test any implementation of the Specification that is not Covered
|
||||
Code. You may not publish Your test results or make claims of
|
||||
comparative compatibility with respect to other implementations of the
|
||||
Specification. In consideration for the license grant in Section 1.1
|
||||
above You agree not to develop Your own tests that are intended to
|
||||
validate conformation with the Specification.
|
||||
|
||||
2. Test Results.
|
||||
|
||||
You agree to provide to Original Contributor or the third party test
|
||||
facility if applicable, Your test results that demonstrate that Covered
|
||||
Code is Compliant Covered Code and that Original Contributor may publish
|
||||
or otherwise distribute such test results.
|
||||
|
||||
PLEASE READ THE TERMS OF THIS LICENSE CAREFULLY. BY CLICKING ON THE
|
||||
"ACCEPT" BUTTON BELOW YOU ARE ACCEPTING AND AGREEING TO THE TERMS AND
|
||||
CONDITIONS OF THIS LICENSE WITH THE ORIGINAL CONTRIBUTOR, REALNETWORKS,
|
||||
INC. IF YOU ARE AGREEING TO THIS LICENSE ON BEHALF OF A COMPANY, YOU
|
||||
REPRESENT THAT YOU ARE AUTHORIZED TO BIND THE COMPANY TO SUCH A LICENSE.
|
||||
WHETHER YOU ARE ACTING ON YOUR OWN BEHALF, OR REPRESENTING A COMPANY,
|
||||
YOU MUST BE OF MAJORITY AGE AND BE OTHERWISE COMPETENT TO ENTER INTO
|
||||
CONTRACTS. IF YOU DO NOT MEET THIS CRITERIA OR YOU DO NOT AGREE TO ANY
|
||||
OF THE TERMS AND CONDITIONS OF THIS LICENSE, CLICK ON THE REJECT BUTTON
|
||||
TO EXIT.
|
||||
|
||||
*ACCEPT / REJECT
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
|
||||
*To agree to the R&D/academic terms of this license, please register
|
||||
<https://www.helixcommunity.org/2002/intro/why-register> on the site --
|
||||
you will then be given a chance to agree to the clickwrap RCSL
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
R&D License
|
||||
<https://reguseronly.helixcommunity.org/2002/clickwrap/rcsl-clickwrap>
|
||||
and gain access to the RCSL-licensed source code. To build or deploy
|
||||
commercial applications based on the RCSL, you will need to agree to the
|
||||
Commercial Use license attachments
|
||||
<https://www.helixcommunity.org/content/rcsl-attachments>*
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,518 @@
|
|||
RealNetworks Public Source License Version 1.0
|
||||
(Rev. Date October 28, 2002)
|
||||
|
||||
1. General Definitions. This License applies to any program or other work which
|
||||
RealNetworks, Inc., or any other entity that elects to use this license,
|
||||
("Licensor") makes publicly available and which contains a notice placed by
|
||||
Licensor identifying such program or work as "Original Code" and stating that it
|
||||
is subject to the terms of this RealNetworks Public Source License version 1.0
|
||||
(or subsequent version thereof) ("License"). You are not required to accept this
|
||||
License. However, nothing else grants You permission to use, copy, modify or
|
||||
distribute the software or its derivative works. These actions are prohibited by
|
||||
law if You do not accept this License. Therefore, by modifying, copying or
|
||||
distributing the software (or any work based on the software), You indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions. In
|
||||
addition, you agree to the terms of this License by clicking the Accept button
|
||||
or downloading the software. As used in this License:
|
||||
|
||||
1.1 "Applicable Patent Rights" mean: (a) in the case where Licensor is the
|
||||
grantor of rights, claims of patents that (i) are now or hereafter acquired,
|
||||
owned by or assigned to Licensor and (ii) are necessarily infringed by using or
|
||||
making the Original Code alone and not in combination with other software or
|
||||
hardware; and (b) in the case where You are the grantor of rights, claims of
|
||||
patents that (i) are now or hereafter acquired, owned by or assigned to You and
|
||||
(ii) are infringed (directly or indirectly) by using or making Your
|
||||
Modifications, taken alone or in combination with Original Code.
|
||||
|
||||
1.2 "Compatible Source License" means any one of the licenses listed on Exhibit
|
||||
B or at https://www.helixcommunity.org/content/complicense or other licenses
|
||||
specifically identified by Licensor in writing. Notwithstanding any term to the
|
||||
contrary in any Compatible Source License, any code covered by any Compatible
|
||||
Source License that is used with Covered Code must be made readily available in
|
||||
Source Code format for royalty-free use under the terms of the Compatible Source
|
||||
License or this License.
|
||||
|
||||
1.3 "Contributor" means any person or entity that creates or contributes to the
|
||||
creation of Modifications.
|
||||
|
||||
1.4 "Covered Code" means the Original Code, Modifications, the combination of
|
||||
Original Code and any Modifications, and/or any respective portions thereof.
|
||||
|
||||
1.5 "Deploy" means to use, sublicense or distribute Covered Code other than for
|
||||
Your internal research and development (R&D) and/or Personal Use, and includes
|
||||
without limitation, any and all internal use or distribution of Covered Code
|
||||
within Your business or organization except for R&D use and/or Personal Use, as
|
||||
well as direct or indirect sublicensing or distribution of Covered Code by You
|
||||
to any third party in any form or manner.
|
||||
|
||||
1.6 "Derivative Work" means either the Covered Code or any derivative work under
|
||||
United States copyright law, and including any work containing or including any
|
||||
portion of the Covered Code or Modifications, either verbatim or with
|
||||
modifications and/or translated into another language. Derivative Work also
|
||||
includes any work which combines any portion of Covered Code or Modifications
|
||||
with code not otherwise governed by the terms of this License.
|
||||
|
||||
1.7 "Externally Deploy" means to Deploy the Covered Code in any way that may be
|
||||
accessed or used by anyone other than You, used to provide any services to
|
||||
anyone other than You, or used in any way to deliver any content to anyone other
|
||||
than You, whether the Covered Code is distributed to those parties, made
|
||||
available as an application intended for use over a computer network, or used to
|
||||
provide services or otherwise deliver content to anyone other than You.
|
||||
|
||||
1.8. "Interface" means interfaces, functions, properties, class definitions,
|
||||
APIs, header files, GUIDs, V-Tables, and/or protocols allowing one piece of
|
||||
software, firmware or hardware to communicate or interoperate with another piece
|
||||
of software, firmware or hardware.
|
||||
|
||||
1.9 "Modifications" mean any addition to, deletion from, and/or change to, the
|
||||
substance and/or structure of the Original Code, any previous Modifications, the
|
||||
combination of Original Code and any previous Modifications, and/or any
|
||||
respective portions thereof. When code is released as a series of files, a
|
||||
Modification is: (a) any addition to or deletion from the contents of a file
|
||||
containing Covered Code; and/or (b) any new file or other representation of
|
||||
computer program statements that contains any part of Covered Code.
|
||||
|
||||
1.10 "Original Code" means (a) the Source Code of a program or other work as
|
||||
originally made available by Licensor under this License, including the Source
|
||||
Code of any updates or upgrades to such programs or works made available by
|
||||
Licensor under this License, and that has been expressly identified by Licensor
|
||||
as such in the header file(s) of such work; and (b) the object code compiled
|
||||
from such Source Code and originally made available by Licensor under this
|
||||
License.
|
||||
|
||||
1.11 "Personal Use" means use of Covered Code by an individual solely for his or
|
||||
her personal, private and non-commercial purposes. An individual's use of
|
||||
Covered Code in his or her capacity as an officer, employee, member, independent
|
||||
contractor or agent of a corporation, business or organization (commercial or
|
||||
non-commercial) does not qualify as Personal Use.
|
||||
|
||||
1.12 "Source Code" means the human readable form of a program or other work that
|
||||
is suitable for making modifications to it, including all modules it contains,
|
||||
plus any associated interface definition files, scripts used to control
|
||||
compilation and installation of an executable (object code).
|
||||
|
||||
1.13 "You" or "Your" means an individual or a legal entity exercising rights
|
||||
under this License. For legal entities, "You" or "Your" includes any entity
|
||||
which controls, is controlled by, or is under common control with, You, where
|
||||
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||
management of such entity, whether by contract or otherwise, or (b) ownership of
|
||||
fifty percent (50%) or more of the outstanding shares or beneficial ownership of
|
||||
such entity.
|
||||
|
||||
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||
conditions of this License, Licensor hereby grants You, effective on the date
|
||||
You accept this License (via downloading or using Covered Code or otherwise
|
||||
indicating your acceptance of this License), a worldwide, royalty-free,
|
||||
non-exclusive copyright license, to the extent of Licensor's copyrights cover
|
||||
the Original Code, to do the following:
|
||||
|
||||
2.1 You may reproduce, display, perform, modify and Deploy Covered Code,
|
||||
provided that in each instance:
|
||||
|
||||
(a) You must retain and reproduce in all copies of Original Code the copyright
|
||||
and other proprietary notices and disclaimers of Licensor as they appear in the
|
||||
Original Code, and keep intact all notices in the Original Code that refer to
|
||||
this License;
|
||||
|
||||
(b) You must include a copy of this License with every copy of Source Code of
|
||||
Covered Code and documentation You distribute, and You may not offer or impose
|
||||
any terms on such Source Code that alter or restrict this License or the
|
||||
recipients' rights hereunder, except as permitted under Section 6;
|
||||
|
||||
(c) You must duplicate, to the extent it does not already exist, the notice in
|
||||
Exhibit A in each file of the Source Code of all Your Modifications, and cause
|
||||
the modified files to carry prominent notices stating that You changed the files
|
||||
and the date of any change;
|
||||
|
||||
(d) You must make Source Code of all Your Externally Deployed Modifications
|
||||
publicly available under the terms of this License, including the license grants
|
||||
set forth in Section 3 below, for as long as you Deploy the Covered Code or
|
||||
twelve (12) months from the date of initial Deployment, whichever is longer. You
|
||||
should preferably distribute the Source Code of Your Deployed Modifications
|
||||
electronically (e.g. download from a web site); and
|
||||
|
||||
(e) if You Deploy Covered Code in object code, executable form only, You must
|
||||
include a prominent notice, in the code itself as well as in related
|
||||
documentation, stating that Source Code of the Covered Code is available under
|
||||
the terms of this License with information on how and where to obtain such
|
||||
Source Code. You must also include the Object Code Notice set forth in Exhibit A
|
||||
in the "about" box or other appropriate place where other copyright notices are
|
||||
placed, including any packaging materials.
|
||||
|
||||
2.2 You expressly acknowledge and agree that although Licensor and each
|
||||
Contributor grants the licenses to their respective portions of the Covered Code
|
||||
set forth herein, no assurances are provided by Licensor or any Contributor that
|
||||
the Covered Code does not infringe the patent or other intellectual property
|
||||
rights of any other entity. Licensor and each Contributor disclaim any liability
|
||||
to You for claims brought by any other entity based on infringement of
|
||||
intellectual property rights or otherwise. As a condition to exercising the
|
||||
rights and licenses granted hereunder, You hereby assume sole responsibility to
|
||||
secure any other intellectual property rights needed, if any. For example, if a
|
||||
third party patent license is required to allow You to make, use, sell, import
|
||||
or offer for sale the Covered Code, it is Your responsibility to acquire such
|
||||
license(s).
|
||||
|
||||
2.3 Subject to the terms and conditions of this License, Licensor hereby grants
|
||||
You, effective on the date You accept this License (via downloading or using
|
||||
Covered Code or otherwise indicating your acceptance of this License), a
|
||||
worldwide, royalty-free, perpetual, non-exclusive patent license under
|
||||
Licensor's Applicable Patent Rights to make, use, sell, offer for sale and
|
||||
import the Covered Code, provided that in each instance you comply with the
|
||||
terms of this License.
|
||||
|
||||
3. Your Grants. In consideration of, and as a condition to, the licenses granted
|
||||
to You under this License:
|
||||
|
||||
(a) You grant to Licensor and all third parties a non-exclusive, perpetual,
|
||||
irrevocable, royalty free license under Your Applicable Patent Rights and other
|
||||
intellectual property rights owned or controlled by You, to make, sell, offer
|
||||
for sale, use, import, reproduce, display, perform, modify, distribute and
|
||||
Deploy Your Modifications of the same scope and extent as Licensor's licenses
|
||||
under Sections 2.1 and 2.2; and
|
||||
|
||||
(b) You grant to Licensor and its subsidiaries a non-exclusive, worldwide,
|
||||
royalty-free, perpetual and irrevocable license, under Your Applicable Patent
|
||||
Rights and other intellectual property rights owned or controlled by You, to
|
||||
make, use, sell, offer for sale, import, reproduce, display, perform,
|
||||
distribute, modify or have modified (for Licensor and/or its subsidiaries),
|
||||
sublicense and distribute Your Modifications, in any form and for any purpose,
|
||||
through multiple tiers of distribution.
|
||||
|
||||
(c) You agree not use any information derived from Your use and review of the
|
||||
Covered Code, including but not limited to any algorithms or inventions that may
|
||||
be contained in the Covered Code, for the purpose of asserting any of Your
|
||||
patent rights, or assisting a third party to assert any of its patent rights,
|
||||
against Licensor or any Contributor.
|
||||
|
||||
4. Derivative Works. You may create a Derivative Work by combining Covered Code
|
||||
with other code not otherwise governed by the terms of this License and
|
||||
distribute the Derivative Work as an integrated product. In each such instance,
|
||||
You must make sure the requirements of this License are fulfilled for the
|
||||
Covered Code or any portion thereof, including all Modifications.
|
||||
|
||||
4.1 You must cause any Derivative Work that you distribute, publish or
|
||||
Externally Deploy, that in whole or in part contains or is derived from the
|
||||
Covered Code or any part thereof, to be licensed as a whole at no charge to all
|
||||
third parties under the terms of this License and no other license except as
|
||||
provided in Section 4.2. You also must make Source Code available for the
|
||||
Derivative Work under the same terms as Modifications, described in Sections 2
|
||||
and 3, above.
|
||||
|
||||
4.2 Compatible Source Licenses. Software modules that have been independently
|
||||
developed without any use of Covered Code and which contain no portion of the
|
||||
Covered Code, Modifications or other Derivative Works, but are used or combined
|
||||
in any way wtih the Covered Code or any Derivative Work to form a larger
|
||||
Derivative Work, are exempt from the conditions described in Section 4.1 but
|
||||
only to the extent that: the software module, including any software that is
|
||||
linked to, integrated with, or part of the same applications as, the software
|
||||
module by any method must be wholly subject to one of the Compatible Source
|
||||
Licenses. Notwithstanding the foregoing, all Covered Code must be subject to the
|
||||
terms of this License. Thus, the entire Derivative Work must be licensed under a
|
||||
combination of the RPSL (for Covered Code) and a Compatible Source License for
|
||||
any independently developed software modules within the Derivative Work. The
|
||||
foregoing requirement applies even if the Compatible Source License would
|
||||
ordinarily allow the software module to link with, or form larger works with,
|
||||
other software that is not subject to the Compatible Source License. For
|
||||
example, although the Mozilla Public License v1.1 allows Mozilla code to be
|
||||
combined with proprietary software that is not subject to the MPL, if
|
||||
MPL-licensed code is used with Covered Code the MPL-licensed code could not be
|
||||
combined or linked with any code not governed by the MPL. The general intent of
|
||||
this section 4.2 is to enable use of Covered Code with applications that are
|
||||
wholly subject to an acceptable open source license. You are responsible for
|
||||
determining whether your use of software with Covered Code is allowed under Your
|
||||
license to such software.
|
||||
|
||||
4.3 Mere aggregation of another work not based on the Covered Code with the
|
||||
Covered Code (or with a work based on the Covered Code) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License. If You deliver the Covered Code for combination and/or integration with
|
||||
an application previously provided by You (for example, via automatic updating
|
||||
technology), such combination and/or integration constitutes a Derivative Work
|
||||
subject to the terms of this License.
|
||||
|
||||
5. Exclusions From License Grant. Nothing in this License shall be deemed to
|
||||
grant any rights to trademarks, copyrights, patents, trade secrets or any other
|
||||
intellectual property of Licensor or any Contributor except as expressly stated
|
||||
herein. No right is granted to the trademarks of Licensor or any Contributor
|
||||
even if such marks are included in the Covered Code. Nothing in this License
|
||||
shall be interpreted to prohibit Licensor from licensing under different terms
|
||||
from this License any code that Licensor otherwise would have a right to
|
||||
license. Modifications, Derivative Works and/or any use or combination of
|
||||
Covered Code with other technology provided by Licensor or third parties may
|
||||
require additional patent licenses from Licensor which Licensor may grant in its
|
||||
sole discretion. No patent license is granted separate from the Original Code or
|
||||
combinations of the Original Code with other software or hardware.
|
||||
|
||||
5.1. Trademarks. This License does not grant any rights to use the trademarks or
|
||||
trade names owned by Licensor ("Licensor Marks" defined in Exhibit C) or to any
|
||||
trademark or trade name belonging to any Contributor. No Licensor Marks may be
|
||||
used to endorse or promote products derived from the Original Code other than as
|
||||
permitted by the Licensor Trademark Policy defined in Exhibit C.
|
||||
|
||||
6. Additional Terms. You may choose to offer, and to charge a fee for, warranty,
|
||||
support, indemnity or liability obligations and/or other rights consistent with
|
||||
the scope of the license granted herein ("Additional Terms") to one or more
|
||||
recipients of Covered Code. However, You may do so only on Your own behalf and
|
||||
as Your sole responsibility, and not on behalf of Licensor or any Contributor.
|
||||
You must obtain the recipient's agreement that any such Additional Terms are
|
||||
offered by You alone, and You hereby agree to indemnify, defend and hold
|
||||
Licensor and every Contributor harmless for any liability incurred by or claims
|
||||
asserted against Licensor or such Contributor by reason of any such Additional
|
||||
Terms.
|
||||
|
||||
7. Versions of the License. Licensor may publish revised and/or new versions of
|
||||
this License from time to time. Each version will be given a distinguishing
|
||||
version number. Once Original Code has been published under a particular version
|
||||
of this License, You may continue to use it under the terms of that version. You
|
||||
may also choose to use such Original Code under the terms of any subsequent
|
||||
version of this License published by Licensor. No one other than Licensor has
|
||||
the right to modify the terms applicable to Covered Code created under this
|
||||
License.
|
||||
|
||||
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part
|
||||
pre-release, untested, or not fully tested works. The Covered Code may contain
|
||||
errors that could cause failures or loss of data, and may be incomplete or
|
||||
contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||
ANY KIND AND LICENSOR AND LICENSOR'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS
|
||||
"LICENSOR" FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY
|
||||
DISCLAIM ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
|
||||
NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET
|
||||
ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. LICENSOR AND EACH
|
||||
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||
WRITTEN DOCUMENTATION, INFORMATION OR ADVICE GIVEN BY LICENSOR, A LICENSOR
|
||||
AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You
|
||||
acknowledge that the Covered Code is not intended for use in high risk
|
||||
activities, including, but not limited to, the design, construction, operation
|
||||
or maintenance of nuclear facilities, aircraft navigation, aircraft
|
||||
communication systems, or air traffic control machines in which case the failure
|
||||
of the Covered Code could lead to death, personal injury, or severe physical or
|
||||
environmental damage. Licensor disclaims any express or implied warranty of
|
||||
fitness for such uses.
|
||||
|
||||
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
|
||||
SHALL LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE OR STRICT
|
||||
LIABILITY), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF LICENSOR OR SUCH
|
||||
CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND
|
||||
NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY. SOME
|
||||
JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event
|
||||
shall Licensor's total liability to You for all damages (other than as may be
|
||||
required by applicable law) under this License exceed the amount of ten dollars
|
||||
($10.00).
|
||||
|
||||
10. Ownership. Subject to the licenses granted under this License, each
|
||||
Contributor retains all rights, title and interest in and to any Modifications
|
||||
made by such Contributor. Licensor retains all rights, title and interest in and
|
||||
to the Original Code and any Modifications made by or on behalf of Licensor
|
||||
("Licensor Modifications"), and such Licensor Modifications will not be
|
||||
automatically subject to this License. Licensor may, at its sole discretion,
|
||||
choose to license such Licensor Modifications under this License, or on
|
||||
different terms from those contained in this License or may choose not to
|
||||
license them at all.
|
||||
|
||||
11. Termination.
|
||||
|
||||
11.1 Term and Termination. The term of this License is perpetual unless
|
||||
terminated as provided below. This License and the rights granted hereunder will
|
||||
terminate:
|
||||
|
||||
(a) automatically without notice from Licensor if You fail to comply with any
|
||||
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||
aware of such breach;
|
||||
|
||||
(b) immediately in the event of the circumstances described in Section 12.5(b);
|
||||
or
|
||||
|
||||
(c) automatically without notice from Licensor if You, at any time during the
|
||||
term of this License, commence an action for patent infringement against
|
||||
Licensor (including by cross-claim or counter claim in a lawsuit);
|
||||
|
||||
(d) upon written notice from Licensor if You, at any time during the term of
|
||||
this License, commence an action for patent infringement against any third party
|
||||
alleging that the Covered Code itself (excluding combinations with other
|
||||
software or hardware) infringes any patent (including by cross-claim or counter
|
||||
claim in a lawsuit).
|
||||
|
||||
11.2 Effect of Termination. Upon termination, You agree to immediately stop any
|
||||
further use, reproduction, modification, sublicensing and distribution of the
|
||||
Covered Code and to destroy all copies of the Covered Code that are in your
|
||||
possession or control. All sublicenses to the Covered Code which have been
|
||||
properly granted prior to termination shall survive any termination of this
|
||||
License. Provisions which, by their nature, should remain in effect beyond the
|
||||
termination of this License shall survive, including but not limited to Sections
|
||||
3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for
|
||||
compensation, indemnity or damages of any sort solely as a result of terminating
|
||||
this License in accordance with its terms, and termination of this License will
|
||||
be without prejudice to any other right or remedy of any party.
|
||||
|
||||
12. Miscellaneous.
|
||||
|
||||
12.1 Government End Users. The Covered Code is a "commercial item" as defined in
|
||||
FAR 2.101. Government software and technical data rights in the Covered Code
|
||||
include only those rights customarily provided to the public as defined in this
|
||||
License. This customary commercial license in technical data and software is
|
||||
provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
|
||||
Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
|
||||
Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
|
||||
or Computer Software Documentation). Accordingly, all U.S. Government End Users
|
||||
acquire Covered Code with only those rights set forth herein.
|
||||
|
||||
12.2 Relationship of Parties. This License will not be construed as creating an
|
||||
agency, partnership, joint venture or any other form of legal association
|
||||
between or among You, Licensor or any Contributor, and You will not represent to
|
||||
the contrary, whether expressly, by implication, appearance or otherwise.
|
||||
|
||||
12.3 Independent Development. Nothing in this License will impair Licensor's
|
||||
right to acquire, license, develop, have others develop for it, market and/or
|
||||
distribute technology or products that perform the same or similar functions as,
|
||||
or otherwise compete with, Modifications, Derivative Works, technology or
|
||||
products that You may develop, produce, market or distribute.
|
||||
|
||||
12.4 Waiver; Construction. Failure by Licensor or any Contributor to enforce any
|
||||
provision of this License will not be deemed a waiver of future enforcement of
|
||||
that or any other provision. Any law or regulation which provides that the
|
||||
language of a contract shall be construed against the drafter will not apply to
|
||||
this License.
|
||||
|
||||
12.5 Severability. (a) If for any reason a court of competent jurisdiction finds
|
||||
any provision of this License, or portion thereof, to be unenforceable, that
|
||||
provision of the License will be enforced to the maximum extent permissible so
|
||||
as to effect the economic benefits and intent of the parties, and the remainder
|
||||
of this License will continue in full force and effect. (b) Notwithstanding the
|
||||
foregoing, if applicable law prohibits or restricts You from fully and/or
|
||||
specifically complying with Sections 2 and/or 3 or prevents the enforceability
|
||||
of either of those Sections, this License will immediately terminate and You
|
||||
must immediately discontinue any use of the Covered Code and destroy all copies
|
||||
of it that are in your possession or control.
|
||||
|
||||
12.6 Dispute Resolution. Any litigation or other dispute resolution between You
|
||||
and Licensor relating to this License shall take place in the Seattle,
|
||||
Washington, and You and Licensor hereby consent to the personal jurisdiction of,
|
||||
and venue in, the state and federal courts within that District with respect to
|
||||
this License. The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded.
|
||||
|
||||
12.7 Export/Import Laws. This software is subject to all export and import laws
|
||||
and restrictions and regulations of the country in which you receive the Covered
|
||||
Code and You are solely responsible for ensuring that You do not export,
|
||||
re-export or import the Covered Code or any direct product thereof in violation
|
||||
of any such restrictions, laws or regulations, or without all necessary
|
||||
authorizations.
|
||||
|
||||
12.8 Entire Agreement; Governing Law. This License constitutes the entire
|
||||
agreement between the parties with respect to the subject matter hereof. This
|
||||
License shall be governed by the laws of the United States and the State of
|
||||
Washington.
|
||||
|
||||
Where You are located in the province of Quebec, Canada, the following clause
|
||||
applies: The parties hereby confirm that they have requested that this License
|
||||
and all related documents be drafted in English. Les parties ont exigé
|
||||
que le présent contrat et tous les documents connexes soient
|
||||
rédigés en anglais.
|
||||
|
||||
EXHIBIT A.
|
||||
|
||||
"Copyright © 1995-2002
|
||||
RealNetworks, Inc. and/or its licensors. All Rights Reserved.
|
||||
|
||||
The contents of this file, and the files included with this file, are subject to
|
||||
the current version of the RealNetworks Public Source License Version 1.0 (the
|
||||
"RPSL") available at https://www.helixcommunity.org/content/rpsl unless you have
|
||||
licensed the file under the RealNetworks Community Source License Version 1.0
|
||||
(the "RCSL") available at https://www.helixcommunity.org/content/rcsl, in which
|
||||
case the RCSL will apply. You may also obtain the license terms directly from
|
||||
RealNetworks. You may not use this file except in compliance with the RPSL or,
|
||||
if you have a valid RCSL with RealNetworks applicable to this file, the RCSL.
|
||||
Please see the applicable RPSL or RCSL for the rights, obligations and
|
||||
limitations governing use of the contents of the file.
|
||||
|
||||
This file is part of the Helix DNA Technology. RealNetworks is the developer of
|
||||
the Original code and owns the copyrights in the portions it created.
|
||||
|
||||
This file, and the files included with this file, is distributed and made
|
||||
available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING
|
||||
WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
|
||||
Contributor(s): ____________________________________
|
||||
|
||||
Technology Compatibility Kit Test
|
||||
Suite(s) Location (if licensed under the RCSL): ______________________________
|
||||
|
||||
Object Code Notice: Helix DNA Client technology included. Copyright (c)
|
||||
RealNetworks, Inc., 1995-2002. All rights reserved.
|
||||
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
Compatible Source Licenses for the RealNetworks Public Source License. The
|
||||
following list applies to the most recent version of the license as of October
|
||||
25, 2002, unless otherwise indicated.
|
||||
|
||||
* Academic Free License
|
||||
* Apache Software License
|
||||
* Apple Public Source License
|
||||
* Artistic license
|
||||
* Attribution Assurance Licenses
|
||||
* BSD license
|
||||
* Common Public License (1)
|
||||
* Eiffel Forum License
|
||||
* GNU General Public License (GPL) (1)
|
||||
* GNU Library or "Lesser" General Public License (LGPL) (1)
|
||||
* IBM Public License
|
||||
* Intel Open Source License
|
||||
* Jabber Open Source License
|
||||
* MIT license
|
||||
* MITRE Collaborative Virtual Workspace License (CVW License)
|
||||
* Motosoto License
|
||||
* Mozilla Public License 1.0 (MPL)
|
||||
* Mozilla Public License 1.1 (MPL)
|
||||
* Nokia Open Source License
|
||||
* Open Group Test Suite License
|
||||
* Python Software Foundation License
|
||||
* Ricoh Source Code Public License
|
||||
* Sun Industry Standards Source License (SISSL)
|
||||
* Sun Public License
|
||||
* University of Illinois/NCSA Open Source License
|
||||
* Vovida Software License v. 1.0
|
||||
* W3C License
|
||||
* X.Net License
|
||||
* Zope Public License
|
||||
* zlib/libpng license
|
||||
|
||||
(1) Note: because this license contains certain reciprocal licensing terms that
|
||||
purport to extend to independently developed code, You may be prohibited under
|
||||
the terms of this otherwise compatible license from using code licensed under
|
||||
its terms with Covered Code because Covered Code may only be licensed under the
|
||||
RealNetworks Public Source License. Any attempt to apply non RPSL license terms,
|
||||
including without limitation the GPL, to Covered Code is expressly forbidden.
|
||||
You are responsible for ensuring that Your use of Compatible Source Licensed
|
||||
code does not violate either the RPSL or the Compatible Source License.
|
||||
|
||||
The latest version of this list can be found at:
|
||||
https://www.helixcommunity.org/content/complicense
|
||||
|
||||
EXHIBIT C
|
||||
|
||||
RealNetworks' Trademark policy.
|
||||
|
||||
RealNetworks defines the following trademarks collectively as "Licensor
|
||||
Trademarks": "RealNetworks", "RealPlayer", "RealJukebox", "RealSystem",
|
||||
"RealAudio", "RealVideo", "RealOne Player", "RealMedia", "Helix" or any other
|
||||
trademarks or trade names belonging to RealNetworks.
|
||||
|
||||
RealNetworks "Licensor Trademark Policy" forbids any use of Licensor Trademarks
|
||||
except as permitted by and in strict compliance at all times with RealNetworks'
|
||||
third party trademark usage guidelines which are posted at
|
||||
http://www.realnetworks.com/info/helixlogo.html.
|
||||
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# Version: RCSL 1.0/RPSL 1.0
|
||||
#
|
||||
# Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
#
|
||||
# The contents of this file, and the files included with this file, are
|
||||
# subject to the current version of the RealNetworks Public Source License
|
||||
# Version 1.0 (the "RPSL") available at
|
||||
# http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
# the file under the RealNetworks Community Source License Version 1.0
|
||||
# (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
# in which case the RCSL will apply. You may also obtain the license terms
|
||||
# directly from RealNetworks. You may not use this file except in
|
||||
# compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
# applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
# RCSL for the rights, obligations and limitations governing use of the
|
||||
# contents of the file.
|
||||
#
|
||||
# This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
# developer of the Original Code and owns the copyrights in the portions
|
||||
# it created.
|
||||
#
|
||||
# This file, and the files included with this file, is distributed and made
|
||||
# available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
# EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
# FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
#
|
||||
# Technology Compatibility Kit Test Suite(s) Location:
|
||||
# http://www.helixcommunity.org/content/tck
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
#
|
||||
|
||||
UmakefileVersion(2,1)
|
||||
|
||||
# Uncomment to test using C API
|
||||
# project.AddSources("main.c", "timing.c", "debug.c")
|
||||
|
||||
# Uncomment to test using C++ API
|
||||
project.AddSources("winmain.cpp", "timing.c", "debug.c")
|
||||
|
||||
project.AddModuleIncludes("datatype/mp3/codec/fixpt/pub")
|
||||
project.AddModuleLibraries("datatype/mp3/codec/fixpt[mp3codecfixpt]")
|
||||
|
||||
ProgramTarget("mp3dec")
|
||||
|
||||
DependTarget()
|
||||
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* debug.c - implementations of memory testing functions
|
||||
**************************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "debug.h"
|
||||
|
||||
#if !defined (_DEBUG)
|
||||
|
||||
void DebugMemCheckInit(void)
|
||||
{
|
||||
}
|
||||
|
||||
void DebugMemCheckStartPoint(void)
|
||||
{
|
||||
}
|
||||
|
||||
void DebugMemCheckEndPoint(void)
|
||||
{
|
||||
}
|
||||
|
||||
void DebugMemCheckFree(void)
|
||||
{
|
||||
}
|
||||
|
||||
#elif defined (_WIN32) && !defined (_WIN32_WCE)
|
||||
|
||||
#include <crtdbg.h>
|
||||
|
||||
#ifdef FORTIFY
|
||||
#include "fortify.h"
|
||||
#else
|
||||
static _CrtMemState oldState, newState, stateDiff;
|
||||
#endif
|
||||
|
||||
void DebugMemCheckInit(void)
|
||||
{
|
||||
int tmpDbgFlag;
|
||||
|
||||
/* Send all reports to STDOUT */
|
||||
_CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
|
||||
_CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT );
|
||||
_CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE );
|
||||
_CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT );
|
||||
_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
|
||||
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT );
|
||||
|
||||
tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
||||
tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF;
|
||||
tmpDbgFlag |= _CRTDBG_CHECK_ALWAYS_DF;
|
||||
_CrtSetDbgFlag(tmpDbgFlag);
|
||||
}
|
||||
|
||||
void DebugMemCheckStartPoint(void)
|
||||
{
|
||||
#ifdef FORTIFY
|
||||
Fortify_EnterScope();
|
||||
#else
|
||||
_CrtMemCheckpoint(&oldState);
|
||||
#endif
|
||||
}
|
||||
|
||||
void DebugMemCheckEndPoint(void)
|
||||
{
|
||||
#ifdef FORTIFY
|
||||
Fortify_LeaveScope();
|
||||
#else
|
||||
_CrtMemCheckpoint(&newState);
|
||||
_CrtMemDifference(&stateDiff, &oldState, &newState);
|
||||
_CrtMemDumpStatistics(&stateDiff);
|
||||
#endif
|
||||
}
|
||||
|
||||
void DebugMemCheckFree(void)
|
||||
{
|
||||
printf("\n");
|
||||
if (!_CrtDumpMemoryLeaks())
|
||||
printf("Memory leak test: no leaks\n");
|
||||
|
||||
if (!_CrtCheckMemory())
|
||||
printf("Memory integrity test: error!\n");
|
||||
else
|
||||
printf("Memory integrity test: okay\n");
|
||||
}
|
||||
|
||||
#elif defined (ARM_ADS)
|
||||
|
||||
void DebugMemCheckInit(void)
|
||||
{
|
||||
}
|
||||
|
||||
void DebugMemCheckStartPoint(void)
|
||||
{
|
||||
}
|
||||
|
||||
void DebugMemCheckEndPoint(void)
|
||||
{
|
||||
}
|
||||
|
||||
void DebugMemCheckFree(void)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef _DEBUG_H
|
||||
#define _DEBUG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* debug.c */
|
||||
void DebugMemCheckInit(void);
|
||||
void DebugMemCheckStartPoint(void);
|
||||
void DebugMemCheckEndPoint(void);
|
||||
void DebugMemCheckFree(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _DEBUG_H */
|
||||
|
|
@ -0,0 +1,200 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* main.c - command-line test app that uses C interface to MP3 decoder
|
||||
**************************************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "mp3dec.h"
|
||||
#include "debug.h"
|
||||
#include "timing.h"
|
||||
|
||||
#define READBUF_SIZE (1024*16) /* feel free to change this, but keep big enough for >= one frame at high bitrates */
|
||||
#define MAX_ARM_FRAMES 100
|
||||
#define ARMULATE_MUL_FACT 1
|
||||
|
||||
static int FillReadBuffer(unsigned char *readBuf, unsigned char *readPtr, int bufSize, int bytesLeft, FILE *infile)
|
||||
{
|
||||
int nRead;
|
||||
|
||||
/* move last, small chunk from end of buffer to start, then fill with new data */
|
||||
memmove(readBuf, readPtr, bytesLeft);
|
||||
nRead = fread(readBuf + bytesLeft, 1, bufSize - bytesLeft, infile);
|
||||
/* zero-pad to avoid finding false sync word after last frame (from old data in readBuf) */
|
||||
if (nRead < bufSize - bytesLeft)
|
||||
memset(readBuf + bytesLeft + nRead, 0, bufSize - bytesLeft - nRead);
|
||||
|
||||
return nRead;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int bytesLeft, nRead, err, offset, outOfData, eofReached;
|
||||
unsigned char readBuf[READBUF_SIZE], *readPtr;
|
||||
short outBuf[MAX_NCHAN * MAX_NGRAN * MAX_NSAMP];
|
||||
FILE *infile, *outfile;
|
||||
MP3FrameInfo mp3FrameInfo;
|
||||
HMP3Decoder hMP3Decoder;
|
||||
int startTime, endTime, diffTime, totalDecTime, nFrames;
|
||||
#ifdef ARM_ADS
|
||||
float audioSecs;
|
||||
#endif
|
||||
|
||||
if (argc != 3) {
|
||||
printf("usage: mp3dec infile.mp3 outfile.pcm\n");
|
||||
return -1;
|
||||
}
|
||||
infile = fopen(argv[1], "rb");
|
||||
if (!infile) {
|
||||
printf("file open error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (strcmp(argv[2], "nul")) {
|
||||
outfile = fopen(argv[2], "wb");
|
||||
if (!outfile) {
|
||||
printf("file open error\n");
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
outfile = 0; /* nul output */
|
||||
}
|
||||
|
||||
DebugMemCheckInit();
|
||||
InitTimer();
|
||||
|
||||
DebugMemCheckStartPoint();
|
||||
|
||||
if ( (hMP3Decoder = MP3InitDecoder()) == 0 )
|
||||
return -2;
|
||||
|
||||
DebugMemCheckEndPoint();
|
||||
|
||||
bytesLeft = 0;
|
||||
outOfData = 0;
|
||||
eofReached = 0;
|
||||
readPtr = readBuf;
|
||||
nRead = 0;
|
||||
totalDecTime = 0;
|
||||
nFrames = 0;
|
||||
do {
|
||||
/* somewhat arbitrary trigger to refill buffer - should always be enough for a full frame */
|
||||
if (bytesLeft < 2*MAINBUF_SIZE && !eofReached) {
|
||||
nRead = FillReadBuffer(readBuf, readPtr, READBUF_SIZE, bytesLeft, infile);
|
||||
bytesLeft += nRead;
|
||||
readPtr = readBuf;
|
||||
if (nRead == 0)
|
||||
eofReached = 1;
|
||||
}
|
||||
|
||||
/* find start of next MP3 frame - assume EOF if no sync found */
|
||||
offset = MP3FindSyncWord(readPtr, bytesLeft);
|
||||
if (offset < 0) {
|
||||
outOfData = 1;
|
||||
break;
|
||||
}
|
||||
readPtr += offset;
|
||||
bytesLeft -= offset;
|
||||
|
||||
|
||||
/* decode one MP3 frame - if offset < 0 then bytesLeft was less than a full frame */
|
||||
startTime = ReadTimer();
|
||||
err = MP3Decode(hMP3Decoder, &readPtr, &bytesLeft, outBuf, 0);
|
||||
nFrames++;
|
||||
|
||||
endTime = ReadTimer();
|
||||
diffTime = CalcTimeDifference(startTime, endTime);
|
||||
totalDecTime += diffTime;
|
||||
|
||||
#if defined ARM_ADS && defined MAX_ARM_FRAMES
|
||||
printf("frame %5d start = %10d, end = %10d elapsed = %10d ticks\r",
|
||||
nFrames, startTime, endTime, diffTime);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
|
||||
if (err) {
|
||||
/* error occurred */
|
||||
switch (err) {
|
||||
case ERR_MP3_INDATA_UNDERFLOW:
|
||||
outOfData = 1;
|
||||
break;
|
||||
case ERR_MP3_MAINDATA_UNDERFLOW:
|
||||
/* do nothing - next call to decode will provide more mainData */
|
||||
break;
|
||||
case ERR_MP3_FREE_BITRATE_SYNC:
|
||||
default:
|
||||
outOfData = 1;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* no error */
|
||||
MP3GetLastFrameInfo(hMP3Decoder, &mp3FrameInfo);
|
||||
if (outfile)
|
||||
fwrite(outBuf, mp3FrameInfo.bitsPerSample / 8, mp3FrameInfo.outputSamps, outfile);
|
||||
}
|
||||
|
||||
#if defined ARM_ADS && defined MAX_ARM_FRAMES
|
||||
if (nFrames >= MAX_ARM_FRAMES)
|
||||
break;
|
||||
#endif
|
||||
} while (!outOfData);
|
||||
|
||||
|
||||
#ifdef ARM_ADS
|
||||
MP3GetLastFrameInfo(hMP3Decoder, &mp3FrameInfo);
|
||||
audioSecs = ((float)nFrames * mp3FrameInfo.outputSamps) / ( (float)mp3FrameInfo.samprate * mp3FrameInfo.nChans);
|
||||
printf("\nTotal clock ticks = %d, MHz usage = %.2f\n", totalDecTime, ARMULATE_MUL_FACT * (1.0f / audioSecs) * totalDecTime * GetClockDivFactor() / 1e6f);
|
||||
printf("nFrames = %d, output samps = %d, sampRate = %d, nChans = %d\n", nFrames, mp3FrameInfo.outputSamps, mp3FrameInfo.samprate, mp3FrameInfo.nChans);
|
||||
#endif
|
||||
|
||||
MP3FreeDecoder(hMP3Decoder);
|
||||
|
||||
fclose(infile);
|
||||
if (outfile)
|
||||
fclose(outfile);
|
||||
|
||||
FreeTimer();
|
||||
DebugMemCheckFree();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* timing.c - implementations of CPU timing functions
|
||||
**************************************************************************************/
|
||||
|
||||
#include "timing.h"
|
||||
|
||||
/* NOTES:
|
||||
* - for armulator (ARM_ADS) use -clock 100 (100 Hz system clock) for accurate
|
||||
* timing since CLOCKS_PER_SEC = 100 (this only works for zero wait-state
|
||||
* memory unless you adjust memory timings accordingly)
|
||||
* - other option for armulator is to simulate accurate hardware timers (see below)
|
||||
*/
|
||||
#if (defined (_WIN32) && !defined (_WIN32_WCE)) || defined (ARM_ADS) || (defined (__GNUC__) && defined (ARM))
|
||||
|
||||
#include <time.h>
|
||||
|
||||
int InitTimer(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT ReadTimer(void)
|
||||
{
|
||||
return clock();
|
||||
}
|
||||
|
||||
int FreeTimer(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT GetClockFrequency(void)
|
||||
{
|
||||
return CLOCKS_PER_SEC;
|
||||
}
|
||||
|
||||
UINT GetClockDivFactor(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
UINT CalcTimeDifference(UINT startTime, UINT endTime)
|
||||
{
|
||||
/* timer counts up on x86, 32-bit counter */
|
||||
if (endTime < startTime)
|
||||
return (0x7fffffff - (startTime - endTime) );
|
||||
else
|
||||
return (endTime - startTime);
|
||||
}
|
||||
#elif defined (_WIN32) && defined (_WIN32_WCE)
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
int InitTimer(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT ReadTimer(void)
|
||||
{
|
||||
return GetTickCount();
|
||||
}
|
||||
|
||||
int FreeTimer(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT GetClockFrequency(void)
|
||||
{
|
||||
return 1000;
|
||||
}
|
||||
|
||||
UINT GetClockDivFactor(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
UINT CalcTimeDifference(UINT startTime, UINT endTime)
|
||||
{
|
||||
/* timer counts up on x86, 32-bit counter */
|
||||
if (endTime < startTime)
|
||||
return (0x7fffffff - (startTime - endTime) );
|
||||
else
|
||||
return (endTime - startTime);
|
||||
}
|
||||
|
||||
#elif 0 /* if defined ARM_ADS - this uses simulated high-res hardware timers */
|
||||
|
||||
/* see definitions in ADSv1_2/bin/peripherals.ami */
|
||||
#define TIMER_BASE 0x0a800000
|
||||
#define TIMER_VALUE_1 (TIMER_BASE + 0x04)
|
||||
#define TIMER_CONTROL_1 (TIMER_BASE + 0x08)
|
||||
|
||||
int InitTimer(void)
|
||||
{
|
||||
volatile unsigned int *timerControl1 = (volatile unsigned int *)TIMER_CONTROL_1;
|
||||
unsigned int control1;
|
||||
|
||||
/* see ARMulator Reference, pg 4-78
|
||||
* bits [3:2] = clock divisor factor (00 = 1, 01 = 16, 10 = 256, 11 = undef)
|
||||
* bit [6] = free-running mode (0) or periodic mode (1)
|
||||
* bit [7] = timer disabled (0) or enabled (1)
|
||||
*/
|
||||
control1 = 0x00000088;
|
||||
*timerControl1 = control1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT ReadTimer(void)
|
||||
{
|
||||
volatile unsigned int *timerValue1 = (volatile unsigned int *)TIMER_VALUE_1;
|
||||
unsigned int value;
|
||||
|
||||
value = *timerValue1 & 0x0000ffff;
|
||||
|
||||
return (UINT)value;
|
||||
}
|
||||
|
||||
int FreeTimer(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT GetClockFrequency(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
UINT GetClockDivFactor(void)
|
||||
{
|
||||
return 256;
|
||||
}
|
||||
|
||||
UINT CalcTimeDifference(UINT startTime, UINT endTime)
|
||||
{
|
||||
|
||||
/* timer counts down int ARMulator, 16-bit counter */
|
||||
if (endTime > startTime)
|
||||
return (startTime + 0x00010000 - endTime);
|
||||
else
|
||||
return (startTime - endTime);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef _TIMING_H
|
||||
#define _TIMING_H
|
||||
|
||||
typedef unsigned int UINT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int InitTimer(void);
|
||||
UINT ReadTimer(void);
|
||||
int FreeTimer(void);
|
||||
UINT GetClockFrequency(void);
|
||||
UINT GetClockDivFactor(void);
|
||||
UINT CalcTimeDifference(UINT startTime, UINT endTime);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _TIMING_H */
|
||||
|
|
@ -0,0 +1,203 @@
|
|||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: RCSL 1.0/RPSL 1.0
|
||||
*
|
||||
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
|
||||
*
|
||||
* The contents of this file, and the files included with this file, are
|
||||
* subject to the current version of the RealNetworks Public Source License
|
||||
* Version 1.0 (the "RPSL") available at
|
||||
* http://www.helixcommunity.org/content/rpsl unless you have licensed
|
||||
* the file under the RealNetworks Community Source License Version 1.0
|
||||
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
|
||||
* in which case the RCSL will apply. You may also obtain the license terms
|
||||
* directly from RealNetworks. You may not use this file except in
|
||||
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
|
||||
* applicable to this file, the RCSL. Please see the applicable RPSL or
|
||||
* RCSL for the rights, obligations and limitations governing use of the
|
||||
* contents of the file.
|
||||
*
|
||||
* This file is part of the Helix DNA Technology. RealNetworks is the
|
||||
* developer of the Original Code and owns the copyrights in the portions
|
||||
* it created.
|
||||
*
|
||||
* This file, and the files included with this file, is distributed and made
|
||||
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
*
|
||||
* Technology Compatibility Kit Test Suite(s) Location:
|
||||
* http://www.helixcommunity.org/content/tck
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
/**************************************************************************************
|
||||
* Fixed-point MP3 decoder
|
||||
* Jon Recker (jrecker@real.com), Ken Cooke (kenc@real.com)
|
||||
* June 2003
|
||||
*
|
||||
* winmain.cpp - command-line test app that uses C++ interface to MP3 decoder
|
||||
**************************************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "mpadecobjfixpt.h"
|
||||
#include "debug.h"
|
||||
#include "timing.h"
|
||||
|
||||
#define READBUF_SIZE (1024*16) /* feel free to change this, but keep big enough for >= one frame at high bitrates */
|
||||
#define MAX_ARM_FRAMES 25
|
||||
|
||||
static int FillReadBuffer(unsigned char *readBuf, unsigned char *readPtr, int bufSize, int bytesLeft, FILE *infile)
|
||||
{
|
||||
int nRead;
|
||||
|
||||
/* move last, small chunk from end of buffer to start, then fill with new data */
|
||||
memmove(readBuf, readPtr, bytesLeft);
|
||||
nRead = fread(readBuf + bytesLeft, 1, bufSize - bytesLeft, infile);
|
||||
/* zero-pad to avoid finding false sync word after last frame (from old data in readBuf) */
|
||||
if (nRead < bufSize - bytesLeft)
|
||||
memset(readBuf + bytesLeft + nRead, 0, bufSize - bytesLeft - nRead);
|
||||
|
||||
return nRead;
|
||||
}
|
||||
|
||||
#if defined (_WIN32) && defined (_WIN32_WCE)
|
||||
#include <windows.h>
|
||||
#define main TestMain
|
||||
static int main(int argc, char **argv);
|
||||
|
||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
|
||||
{
|
||||
/* not designed to do anything right now - just lets us build application to force linker
|
||||
* to run and check for link errors
|
||||
*/
|
||||
char *testArgs[3] = {
|
||||
"testwrap.exe",
|
||||
"\\My Documents\\test128.mp3",
|
||||
"nul"
|
||||
};
|
||||
|
||||
TestMain(3, testArgs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int bytesLeft, bytesIn, err, nRead, offset, outOfData, eofReached;
|
||||
unsigned char readBuf[READBUF_SIZE], *readPtr;
|
||||
short outBuf[MAX_NCHAN * MAX_NGRAN * MAX_NSAMP];
|
||||
FILE *infile, *outfile;
|
||||
int initFlag, chans, bits;
|
||||
unsigned long sampRate, outBytes;
|
||||
CMpaDecObj *decobj;
|
||||
|
||||
if (argc != 3) {
|
||||
printf("usage: mp3dec infile.mp3 outfile.pcm\n");
|
||||
return -1;
|
||||
}
|
||||
infile = fopen(argv[1], "rb");
|
||||
if (!infile) {
|
||||
printf("file open error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (strcmp(argv[2], "nul")) {
|
||||
outfile = fopen(argv[2], "wb");
|
||||
if (!outfile) {
|
||||
printf("file open error\n");
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
outfile = 0; /* nul output */
|
||||
}
|
||||
|
||||
DebugMemCheckInit();
|
||||
decobj = new CMpaDecObj;
|
||||
if (!decobj)
|
||||
return -1;
|
||||
|
||||
bytesLeft = 0;
|
||||
outOfData = 0;
|
||||
eofReached = 0;
|
||||
readPtr = readBuf;
|
||||
nRead = 0;
|
||||
err = 0;
|
||||
initFlag = 0;
|
||||
do {
|
||||
/* somewhat arbitrary trigger to refill buffer - should always be enough for a full frame */
|
||||
if (bytesLeft < 2*MAINBUF_SIZE && !eofReached) {
|
||||
nRead = FillReadBuffer(readBuf, readPtr, READBUF_SIZE, bytesLeft, infile);
|
||||
bytesLeft += nRead;
|
||||
readPtr = readBuf;
|
||||
if (nRead == 0)
|
||||
eofReached = 1;
|
||||
}
|
||||
|
||||
/* find start of next MP3 frame - assume EOF if no sync found */
|
||||
offset = MP3FindSyncWord(readPtr, bytesLeft);
|
||||
if (offset < 0) {
|
||||
outOfData = 1;
|
||||
break;
|
||||
}
|
||||
readPtr += offset;
|
||||
bytesLeft -= offset;
|
||||
|
||||
/* lazy initialization for backwards compatibility with mpadecobj API */
|
||||
if (!initFlag) {
|
||||
DebugMemCheckStartPoint();
|
||||
if (!decobj->Init_n(readPtr, bytesLeft))
|
||||
return -1; /* init error */
|
||||
DebugMemCheckEndPoint();
|
||||
|
||||
decobj->GetPCMInfo_v(sampRate, chans, bits);
|
||||
decobj->GetSamplesPerFrame_n();
|
||||
initFlag = 1;
|
||||
}
|
||||
|
||||
/* decode one MP3 frame - if offset < 0 then bytesLeft was less than a full frame */
|
||||
outBytes = sizeof(outBuf);
|
||||
bytesIn = bytesLeft;
|
||||
decobj->DecodeFrame_v(readPtr, (unsigned long *)(&bytesIn), (unsigned char *)outBuf, &outBytes, &err);
|
||||
readPtr += bytesIn;
|
||||
bytesLeft -= bytesIn;
|
||||
|
||||
if (err) {
|
||||
/* error occurred */
|
||||
switch (err) {
|
||||
case ERR_MP3_INDATA_UNDERFLOW:
|
||||
outOfData = 1;
|
||||
break;
|
||||
case ERR_MP3_MAINDATA_UNDERFLOW:
|
||||
/* do nothing - next call to decode will provide more mainData */
|
||||
break;
|
||||
case ERR_MP3_FREE_BITRATE_SYNC:
|
||||
default:
|
||||
outOfData = 1;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* no error */
|
||||
if (outfile)
|
||||
fwrite(outBuf, 1, (unsigned int)outBytes, outfile);
|
||||
}
|
||||
} while (!outOfData);
|
||||
|
||||
fclose(infile);
|
||||
if (outfile)
|
||||
fclose(outfile);
|
||||
|
||||
delete decobj;
|
||||
|
||||
DebugMemCheckFree();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
1
managed_components/espressif__button/.component_hash
Normal file
1
managed_components/espressif__button/.component_hash
Normal file
|
|
@ -0,0 +1 @@
|
|||
30a3f495c3862d505ce6e41adbbd218b2750e9723ab2151feff00e9fe685b326
|
||||
157
managed_components/espressif__button/CHANGELOG.md
Normal file
157
managed_components/espressif__button/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
# ChangeLog
|
||||
|
||||
## v3.5.0 - 2024-12-27
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Add config to disable gpio button internal pull resistor.
|
||||
|
||||
## v3.4.1 - 2024-12-6
|
||||
|
||||
### Fix:
|
||||
|
||||
* Fix the issue where `BUTTON_LONG_PRESS_START` is not triggered when the polling interval exceeds 20ms.
|
||||
* Remove the `BUTTON_LONG_PRESS_TOLERANCE_MS` configuration option.
|
||||
|
||||
## v3.4.0 - 2024-10-22
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Supports a maximum button polling interval of 500ms.
|
||||
* Fixed a potential counter overflow issue.
|
||||
|
||||
### Break change:
|
||||
|
||||
* The return value of `iot_button_get_ticks_time` has been changed from `uint16_t` to `uint32_t`.
|
||||
|
||||
## v3.3.2 - 2024-8-28
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Support macro CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP in power save mode.
|
||||
* Supports retrieving and printing the string corresponding to a button event.
|
||||
* Fixed the bug where the event was not assigned to `BUTTON_LONG_PRESS_START` before the `BUTTON_LONG_PRESS_START` event occurred.
|
||||
|
||||
## v3.3.1 - 2024-8-8
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Add Button Event **BUTTON_PRESS_END**.
|
||||
|
||||
## v3.3.0 - 2024-8-7
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Add Callback **button_power_save_cb_t** to support enter power save manually.
|
||||
* Increase the maximum polling interval supported by the button from 20ms to 50ms.
|
||||
|
||||
## v3.2.3 - 2024-7-2
|
||||
|
||||
* Fixed the issue where the GPIO button in low-power mode continuously woke up the CPU after being pressed, causing abnormal power consumption.
|
||||
|
||||
## v3.2.2 - 2024-6-17
|
||||
|
||||
* Fix the compilation error for chips that do not support ADC.
|
||||
|
||||
## v3.2.1 - 2024-6-17
|
||||
|
||||
### bugfix
|
||||
|
||||
- Fixed ignored ADC button tied to GND. thanks `demianzenkov` for the fix.
|
||||
|
||||
## v3.2.0 - 2023-11-13
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* The power consumption of GPIO buttons is lower during light sleep mode.
|
||||
|
||||
## v3.1.3 - 2023-11-13
|
||||
|
||||
* Resolved issue 'ADC_ATTEN_DB_11 is deprecated'.
|
||||
|
||||
## v3.1.2 - 2023-10-24
|
||||
|
||||
### bugfix
|
||||
|
||||
* Fixed a bug where iot_button_delete feature crashes for custom button
|
||||
|
||||
## v3.1.1 - 2023-10-18
|
||||
|
||||
### bugfix
|
||||
|
||||
* Fixed a bug where multiple callbacks feature crashes for BUTTON_MULTIPLE_CLICK
|
||||
|
||||
## v3.1.0 - 2023-10-9
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Support matrix keypad
|
||||
|
||||
## v3.0.1 - 2023-9-1
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Resolves bug for iot_button_unregister_event function returned error when reallocating with 0 byte.
|
||||
* Update Test cases to test iot_button_unregister_event_cb
|
||||
* Add api iot_button_stop & iot_button_resume for power save.
|
||||
|
||||
## v3.0.0 - 2023-8-15
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Add support to register multiple callbacks for a button_event
|
||||
|
||||
* Update iot_button_unregister_cb, to unregister all the callbacks for that event
|
||||
* Add iot_button_unregister_event to unregister specific callbacks of that event
|
||||
* Add iot_button_count_event to return number of callbacks registered for the event.
|
||||
* Update iot_button_count_cb, to return sum of number of registered callbacks.
|
||||
|
||||
* Add support for Long press on specific time
|
||||
|
||||
* Add iot_button_register_event, which takes specific event_config_t data as input.
|
||||
* Add BUTTON_LONG_PRESS_UP to trigger callback at the latest time of button release
|
||||
* Update BUTTON_LONG_PRESS_START to trigger callback as the time passes for long_press.
|
||||
|
||||
* Add support to trigger callback for specified number of clicks.
|
||||
|
||||
## v2.5.6 - 2023-8-22
|
||||
|
||||
### bugfix
|
||||
|
||||
* Fixed a bug where the Serial trigger interval in button_long_press_hold event fires at an incorrect time
|
||||
|
||||
## v2.5.5 - 2023-8-3
|
||||
|
||||
* Add modify api which can change long_press_time and short_press_time
|
||||
|
||||
## v2.5.4 - 2023-7-27
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Add test apps and ci auto test
|
||||
|
||||
## v2.5.3 - 2023-7-26
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* `repeat` defined in struct button_dev_t is reset to 0 after event `BUTTON_PRESS_REPEAT_DONE`
|
||||
|
||||
## v2.5.2 - 2023-7-18
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Set "event" member to BUTTON_PRESS_REPEAT before calling the BUTTON_PRESS_REPEAT callback
|
||||
|
||||
## v2.5.1 - 2023-3-14
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Update doc and code specification
|
||||
* Avoid overwriting callback by @franz-ms-muc in #252
|
||||
|
||||
## v2.5.0 - 2023-2-1
|
||||
|
||||
### Enhancements:
|
||||
|
||||
* Support custom button
|
||||
* Add BUTTON_PRESS_REPEAT_DONE event
|
||||
32
managed_components/espressif__button/CMakeLists.txt
Normal file
32
managed_components/espressif__button/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
set(PRIVREQ esp_timer)
|
||||
set(REQ driver)
|
||||
set(SRC_FILES "button_gpio.c" "iot_button.c" "button_matrix.c")
|
||||
|
||||
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER_EQUAL "5.0")
|
||||
list(APPEND REQ esp_adc)
|
||||
if(CONFIG_SOC_ADC_SUPPORTED)
|
||||
list(APPEND SRC_FILES "button_adc.c")
|
||||
endif()
|
||||
else()
|
||||
list(APPEND REQ esp_adc_cal)
|
||||
list(APPEND SRC_FILES "button_adc.c")
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS ${SRC_FILES}
|
||||
INCLUDE_DIRS include
|
||||
REQUIRES ${REQ}
|
||||
PRIV_REQUIRES ${PRIVREQ})
|
||||
|
||||
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_LESS "5.0")
|
||||
# Add the macro CONFIG_SOC_ADC_SUPPORTED for the following chips.
|
||||
if(CONFIG_IDF_TARGET STREQUAL "esp32" OR
|
||||
CONFIG_IDF_TARGET STREQUAL "esp32s2" OR
|
||||
CONFIG_IDF_TARGET STREQUAL "esp32s3" OR
|
||||
CONFIG_IDF_TARGET STREQUAL "esp32c3" OR
|
||||
CONFIG_IDF_TARGET STREQUAL "esp32h2")
|
||||
target_compile_definitions(${COMPONENT_LIB} PUBLIC CONFIG_SOC_ADC_SUPPORTED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(package_manager)
|
||||
cu_pkg_define_version(${CMAKE_CURRENT_LIST_DIR})
|
||||
65
managed_components/espressif__button/Kconfig
Normal file
65
managed_components/espressif__button/Kconfig
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
menu "IoT Button"
|
||||
|
||||
config BUTTON_PERIOD_TIME_MS
|
||||
int "BUTTON PERIOD TIME (MS)"
|
||||
range 2 500
|
||||
default 5
|
||||
help
|
||||
"Button scan interval"
|
||||
|
||||
config BUTTON_DEBOUNCE_TICKS
|
||||
int "BUTTON DEBOUNCE TICKS"
|
||||
range 1 7
|
||||
default 2
|
||||
help
|
||||
"One CONFIG_BUTTON_DEBOUNCE_TICKS equal to CONFIG_BUTTON_PERIOD_TIME_MS"
|
||||
|
||||
config BUTTON_SHORT_PRESS_TIME_MS
|
||||
int "BUTTON SHORT PRESS TIME (MS)"
|
||||
range 50 800
|
||||
default 180
|
||||
|
||||
config BUTTON_LONG_PRESS_TIME_MS
|
||||
int "BUTTON LONG PRESS TIME (MS)"
|
||||
range 500 5000
|
||||
default 1500
|
||||
|
||||
config BUTTON_SERIAL_TIME_MS
|
||||
int "BUTTON SERIAL TIME (MS)"
|
||||
range 2 1000
|
||||
default 20
|
||||
help
|
||||
"Serial trigger interval"
|
||||
|
||||
config GPIO_BUTTON_SUPPORT_POWER_SAVE
|
||||
bool "GPIO BUTTON SUPPORT POWER SAVE"
|
||||
default n
|
||||
help
|
||||
Enable GPIO button power save
|
||||
|
||||
The function enables the use of GPIO buttons during light sleep,
|
||||
but enabling this function prevents the simultaneous use of other
|
||||
types of buttons.
|
||||
|
||||
config ADC_BUTTON_MAX_CHANNEL
|
||||
int "ADC BUTTON MAX CHANNEL"
|
||||
range 1 5
|
||||
default 3
|
||||
help
|
||||
"Maximum number of channels for ADC buttons"
|
||||
|
||||
config ADC_BUTTON_MAX_BUTTON_PER_CHANNEL
|
||||
int "ADC BUTTON MAX BUTTON PER CHANNEL"
|
||||
range 1 10
|
||||
default 8
|
||||
help
|
||||
"Maximum number of buttons per channel"
|
||||
|
||||
config ADC_BUTTON_SAMPLE_TIMES
|
||||
int "ADC BUTTON SAMPLE TIMES"
|
||||
range 1 4
|
||||
default 1
|
||||
help
|
||||
"Number of samples per scan"
|
||||
|
||||
endmenu
|
||||
42
managed_components/espressif__button/README.md
Normal file
42
managed_components/espressif__button/README.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[](https://components.espressif.com/components/espressif/button)
|
||||
|
||||
# Component: Button
|
||||
[Online documentation](https://docs.espressif.com/projects/esp-iot-solution/en/latest/input_device/button.html)
|
||||
|
||||
After creating a new button object by calling function `button_create()`, the button object can create press events, every press event can have its own callback.
|
||||
|
||||
List of supported events:
|
||||
* Button pressed
|
||||
* Button released
|
||||
* Button pressed repeat
|
||||
* Button press repeat done
|
||||
* Button single click
|
||||
* Button double click
|
||||
* Button multiple click
|
||||
* Button long press start
|
||||
* Button long press hold
|
||||
* Button long press up
|
||||
* Button Press end
|
||||
|
||||

|
||||
|
||||
There are three ways this driver can handle buttons:
|
||||
1. Buttons connected to standard digital GPIO
|
||||
2. Multiple buttons connected to single ADC channel
|
||||
3. Matrix keyboard employs multiple GPIOs for operation.
|
||||
4. Custom button connect to any driver
|
||||
|
||||
The component supports the following functionalities:
|
||||
1. Creation of an unlimited number of buttons, accommodating various types simultaneously.
|
||||
2. Multiple callback functions for a single event.
|
||||
3. Allowing customization of the consecutive key press count to any desired number.
|
||||
4. Facilitating the setup of callbacks for any specified long-press duration.
|
||||
5. Support power save mode (Only for gpio button)
|
||||
|
||||
## Add component to your project
|
||||
|
||||
Please use the component manager command `add-dependency` to add the `button` to your project's dependency, during the `CMake` step the component will be downloaded automatically
|
||||
|
||||
```
|
||||
idf.py add-dependency "espressif/button=*"
|
||||
```
|
||||
312
managed_components/espressif__button/button_adc.c
Normal file
312
managed_components/espressif__button/button_adc.c
Normal file
|
|
@ -0,0 +1,312 @@
|
|||
/* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <inttypes.h>
|
||||
#include "esp_log.h"
|
||||
#include "esp_timer.h"
|
||||
#include "esp_idf_version.h"
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
#include "soc/soc_caps.h"
|
||||
#include "esp_adc/adc_oneshot.h"
|
||||
#include "esp_adc/adc_cali.h"
|
||||
#include "esp_adc/adc_cali_scheme.h"
|
||||
#else
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/adc.h"
|
||||
#include "esp_adc_cal.h"
|
||||
#endif
|
||||
#include "button_adc.h"
|
||||
|
||||
static const char *TAG = "adc button";
|
||||
|
||||
#define ADC_BTN_CHECK(a, str, ret_val) \
|
||||
if (!(a)) \
|
||||
{ \
|
||||
ESP_LOGE(TAG, "%s(%d): %s", __FUNCTION__, __LINE__, str); \
|
||||
return (ret_val); \
|
||||
}
|
||||
|
||||
#define DEFAULT_VREF 1100
|
||||
#define NO_OF_SAMPLES CONFIG_ADC_BUTTON_SAMPLE_TIMES //Multisampling
|
||||
|
||||
/*!< Using atten bigger than 6db by default, it will be 11db or 12db in different target */
|
||||
#define DEFAULT_ADC_ATTEN (ADC_ATTEN_DB_6 + 1)
|
||||
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
#define ADC_BUTTON_WIDTH SOC_ADC_RTC_MAX_BITWIDTH
|
||||
#define ADC1_BUTTON_CHANNEL_MAX SOC_ADC_MAX_CHANNEL_NUM
|
||||
#define ADC_BUTTON_ATTEN DEFAULT_ADC_ATTEN
|
||||
#else
|
||||
#define ADC_BUTTON_WIDTH ADC_WIDTH_MAX-1
|
||||
#define ADC1_BUTTON_CHANNEL_MAX ADC1_CHANNEL_MAX
|
||||
#define ADC_BUTTON_ATTEN DEFAULT_ADC_ATTEN
|
||||
#endif
|
||||
#define ADC_BUTTON_ADC_UNIT ADC_UNIT_1
|
||||
#define ADC_BUTTON_MAX_CHANNEL CONFIG_ADC_BUTTON_MAX_CHANNEL
|
||||
#define ADC_BUTTON_MAX_BUTTON CONFIG_ADC_BUTTON_MAX_BUTTON_PER_CHANNEL
|
||||
|
||||
typedef struct {
|
||||
uint16_t min;
|
||||
uint16_t max;
|
||||
} button_data_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t channel;
|
||||
uint8_t is_init;
|
||||
button_data_t btns[ADC_BUTTON_MAX_BUTTON]; /* all button on the channel */
|
||||
uint64_t last_time; /* the last time of adc sample */
|
||||
} btn_adc_channel_t;
|
||||
|
||||
typedef struct {
|
||||
bool is_configured;
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
adc_cali_handle_t adc1_cali_handle;
|
||||
adc_oneshot_unit_handle_t adc1_handle;
|
||||
#else
|
||||
esp_adc_cal_characteristics_t adc_chars;
|
||||
#endif
|
||||
btn_adc_channel_t ch[ADC_BUTTON_MAX_CHANNEL];
|
||||
uint8_t ch_num;
|
||||
} adc_button_t;
|
||||
|
||||
static adc_button_t g_button = {0};
|
||||
|
||||
static int find_unused_channel(void)
|
||||
{
|
||||
for (size_t i = 0; i < ADC_BUTTON_MAX_CHANNEL; i++) {
|
||||
if (0 == g_button.ch[i].is_init) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int find_channel(uint8_t channel)
|
||||
{
|
||||
for (size_t i = 0; i < ADC_BUTTON_MAX_CHANNEL; i++) {
|
||||
if (channel == g_button.ch[i].channel) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
static esp_err_t adc_calibration_init(adc_unit_t unit, adc_atten_t atten, adc_cali_handle_t *out_handle)
|
||||
{
|
||||
adc_cali_handle_t handle = NULL;
|
||||
esp_err_t ret = ESP_FAIL;
|
||||
bool calibrated = false;
|
||||
|
||||
#if ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
|
||||
if (!calibrated) {
|
||||
ESP_LOGI(TAG, "calibration scheme version is %s", "Curve Fitting");
|
||||
adc_cali_curve_fitting_config_t cali_config = {
|
||||
.unit_id = unit,
|
||||
.atten = atten,
|
||||
.bitwidth = ADC_BUTTON_WIDTH,
|
||||
};
|
||||
ret = adc_cali_create_scheme_curve_fitting(&cali_config, &handle);
|
||||
if (ret == ESP_OK) {
|
||||
calibrated = true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
|
||||
if (!calibrated) {
|
||||
ESP_LOGI(TAG, "calibration scheme version is %s", "Line Fitting");
|
||||
adc_cali_line_fitting_config_t cali_config = {
|
||||
.unit_id = unit,
|
||||
.atten = atten,
|
||||
.bitwidth = ADC_BUTTON_WIDTH,
|
||||
};
|
||||
ret = adc_cali_create_scheme_line_fitting(&cali_config, &handle);
|
||||
if (ret == ESP_OK) {
|
||||
calibrated = true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
*out_handle = handle;
|
||||
if (ret == ESP_OK) {
|
||||
ESP_LOGI(TAG, "Calibration Success");
|
||||
} else if (ret == ESP_ERR_NOT_SUPPORTED || !calibrated) {
|
||||
ESP_LOGW(TAG, "eFuse not burnt, skip software calibration");
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Invalid arg or no memory");
|
||||
}
|
||||
|
||||
return calibrated ? ESP_OK : ESP_FAIL;
|
||||
}
|
||||
#endif
|
||||
|
||||
esp_err_t button_adc_init(const button_adc_config_t *config)
|
||||
{
|
||||
ADC_BTN_CHECK(NULL != config, "Pointer of config is invalid", ESP_ERR_INVALID_ARG);
|
||||
ADC_BTN_CHECK(config->adc_channel < ADC1_BUTTON_CHANNEL_MAX, "channel out of range", ESP_ERR_NOT_SUPPORTED);
|
||||
ADC_BTN_CHECK(config->button_index < ADC_BUTTON_MAX_BUTTON, "button_index out of range", ESP_ERR_NOT_SUPPORTED);
|
||||
ADC_BTN_CHECK(config->max > 0, "key max voltage invalid", ESP_ERR_INVALID_ARG);
|
||||
|
||||
int ch_index = find_channel(config->adc_channel);
|
||||
if (ch_index >= 0) { /**< the channel has been initialized */
|
||||
ADC_BTN_CHECK(g_button.ch[ch_index].btns[config->button_index].max == 0, "The button_index has been used", ESP_ERR_INVALID_STATE);
|
||||
} else { /**< this is a new channel */
|
||||
int unused_ch_index = find_unused_channel();
|
||||
ADC_BTN_CHECK(unused_ch_index >= 0, "exceed max channel number, can't create a new channel", ESP_ERR_INVALID_STATE);
|
||||
ch_index = unused_ch_index;
|
||||
}
|
||||
|
||||
/** initialize adc */
|
||||
if (0 == g_button.is_configured) {
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
esp_err_t ret;
|
||||
if (NULL == config->adc_handle) {
|
||||
//ADC1 Init
|
||||
adc_oneshot_unit_init_cfg_t init_config = {
|
||||
.unit_id = ADC_UNIT_1,
|
||||
};
|
||||
ret = adc_oneshot_new_unit(&init_config, &g_button.adc1_handle);
|
||||
ADC_BTN_CHECK(ret == ESP_OK, "adc oneshot new unit fail!", ESP_FAIL);
|
||||
} else {
|
||||
g_button.adc1_handle = *config->adc_handle ;
|
||||
ESP_LOGI(TAG, "ADC1 has been initialized");
|
||||
}
|
||||
#else
|
||||
//Configure ADC
|
||||
adc1_config_width(ADC_BUTTON_WIDTH);
|
||||
//Characterize ADC
|
||||
esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_BUTTON_ADC_UNIT, ADC_BUTTON_ATTEN, ADC_BUTTON_WIDTH, DEFAULT_VREF, &g_button.adc_chars);
|
||||
if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP) {
|
||||
ESP_LOGI(TAG, "Characterized using Two Point Value");
|
||||
} else if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) {
|
||||
ESP_LOGI(TAG, "Characterized using eFuse Vref");
|
||||
} else {
|
||||
ESP_LOGI(TAG, "Characterized using Default Vref");
|
||||
}
|
||||
#endif
|
||||
g_button.is_configured = 1;
|
||||
}
|
||||
|
||||
/** initialize adc channel */
|
||||
if (0 == g_button.ch[ch_index].is_init) {
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
//ADC1 Config
|
||||
adc_oneshot_chan_cfg_t oneshot_config = {
|
||||
.bitwidth = ADC_BUTTON_WIDTH,
|
||||
.atten = ADC_BUTTON_ATTEN,
|
||||
};
|
||||
esp_err_t ret = adc_oneshot_config_channel(g_button.adc1_handle, config->adc_channel, &oneshot_config);
|
||||
ADC_BTN_CHECK(ret == ESP_OK, "adc oneshot config channel fail!", ESP_FAIL);
|
||||
//-------------ADC1 Calibration Init---------------//
|
||||
ret = adc_calibration_init(ADC_BUTTON_ADC_UNIT, ADC_BUTTON_ATTEN, &g_button.adc1_cali_handle);
|
||||
ADC_BTN_CHECK(ret == ESP_OK, "ADC1 Calibration Init False", 0);
|
||||
#else
|
||||
adc1_config_channel_atten(config->adc_channel, ADC_BUTTON_ATTEN);
|
||||
#endif
|
||||
g_button.ch[ch_index].channel = config->adc_channel;
|
||||
g_button.ch[ch_index].is_init = 1;
|
||||
g_button.ch[ch_index].last_time = 0;
|
||||
}
|
||||
g_button.ch[ch_index].btns[config->button_index].max = config->max;
|
||||
g_button.ch[ch_index].btns[config->button_index].min = config->min;
|
||||
g_button.ch_num++;
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t button_adc_deinit(uint8_t channel, int button_index)
|
||||
{
|
||||
ADC_BTN_CHECK(channel < ADC1_BUTTON_CHANNEL_MAX, "channel out of range", ESP_ERR_INVALID_ARG);
|
||||
ADC_BTN_CHECK(button_index < ADC_BUTTON_MAX_BUTTON, "button_index out of range", ESP_ERR_INVALID_ARG);
|
||||
|
||||
int ch_index = find_channel(channel);
|
||||
ADC_BTN_CHECK(ch_index >= 0, "can't find the channel", ESP_ERR_INVALID_ARG);
|
||||
|
||||
g_button.ch[ch_index].btns[button_index].max = 0;
|
||||
g_button.ch[ch_index].btns[button_index].min = 0;
|
||||
|
||||
/** check button usage on the channel*/
|
||||
uint8_t unused_button = 0;
|
||||
for (size_t i = 0; i < ADC_BUTTON_MAX_BUTTON; i++) {
|
||||
if (0 == g_button.ch[ch_index].btns[i].max) {
|
||||
unused_button++;
|
||||
}
|
||||
}
|
||||
if (unused_button == ADC_BUTTON_MAX_BUTTON && g_button.ch[ch_index].is_init) { /**< if all button is unused, deinit the channel */
|
||||
g_button.ch[ch_index].is_init = 0;
|
||||
g_button.ch[ch_index].channel = ADC1_BUTTON_CHANNEL_MAX;
|
||||
ESP_LOGD(TAG, "all button is unused on channel%d, deinit the channel", g_button.ch[ch_index].channel);
|
||||
}
|
||||
|
||||
/** check channel usage on the adc*/
|
||||
uint8_t unused_ch = 0;
|
||||
for (size_t i = 0; i < ADC_BUTTON_MAX_CHANNEL; i++) {
|
||||
if (0 == g_button.ch[i].is_init) {
|
||||
unused_ch++;
|
||||
}
|
||||
}
|
||||
if (unused_ch == ADC_BUTTON_MAX_CHANNEL && g_button.is_configured) { /**< if all channel is unused, deinit the adc */
|
||||
g_button.is_configured = false;
|
||||
memset(&g_button, 0, sizeof(adc_button_t));
|
||||
ESP_LOGD(TAG, "all channel is unused, , deinit adc");
|
||||
}
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
esp_err_t ret = adc_oneshot_del_unit(g_button.adc1_handle);
|
||||
ADC_BTN_CHECK(ret == ESP_OK, "adc oneshot deinit fail", ESP_FAIL);
|
||||
#endif
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static uint32_t get_adc_volatge(uint8_t channel)
|
||||
{
|
||||
uint32_t adc_reading = 0;
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)
|
||||
int adc_raw = 0;
|
||||
for (int i = 0; i < NO_OF_SAMPLES; i++) {
|
||||
adc_oneshot_read(g_button.adc1_handle, channel, &adc_raw);
|
||||
adc_reading += adc_raw;
|
||||
}
|
||||
adc_reading /= NO_OF_SAMPLES;
|
||||
//Convert adc_reading to voltage in mV
|
||||
int voltage = 0;
|
||||
adc_cali_raw_to_voltage(g_button.adc1_cali_handle, adc_reading, &voltage);
|
||||
ESP_LOGV(TAG, "Raw: %"PRIu32"\tVoltage: %dmV", adc_reading, voltage);
|
||||
#else
|
||||
//Multisampling
|
||||
for (int i = 0; i < NO_OF_SAMPLES; i++) {
|
||||
adc_reading += adc1_get_raw(channel);
|
||||
}
|
||||
adc_reading /= NO_OF_SAMPLES;
|
||||
//Convert adc_reading to voltage in mV
|
||||
uint32_t voltage = esp_adc_cal_raw_to_voltage(adc_reading, &g_button.adc_chars);
|
||||
ESP_LOGV(TAG, "Raw: %"PRIu32"\tVoltage: %"PRIu32"mV", adc_reading, voltage);
|
||||
#endif
|
||||
return voltage;
|
||||
}
|
||||
|
||||
uint8_t button_adc_get_key_level(void *button_index)
|
||||
{
|
||||
static uint16_t vol = 0;
|
||||
uint32_t ch = ADC_BUTTON_SPLIT_CHANNEL(button_index);
|
||||
uint32_t index = ADC_BUTTON_SPLIT_INDEX(button_index);
|
||||
ADC_BTN_CHECK(ch < ADC1_BUTTON_CHANNEL_MAX, "channel out of range", 0);
|
||||
ADC_BTN_CHECK(index < ADC_BUTTON_MAX_BUTTON, "button_index out of range", 0);
|
||||
int ch_index = find_channel(ch);
|
||||
ADC_BTN_CHECK(ch_index >= 0, "The button_index is not init", 0);
|
||||
|
||||
/** It starts only when the elapsed time is more than 1ms */
|
||||
if ((esp_timer_get_time() - g_button.ch[ch_index].last_time) > 1000) {
|
||||
vol = get_adc_volatge(ch);
|
||||
g_button.ch[ch_index].last_time = esp_timer_get_time();
|
||||
}
|
||||
|
||||
if (vol <= g_button.ch[ch_index].btns[index].max &&
|
||||
vol >= g_button.ch[ch_index].btns[index].min) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue