156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * File: 456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * jet_data.h 556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Contents and purpose: 756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Internal data structures and interfaces for JET 856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Copyright (c) 2006 Sonic Network Inc. 107df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 117df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 127df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * you may not use this file except in compliance with the License. 137df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * You may obtain a copy of the License at 147df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * 157df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 167df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * 177df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 187df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 197df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 207df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * See the License for the specific language governing permissions and 217df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * limitations under the License. 2256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 2356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Revision Control: 2456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * $Revision: 554 $ 2556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * $Date: 2007-02-02 11:06:10 -0800 (Fri, 02 Feb 2007) $ 2656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 2756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 2856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 2956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef _JET_DATA_H 3056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define _JET_DATA_H 3156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 3256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas.h" 3356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "jet.h" 3456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 3556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* maximum number of segments allowed in a JET file */ 3656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef JET_MAX_SEGMENTS 3756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_MAX_SEGMENTS 32 3856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 3956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 4056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* maximum number of DLS collections allowed in a JET file */ 4156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef JET_MAX_DLS_COLLECTIONS 4256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_MAX_DLS_COLLECTIONS 4 4356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 4456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 4556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* maximum number of JET events in internal queue */ 4656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef JET_EVENT_QUEUE_SIZE 4756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_QUEUE_SIZE 32 4856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 4956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 5056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* maximum number of JET events in application queue */ 5156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef APP_EVENT_QUEUE_SIZE 5256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define APP_EVENT_QUEUE_SIZE 32 5356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 5456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 5556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* maximum number of active mute events */ 5656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef JET_MUTE_QUEUE_SIZE 5756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_MUTE_QUEUE_SIZE 8 5856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 5956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 6156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET event definitions 6256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 6356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 6456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_APP_LOW 80 6556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_APP_HIGH 83 6656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_LOW 102 6756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_HIGH 119 6856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_MARKER 102 6956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_TRIGGER_CLIP 103 7056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 7156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_MARKER_LOOP_END 0 7256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 7356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_CLIP_ACTIVE_FLAG 0x80 7456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_CLIP_TRIGGER_FLAG 0x40 7556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_CLIP_ID_MASK 0x3f 7656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 7756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 7856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET file definitions 7956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 8056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 8156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_TAG(a,b,c,d) (\ 8256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks ( ((EAS_U32)(a) & 0xFF) << 24 ) \ 8356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks + ( ((EAS_U32)(b) & 0xFF) << 16 ) \ 8456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks + ( ((EAS_U32)(c) & 0xFF) << 8 ) \ 8556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks + ( ((EAS_U32)(d) & 0xFF))) 8656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_VERSION 0x01000000 8856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_HEADER_TAG JET_TAG('J','E','T',' ') 8956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_INFO_CHUNK JET_TAG('J','I','N','F') 9056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_SMF_CHUNK JET_TAG('J','S','M','F') 9156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_DLS_CHUNK JET_TAG('J','D','L','S') 9256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define INFO_JET_COPYRIGHT JET_TAG('J','C','O','P') 9356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_APP_DATA_CHUNK JET_TAG('J','A','P','P') 9456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 9556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define INFO_NUM_SMF_CHUNKS JET_TAG('S','M','F','#') 9656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define INFO_NUM_DLS_CHUNKS JET_TAG('D','L','S','#') 9756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define INFO_JET_VERSION JET_TAG('J','V','E','R') 9856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 9956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 10056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * S_JET_SEGMENT 10156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 10256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * JET segment data 10356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 10456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 10556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_jet_segment_tag 10656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 10756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HANDLE streamHandle; 10856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U32 muteFlags; 10956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I16 repeatCount; 11056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 userID; 11156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I8 transpose; 11256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I8 libNum; 11356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 state; 11456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 flags; 11556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_JET_SEGMENT; 11656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 11756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* S_JET_SEGMENT.state */ 11856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef enum 11956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 12056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks JET_STATE_CLOSED, 12156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks JET_STATE_OPEN, 12256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks JET_STATE_READY, 12356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks JET_STATE_PLAYING, 12456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks JET_STATE_PAUSED, 12556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks JET_STATE_STOPPING 12656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} E_JET_SEGMENT_STATE; 12756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 12856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* S_JEG_SEGMENT.flags */ 12956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_SEG_FLAG_MUTE_UPDATE 0x01 13056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 13156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 13256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * S_JET_DATA 13356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 13456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Main JET data structure 13556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 13656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 13756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define SEG_QUEUE_DEPTH 3 13856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct s_jet_data_tag 13956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 14056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_FILE_HANDLE jetFileHandle; 14156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks S_JET_SEGMENT segQueue[SEG_QUEUE_DEPTH]; 14256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I32 segmentOffsets[JET_MAX_SEGMENTS]; 14356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I32 appDataOffset; 14456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I32 appDataSize; 14556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_DLSLIB_HANDLE libHandles[JET_MAX_DLS_COLLECTIONS]; 14656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U32 jetEventQueue[JET_EVENT_QUEUE_SIZE]; 14756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U32 appEventQueue[APP_EVENT_QUEUE_SIZE]; 14856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks S_JET_CONFIG config; 14956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U32 segmentTime; 15056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 muteQueue[JET_MUTE_QUEUE_SIZE]; 15156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 numSegments; 15256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 numLibraries; 15356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 flags; 15456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 playSegment; 15556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 queueSegment; 15656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 numQueuedSegments; 15756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 jetEventQueueRead; 15856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 jetEventQueueWrite; 15956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 appEventQueueRead; 16056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 appEventQueueWrite; 16156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} S_JET_DATA; 16256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 16356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* flags for S_JET_DATA.flags */ 16456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_FLAGS_PLAYING 1 16556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 16656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_VAL_MASK 0x0000007f /* mask for value */ 16756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_CTRL_MASK 0x00003f80 /* mask for controller */ 16856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_CHAN_MASK 0x0003c000 /* mask for channel */ 16956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_TRACK_MASK 0x00fc0000 /* mask for track number */ 17056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_SEG_MASK 0xff000000 /* mask for segment ID */ 17156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_CTRL_SHIFT 7 /* shift for controller number */ 17256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_CHAN_SHIFT 14 /* shift to for MIDI channel */ 17356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_TRACK_SHIFT 18 /* shift to get track ID to bit 0 */ 17456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define JET_EVENT_SEG_SHIFT 24 /* shift to get segment ID to bit 0 */ 17556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 17656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* prototype for callback function */ 17756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksextern void JET_Event (EAS_DATA_HANDLE easHandle, EAS_U32 segTrack, EAS_U8 channel, EAS_U8 controller, EAS_U8 value); 17856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 17956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* prototype for JET render function */ 18056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksextern EAS_PUBLIC EAS_RESULT JET_Process (EAS_DATA_HANDLE easHandle); 18156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 18256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 18356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 184