1*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 2*f81fb7c4SAndroid Build Coastguard Worker * 3*f81fb7c4SAndroid Build Coastguard Worker * File: 4*f81fb7c4SAndroid Build Coastguard Worker * jet_data.h 5*f81fb7c4SAndroid Build Coastguard Worker * 6*f81fb7c4SAndroid Build Coastguard Worker * Contents and purpose: 7*f81fb7c4SAndroid Build Coastguard Worker * Internal data structures and interfaces for JET 8*f81fb7c4SAndroid Build Coastguard Worker * 9*f81fb7c4SAndroid Build Coastguard Worker * Copyright (c) 2006 Sonic Network Inc. 10*f81fb7c4SAndroid Build Coastguard Worker 11*f81fb7c4SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 12*f81fb7c4SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 13*f81fb7c4SAndroid Build Coastguard Worker * You may obtain a copy of the License at 14*f81fb7c4SAndroid Build Coastguard Worker * 15*f81fb7c4SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 16*f81fb7c4SAndroid Build Coastguard Worker * 17*f81fb7c4SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 18*f81fb7c4SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 19*f81fb7c4SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20*f81fb7c4SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 21*f81fb7c4SAndroid Build Coastguard Worker * limitations under the License. 22*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 23*f81fb7c4SAndroid Build Coastguard Worker * Revision Control: 24*f81fb7c4SAndroid Build Coastguard Worker * $Revision: 554 $ 25*f81fb7c4SAndroid Build Coastguard Worker * $Date: 2007-02-02 11:06:10 -0800 (Fri, 02 Feb 2007) $ 26*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 27*f81fb7c4SAndroid Build Coastguard Worker */ 28*f81fb7c4SAndroid Build Coastguard Worker 29*f81fb7c4SAndroid Build Coastguard Worker #ifndef _JET_DATA_H 30*f81fb7c4SAndroid Build Coastguard Worker #define _JET_DATA_H 31*f81fb7c4SAndroid Build Coastguard Worker 32*f81fb7c4SAndroid Build Coastguard Worker #include "eas.h" 33*f81fb7c4SAndroid Build Coastguard Worker #include "jet.h" 34*f81fb7c4SAndroid Build Coastguard Worker 35*f81fb7c4SAndroid Build Coastguard Worker /* maximum number of segments allowed in a JET file */ 36*f81fb7c4SAndroid Build Coastguard Worker #ifndef JET_MAX_SEGMENTS 37*f81fb7c4SAndroid Build Coastguard Worker #define JET_MAX_SEGMENTS 32 38*f81fb7c4SAndroid Build Coastguard Worker #endif 39*f81fb7c4SAndroid Build Coastguard Worker 40*f81fb7c4SAndroid Build Coastguard Worker /* maximum number of DLS collections allowed in a JET file */ 41*f81fb7c4SAndroid Build Coastguard Worker #ifndef JET_MAX_DLS_COLLECTIONS 42*f81fb7c4SAndroid Build Coastguard Worker #define JET_MAX_DLS_COLLECTIONS 4 43*f81fb7c4SAndroid Build Coastguard Worker #endif 44*f81fb7c4SAndroid Build Coastguard Worker 45*f81fb7c4SAndroid Build Coastguard Worker /* maximum number of JET events in internal queue */ 46*f81fb7c4SAndroid Build Coastguard Worker #ifndef JET_EVENT_QUEUE_SIZE 47*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_QUEUE_SIZE 32 48*f81fb7c4SAndroid Build Coastguard Worker #endif 49*f81fb7c4SAndroid Build Coastguard Worker 50*f81fb7c4SAndroid Build Coastguard Worker /* maximum number of JET events in application queue */ 51*f81fb7c4SAndroid Build Coastguard Worker #ifndef APP_EVENT_QUEUE_SIZE 52*f81fb7c4SAndroid Build Coastguard Worker #define APP_EVENT_QUEUE_SIZE 32 53*f81fb7c4SAndroid Build Coastguard Worker #endif 54*f81fb7c4SAndroid Build Coastguard Worker 55*f81fb7c4SAndroid Build Coastguard Worker /* maximum number of active mute events */ 56*f81fb7c4SAndroid Build Coastguard Worker #ifndef JET_MUTE_QUEUE_SIZE 57*f81fb7c4SAndroid Build Coastguard Worker #define JET_MUTE_QUEUE_SIZE 8 58*f81fb7c4SAndroid Build Coastguard Worker #endif 59*f81fb7c4SAndroid Build Coastguard Worker 60*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 61*f81fb7c4SAndroid Build Coastguard Worker * JET event definitions 62*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 63*f81fb7c4SAndroid Build Coastguard Worker */ 64*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_APP_LOW 80 65*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_APP_HIGH 83 66*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_LOW 102 67*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_HIGH 119 68*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_MARKER 102 69*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_TRIGGER_CLIP 103 70*f81fb7c4SAndroid Build Coastguard Worker 71*f81fb7c4SAndroid Build Coastguard Worker #define JET_MARKER_LOOP_END 0 72*f81fb7c4SAndroid Build Coastguard Worker 73*f81fb7c4SAndroid Build Coastguard Worker #define JET_CLIP_ACTIVE_FLAG 0x80 74*f81fb7c4SAndroid Build Coastguard Worker #define JET_CLIP_TRIGGER_FLAG 0x40 75*f81fb7c4SAndroid Build Coastguard Worker #define JET_CLIP_ID_MASK 0x3f 76*f81fb7c4SAndroid Build Coastguard Worker 77*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 78*f81fb7c4SAndroid Build Coastguard Worker * JET file definitions 79*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 80*f81fb7c4SAndroid Build Coastguard Worker */ 81*f81fb7c4SAndroid Build Coastguard Worker #define JET_TAG(a,b,c,d) (\ 82*f81fb7c4SAndroid Build Coastguard Worker ( ((EAS_U32)(a) & 0xFF) << 24 ) \ 83*f81fb7c4SAndroid Build Coastguard Worker + ( ((EAS_U32)(b) & 0xFF) << 16 ) \ 84*f81fb7c4SAndroid Build Coastguard Worker + ( ((EAS_U32)(c) & 0xFF) << 8 ) \ 85*f81fb7c4SAndroid Build Coastguard Worker + ( ((EAS_U32)(d) & 0xFF))) 86*f81fb7c4SAndroid Build Coastguard Worker 87*f81fb7c4SAndroid Build Coastguard Worker #define JET_VERSION 0x01000000 88*f81fb7c4SAndroid Build Coastguard Worker #define JET_HEADER_TAG JET_TAG('J','E','T',' ') 89*f81fb7c4SAndroid Build Coastguard Worker #define JET_INFO_CHUNK JET_TAG('J','I','N','F') 90*f81fb7c4SAndroid Build Coastguard Worker #define JET_SMF_CHUNK JET_TAG('J','S','M','F') 91*f81fb7c4SAndroid Build Coastguard Worker #define JET_DLS_CHUNK JET_TAG('J','D','L','S') 92*f81fb7c4SAndroid Build Coastguard Worker #define INFO_JET_COPYRIGHT JET_TAG('J','C','O','P') 93*f81fb7c4SAndroid Build Coastguard Worker #define JET_APP_DATA_CHUNK JET_TAG('J','A','P','P') 94*f81fb7c4SAndroid Build Coastguard Worker 95*f81fb7c4SAndroid Build Coastguard Worker #define INFO_NUM_SMF_CHUNKS JET_TAG('S','M','F','#') 96*f81fb7c4SAndroid Build Coastguard Worker #define INFO_NUM_DLS_CHUNKS JET_TAG('D','L','S','#') 97*f81fb7c4SAndroid Build Coastguard Worker #define INFO_JET_VERSION JET_TAG('J','V','E','R') 98*f81fb7c4SAndroid Build Coastguard Worker 99*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 100*f81fb7c4SAndroid Build Coastguard Worker * S_JET_SEGMENT 101*f81fb7c4SAndroid Build Coastguard Worker * 102*f81fb7c4SAndroid Build Coastguard Worker * JET segment data 103*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 104*f81fb7c4SAndroid Build Coastguard Worker */ 105*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_jet_segment_tag 106*f81fb7c4SAndroid Build Coastguard Worker { 107*f81fb7c4SAndroid Build Coastguard Worker EAS_HANDLE streamHandle; 108*f81fb7c4SAndroid Build Coastguard Worker EAS_U32 muteFlags; 109*f81fb7c4SAndroid Build Coastguard Worker EAS_I16 repeatCount; 110*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 userID; 111*f81fb7c4SAndroid Build Coastguard Worker EAS_I8 transpose; 112*f81fb7c4SAndroid Build Coastguard Worker EAS_I8 libNum; 113*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 state; 114*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 flags; 115*f81fb7c4SAndroid Build Coastguard Worker } S_JET_SEGMENT; 116*f81fb7c4SAndroid Build Coastguard Worker 117*f81fb7c4SAndroid Build Coastguard Worker /* S_JET_SEGMENT.state */ 118*f81fb7c4SAndroid Build Coastguard Worker typedef enum 119*f81fb7c4SAndroid Build Coastguard Worker { 120*f81fb7c4SAndroid Build Coastguard Worker JET_STATE_CLOSED, 121*f81fb7c4SAndroid Build Coastguard Worker JET_STATE_OPEN, 122*f81fb7c4SAndroid Build Coastguard Worker JET_STATE_READY, 123*f81fb7c4SAndroid Build Coastguard Worker JET_STATE_PLAYING, 124*f81fb7c4SAndroid Build Coastguard Worker JET_STATE_PAUSED, 125*f81fb7c4SAndroid Build Coastguard Worker JET_STATE_STOPPING 126*f81fb7c4SAndroid Build Coastguard Worker } E_JET_SEGMENT_STATE; 127*f81fb7c4SAndroid Build Coastguard Worker 128*f81fb7c4SAndroid Build Coastguard Worker /* S_JEG_SEGMENT.flags */ 129*f81fb7c4SAndroid Build Coastguard Worker #define JET_SEG_FLAG_MUTE_UPDATE 0x01 130*f81fb7c4SAndroid Build Coastguard Worker 131*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 132*f81fb7c4SAndroid Build Coastguard Worker * S_JET_DATA 133*f81fb7c4SAndroid Build Coastguard Worker * 134*f81fb7c4SAndroid Build Coastguard Worker * Main JET data structure 135*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 136*f81fb7c4SAndroid Build Coastguard Worker */ 137*f81fb7c4SAndroid Build Coastguard Worker #define SEG_QUEUE_DEPTH 3 138*f81fb7c4SAndroid Build Coastguard Worker typedef struct s_jet_data_tag 139*f81fb7c4SAndroid Build Coastguard Worker { 140*f81fb7c4SAndroid Build Coastguard Worker EAS_FILE_HANDLE jetFileHandle; 141*f81fb7c4SAndroid Build Coastguard Worker S_JET_SEGMENT segQueue[SEG_QUEUE_DEPTH]; 142*f81fb7c4SAndroid Build Coastguard Worker EAS_I32 segmentOffsets[JET_MAX_SEGMENTS]; 143*f81fb7c4SAndroid Build Coastguard Worker EAS_I32 appDataOffset; 144*f81fb7c4SAndroid Build Coastguard Worker EAS_I32 appDataSize; 145*f81fb7c4SAndroid Build Coastguard Worker EAS_DLSLIB_HANDLE libHandles[JET_MAX_DLS_COLLECTIONS]; 146*f81fb7c4SAndroid Build Coastguard Worker EAS_U32 jetEventQueue[JET_EVENT_QUEUE_SIZE]; 147*f81fb7c4SAndroid Build Coastguard Worker EAS_U32 appEventQueue[APP_EVENT_QUEUE_SIZE]; 148*f81fb7c4SAndroid Build Coastguard Worker S_JET_CONFIG config; 149*f81fb7c4SAndroid Build Coastguard Worker EAS_U32 segmentTime; 150*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 muteQueue[JET_MUTE_QUEUE_SIZE]; 151*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 numSegments; 152*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 numLibraries; 153*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 flags; 154*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 playSegment; 155*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 queueSegment; 156*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 numQueuedSegments; 157*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 jetEventQueueRead; 158*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 jetEventQueueWrite; 159*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 appEventQueueRead; 160*f81fb7c4SAndroid Build Coastguard Worker EAS_U8 appEventQueueWrite; 161*f81fb7c4SAndroid Build Coastguard Worker } S_JET_DATA; 162*f81fb7c4SAndroid Build Coastguard Worker 163*f81fb7c4SAndroid Build Coastguard Worker /* flags for S_JET_DATA.flags */ 164*f81fb7c4SAndroid Build Coastguard Worker #define JET_FLAGS_PLAYING 1 165*f81fb7c4SAndroid Build Coastguard Worker 166*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_VAL_MASK 0x0000007f /* mask for value */ 167*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_CTRL_MASK 0x00003f80 /* mask for controller */ 168*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_CHAN_MASK 0x0003c000 /* mask for channel */ 169*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_TRACK_MASK 0x00fc0000 /* mask for track number */ 170*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_SEG_MASK 0xff000000 /* mask for segment ID */ 171*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_CTRL_SHIFT 7 /* shift for controller number */ 172*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_CHAN_SHIFT 14 /* shift to for MIDI channel */ 173*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_TRACK_SHIFT 18 /* shift to get track ID to bit 0 */ 174*f81fb7c4SAndroid Build Coastguard Worker #define JET_EVENT_SEG_SHIFT 24 /* shift to get segment ID to bit 0 */ 175*f81fb7c4SAndroid Build Coastguard Worker 176*f81fb7c4SAndroid Build Coastguard Worker /* prototype for callback function */ 177*f81fb7c4SAndroid Build Coastguard Worker extern void JET_Event (EAS_DATA_HANDLE easHandle, EAS_U32 segTrack, EAS_U8 channel, EAS_U8 controller, EAS_U8 value); 178*f81fb7c4SAndroid Build Coastguard Worker 179*f81fb7c4SAndroid Build Coastguard Worker /* prototype for JET render function */ 180*f81fb7c4SAndroid Build Coastguard Worker extern EAS_PUBLIC EAS_RESULT JET_Process (EAS_DATA_HANDLE easHandle); 181*f81fb7c4SAndroid Build Coastguard Worker 182*f81fb7c4SAndroid Build Coastguard Worker #endif 183*f81fb7c4SAndroid Build Coastguard Worker 184