| /*---------------------------------------------------------------------------- |
| * |
| * File: |
| * jet_data.h |
| * |
| * Contents and purpose: |
| * Internal data structures and interfaces for JET |
| * |
| * Copyright (c) 2006 Sonic Network Inc. |
| |
| * 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. |
| *---------------------------------------------------------------------------- |
| * Revision Control: |
| * $Revision: 554 $ |
| * $Date: 2007-02-02 11:06:10 -0800 (Fri, 02 Feb 2007) $ |
| *---------------------------------------------------------------------------- |
| */ |
| |
| #ifndef _JET_DATA_H |
| #define _JET_DATA_H |
| |
| #include "eas.h" |
| #include "jet.h" |
| |
| /* maximum number of segments allowed in a JET file */ |
| #ifndef JET_MAX_SEGMENTS |
| #define JET_MAX_SEGMENTS 32 |
| #endif |
| |
| /* maximum number of DLS collections allowed in a JET file */ |
| #ifndef JET_MAX_DLS_COLLECTIONS |
| #define JET_MAX_DLS_COLLECTIONS 4 |
| #endif |
| |
| /* maximum number of JET events in internal queue */ |
| #ifndef JET_EVENT_QUEUE_SIZE |
| #define JET_EVENT_QUEUE_SIZE 32 |
| #endif |
| |
| /* maximum number of JET events in application queue */ |
| #ifndef APP_EVENT_QUEUE_SIZE |
| #define APP_EVENT_QUEUE_SIZE 32 |
| #endif |
| |
| /* maximum number of active mute events */ |
| #ifndef JET_MUTE_QUEUE_SIZE |
| #define JET_MUTE_QUEUE_SIZE 8 |
| #endif |
| |
| /*---------------------------------------------------------------------------- |
| * JET event definitions |
| *---------------------------------------------------------------------------- |
| */ |
| #define JET_EVENT_APP_LOW 80 |
| #define JET_EVENT_APP_HIGH 83 |
| #define JET_EVENT_LOW 102 |
| #define JET_EVENT_HIGH 119 |
| #define JET_EVENT_MARKER 102 |
| #define JET_EVENT_TRIGGER_CLIP 103 |
| |
| #define JET_MARKER_LOOP_END 0 |
| |
| #define JET_CLIP_ACTIVE_FLAG 0x80 |
| #define JET_CLIP_TRIGGER_FLAG 0x40 |
| #define JET_CLIP_ID_MASK 0x3f |
| |
| /*---------------------------------------------------------------------------- |
| * JET file definitions |
| *---------------------------------------------------------------------------- |
| */ |
| #define JET_TAG(a,b,c,d) (\ |
| ( ((EAS_U32)(a) & 0xFF) << 24 ) \ |
| + ( ((EAS_U32)(b) & 0xFF) << 16 ) \ |
| + ( ((EAS_U32)(c) & 0xFF) << 8 ) \ |
| + ( ((EAS_U32)(d) & 0xFF))) |
| |
| #define JET_VERSION 0x01000000 |
| #define JET_HEADER_TAG JET_TAG('J','E','T',' ') |
| #define JET_INFO_CHUNK JET_TAG('J','I','N','F') |
| #define JET_SMF_CHUNK JET_TAG('J','S','M','F') |
| #define JET_DLS_CHUNK JET_TAG('J','D','L','S') |
| #define INFO_JET_COPYRIGHT JET_TAG('J','C','O','P') |
| #define JET_APP_DATA_CHUNK JET_TAG('J','A','P','P') |
| |
| #define INFO_NUM_SMF_CHUNKS JET_TAG('S','M','F','#') |
| #define INFO_NUM_DLS_CHUNKS JET_TAG('D','L','S','#') |
| #define INFO_JET_VERSION JET_TAG('J','V','E','R') |
| |
| /*---------------------------------------------------------------------------- |
| * S_JET_SEGMENT |
| * |
| * JET segment data |
| *---------------------------------------------------------------------------- |
| */ |
| typedef struct s_jet_segment_tag |
| { |
| EAS_HANDLE streamHandle; |
| EAS_U32 muteFlags; |
| EAS_I16 repeatCount; |
| EAS_U8 userID; |
| EAS_I8 transpose; |
| EAS_I8 libNum; |
| EAS_U8 state; |
| EAS_U8 flags; |
| } S_JET_SEGMENT; |
| |
| /* S_JET_SEGMENT.state */ |
| typedef enum |
| { |
| JET_STATE_CLOSED, |
| JET_STATE_OPEN, |
| JET_STATE_READY, |
| JET_STATE_PLAYING, |
| JET_STATE_PAUSED, |
| JET_STATE_STOPPING |
| } E_JET_SEGMENT_STATE; |
| |
| /* S_JEG_SEGMENT.flags */ |
| #define JET_SEG_FLAG_MUTE_UPDATE 0x01 |
| |
| /*---------------------------------------------------------------------------- |
| * S_JET_DATA |
| * |
| * Main JET data structure |
| *---------------------------------------------------------------------------- |
| */ |
| #define SEG_QUEUE_DEPTH 3 |
| typedef struct s_jet_data_tag |
| { |
| EAS_FILE_HANDLE jetFileHandle; |
| S_JET_SEGMENT segQueue[SEG_QUEUE_DEPTH]; |
| EAS_I32 segmentOffsets[JET_MAX_SEGMENTS]; |
| EAS_I32 appDataOffset; |
| EAS_I32 appDataSize; |
| EAS_DLSLIB_HANDLE libHandles[JET_MAX_DLS_COLLECTIONS]; |
| EAS_U32 jetEventQueue[JET_EVENT_QUEUE_SIZE]; |
| EAS_U32 appEventQueue[APP_EVENT_QUEUE_SIZE]; |
| S_JET_CONFIG config; |
| EAS_U32 segmentTime; |
| EAS_U8 muteQueue[JET_MUTE_QUEUE_SIZE]; |
| EAS_U8 numSegments; |
| EAS_U8 numLibraries; |
| EAS_U8 flags; |
| EAS_U8 playSegment; |
| EAS_U8 queueSegment; |
| EAS_U8 numQueuedSegments; |
| EAS_U8 jetEventQueueRead; |
| EAS_U8 jetEventQueueWrite; |
| EAS_U8 appEventQueueRead; |
| EAS_U8 appEventQueueWrite; |
| } S_JET_DATA; |
| |
| /* flags for S_JET_DATA.flags */ |
| #define JET_FLAGS_PLAYING 1 |
| |
| #define JET_EVENT_VAL_MASK 0x0000007f /* mask for value */ |
| #define JET_EVENT_CTRL_MASK 0x00003f80 /* mask for controller */ |
| #define JET_EVENT_CHAN_MASK 0x0003c000 /* mask for channel */ |
| #define JET_EVENT_TRACK_MASK 0x00fc0000 /* mask for track number */ |
| #define JET_EVENT_SEG_MASK 0xff000000 /* mask for segment ID */ |
| #define JET_EVENT_CTRL_SHIFT 7 /* shift for controller number */ |
| #define JET_EVENT_CHAN_SHIFT 14 /* shift to for MIDI channel */ |
| #define JET_EVENT_TRACK_SHIFT 18 /* shift to get track ID to bit 0 */ |
| #define JET_EVENT_SEG_SHIFT 24 /* shift to get segment ID to bit 0 */ |
| |
| /* prototype for callback function */ |
| extern void JET_Event (EAS_DATA_HANDLE easHandle, EAS_U32 segTrack, EAS_U8 channel, EAS_U8 controller, EAS_U8 value); |
| |
| /* prototype for JET render function */ |
| extern EAS_PUBLIC EAS_RESULT JET_Process (EAS_DATA_HANDLE easHandle); |
| |
| #endif |
| |