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