1/*----------------------------------------------------------------------------
2 *
3 * File:
4 * jet.h
5 *
6 * Contents and purpose:
7 * Public interface for JET sound engine
8 *
9 * Copyright (c) 2006 Sonic Network Inc.
10
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
14 *
15 *      http://www.apache.org/licenses/LICENSE-2.0
16 *
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
22 *----------------------------------------------------------------------------
23 * Revision Control:
24 *   $Revision: 554 $
25 *   $Date: 2007-02-02 11:06:10 -0800 (Fri, 02 Feb 2007) $
26 *----------------------------------------------------------------------------
27*/
28
29#ifndef _JET_H
30#define _JET_H
31
32#include "eas_types.h"
33#include "eas.h"
34
35/* for C++ linkage */
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/* opaque handle types for JET interface */
41typedef struct s_jet_data_tag *JET_DATA_HANDLE;
42
43typedef struct s_jet_config_tag
44{
45    EAS_U8      appEventRangeLow;
46    EAS_U8      appEventRangeHigh;
47} S_JET_CONFIG;
48
49typedef struct s_jet_status_tag
50{
51    EAS_INT     currentUserID;
52    EAS_INT     segmentRepeatCount;
53    EAS_INT     numQueuedSegments;
54    EAS_BOOL    paused;
55    EAS_I32     location;
56    EAS_U8      currentPlayingSegment;
57    EAS_U8      currentQueuedSegment;
58} S_JET_STATUS;
59
60typedef struct s_jet_event_tag
61{
62    EAS_U8      segment;
63    EAS_U8      channel;
64    EAS_U8      track;
65    EAS_U8      controller;
66    EAS_U8      value;
67} S_JET_EVENT;
68
69/*----------------------------------------------------------------------------
70 * JET_Init()
71 *----------------------------------------------------------------------------
72 * Initializes the JET library, allocates memory, etc. Call
73 * JET_Shutdown to de-allocate memory. Pass NULL for pConfig
74 * to use defaults. If passing config data, configSize should be
75 * sizeof(S_JET_CONFIG). This allows for future expansion of the
76 * config structure while maintaining compatibility.
77 *----------------------------------------------------------------------------
78*/
79EAS_PUBLIC EAS_RESULT JET_Init (EAS_DATA_HANDLE easHandle, const S_JET_CONFIG *pConfig, EAS_INT configSize);
80
81/*----------------------------------------------------------------------------
82 * JET_Shutdown()
83 *----------------------------------------------------------------------------
84 * Frees any memory used by the JET library
85 *----------------------------------------------------------------------------
86*/
87EAS_PUBLIC EAS_RESULT JET_Shutdown (EAS_DATA_HANDLE easHandle);
88
89/*----------------------------------------------------------------------------
90 * JET_OpenFile()
91 *----------------------------------------------------------------------------
92 * Opens a JET content file for playback
93 *----------------------------------------------------------------------------
94*/
95EAS_PUBLIC EAS_RESULT JET_OpenFile (EAS_DATA_HANDLE easHandle, EAS_FILE_LOCATOR locator);
96
97/*----------------------------------------------------------------------------
98 * JET_GetAppData()
99 *----------------------------------------------------------------------------
100 * Returns location and size of application data in the JET file
101 *----------------------------------------------------------------------------
102*/
103EAS_RESULT JET_GetAppData (EAS_DATA_HANDLE easHandle, EAS_I32 *pAppDataOffset, EAS_I32 *pAppDataSize);
104
105/*----------------------------------------------------------------------------
106 * JET_CloseFile()
107 *----------------------------------------------------------------------------
108 * Closes a JET content file and releases associated resources
109 *----------------------------------------------------------------------------
110*/
111EAS_PUBLIC EAS_RESULT JET_CloseFile (EAS_DATA_HANDLE easHandle);
112
113/*----------------------------------------------------------------------------
114 * JET_Status()
115 *----------------------------------------------------------------------------
116 * Returns current status
117 *----------------------------------------------------------------------------
118*/
119EAS_PUBLIC EAS_RESULT JET_Status (EAS_DATA_HANDLE easHandle, S_JET_STATUS *pStatus);
120
121/*----------------------------------------------------------------------------
122 * JET_GetEvent()
123 *----------------------------------------------------------------------------
124 * Checks for application events
125 *----------------------------------------------------------------------------
126*/
127EAS_PUBLIC EAS_BOOL JET_GetEvent (EAS_DATA_HANDLE easHandle, EAS_U32 *pEventRaw, S_JET_EVENT *pEvent);
128
129/*----------------------------------------------------------------------------
130 * JET_ParseEvent()
131 *----------------------------------------------------------------------------
132 * Returns current status
133 *----------------------------------------------------------------------------
134*/
135EAS_PUBLIC void JET_ParseEvent (EAS_U32 event, S_JET_EVENT *pEvent);
136
137/*----------------------------------------------------------------------------
138 * JET_QueueSegment()
139 *----------------------------------------------------------------------------
140 * Queue a segment for playback
141 *----------------------------------------------------------------------------
142*/
143EAS_PUBLIC EAS_RESULT JET_QueueSegment (EAS_DATA_HANDLE easHandle, EAS_INT segmentNum, EAS_INT libNum, EAS_INT repeatCount, EAS_INT transpose, EAS_U32 muteFlags, EAS_U8 userID);
144
145/*----------------------------------------------------------------------------
146 * JET_Play()
147 *----------------------------------------------------------------------------
148 * Starts playback of the file
149 *----------------------------------------------------------------------------
150*/
151EAS_PUBLIC EAS_RESULT JET_Play (EAS_DATA_HANDLE easHandle);
152
153/*----------------------------------------------------------------------------
154 * JET_Pause()
155 *----------------------------------------------------------------------------
156 * Pauses playback of the file
157 *----------------------------------------------------------------------------
158*/
159EAS_PUBLIC EAS_RESULT JET_Pause (EAS_DATA_HANDLE easHandle);
160
161/*----------------------------------------------------------------------------
162 * JET_SetMuteFlags()
163 *----------------------------------------------------------------------------
164 * Change the state of the mute flags
165 *----------------------------------------------------------------------------
166*/
167EAS_PUBLIC EAS_RESULT JET_SetMuteFlags (EAS_DATA_HANDLE easHandle, EAS_U32 muteFlags, EAS_BOOL sync);
168
169/*----------------------------------------------------------------------------
170 * JET_SetMuteFlag()
171 *----------------------------------------------------------------------------
172 * Change the state of a single mute flag
173 *----------------------------------------------------------------------------
174*/
175EAS_PUBLIC EAS_RESULT JET_SetMuteFlag (EAS_DATA_HANDLE easHandle, EAS_INT trackNum, EAS_BOOL muteFlag, EAS_BOOL sync);
176
177/*----------------------------------------------------------------------------
178 * JET_TriggerClip()
179 *----------------------------------------------------------------------------
180 * Unmute a track and then mute it when it is complete
181 *----------------------------------------------------------------------------
182*/
183EAS_PUBLIC EAS_RESULT JET_TriggerClip (EAS_DATA_HANDLE easHandle, EAS_INT clipID);
184
185/*----------------------------------------------------------------------------
186 * JET_Clear_Queue()
187 *----------------------------------------------------------------------------
188 * Clears all segments in the queue
189 *----------------------------------------------------------------------------
190*/
191EAS_PUBLIC EAS_RESULT JET_Clear_Queue (EAS_DATA_HANDLE easHandle);
192
193#ifdef __cplusplus
194} /* end extern "C" */
195#endif
196
197
198#endif
199
200