1 /*----------------------------------------------------------------------------
2  *
3  * File:
4  * eas_parser.h
5  *
6  * Contents and purpose:
7  * Interface declarations for the generic parser interface
8  *
9  * This header only contains declarations that are specific
10  * to this implementation.
11  *
12  * Copyright Sonic Network Inc. 2005
13 
14  * Licensed under the Apache License, Version 2.0 (the "License");
15  * you may not use this file except in compliance with the License.
16  * You may obtain a copy of the License at
17  *
18  *      http://www.apache.org/licenses/LICENSE-2.0
19  *
20  * Unless required by applicable law or agreed to in writing, software
21  * distributed under the License is distributed on an "AS IS" BASIS,
22  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23  * See the License for the specific language governing permissions and
24  * limitations under the License.
25  *
26  *----------------------------------------------------------------------------
27  * Revision Control:
28  *   $Revision: 767 $
29  *   $Date: 2007-07-19 13:47:31 -0700 (Thu, 19 Jul 2007) $
30  *----------------------------------------------------------------------------
31 */
32 
33 #ifndef _EAS_PARSER_H
34 #define _EAS_PARSER_H
35 
36 #include "eas_types.h"
37 
38 
39 /* metadata callback */
40 typedef struct s_metadata_cb_tag
41 {
42     EAS_METADATA_CBFUNC     callback;
43     char                    *buffer;
44     EAS_VOID_PTR            pUserData;
45     EAS_I32                 bufferSize;
46 } S_METADATA_CB;
47 
48 /* generic parser interface */
49 typedef struct
50 {
51     EAS_RESULT (* EAS_CONST pfCheckFileType)(struct s_eas_data_tag *pEASData, EAS_FILE_HANDLE fileHandle, EAS_VOID_PTR *ppHandle, EAS_I32 offset);
52     EAS_RESULT (* EAS_CONST pfPrepare)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData);
53     EAS_RESULT (* EAS_CONST pfTime)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData, EAS_U32 *pTime);
54     EAS_RESULT (* EAS_CONST pfEvent)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData, EAS_INT parseMode);
55     EAS_RESULT (* EAS_CONST pfState)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData, EAS_STATE *pState);
56     EAS_RESULT (* EAS_CONST pfClose)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData);
57     EAS_RESULT (* EAS_CONST pfReset)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData);
58     EAS_RESULT (* EAS_CONST pfPause)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData);
59     EAS_RESULT (* EAS_CONST pfResume)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData);
60     EAS_RESULT (* EAS_CONST pfLocate)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData, EAS_I32 time, EAS_BOOL *pParserLocate);
61     EAS_RESULT (* EAS_CONST pfSetData)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData, EAS_I32 param, EAS_I32 value);
62     EAS_RESULT (* EAS_CONST pfGetData)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData, EAS_I32 param, EAS_I32 *pValue);
63     EAS_RESULT (* EAS_CONST pfGetMetaData)(struct s_eas_data_tag *pEASData, EAS_VOID_PTR pInstData, EAS_I32 *pMediaLength);
64 } S_FILE_PARSER_INTERFACE;
65 
66 typedef enum
67 {
68     eParserModePlay,
69     eParserModeLocate,
70     eParserModeMute,
71     eParserModeMetaData
72 } E_PARSE_MODE;
73 
74 typedef enum
75 {
76     PARSER_DATA_FILE_TYPE,
77     PARSER_DATA_PLAYBACK_RATE,
78     PARSER_DATA_TRANSPOSITION,
79     PARSER_DATA_VOLUME,
80     PARSER_DATA_SYNTH_HANDLE,
81     PARSER_DATA_METADATA_CB,
82     PARSER_DATA_DLS_COLLECTION,
83     PARSER_DATA_EAS_LIBRARY,
84     PARSER_DATA_POLYPHONY,
85     PARSER_DATA_PRIORITY,
86     PARSER_DATA_FORMAT,
87     PARSER_DATA_MEDIA_LENGTH,
88     PARSER_DATA_JET_CB,
89     PARSER_DATA_MUTE_FLAGS,
90     PARSER_DATA_SET_MUTE,
91     PARSER_DATA_CLEAR_MUTE,
92     PARSER_DATA_NOTE_COUNT,
93     PARSER_DATA_MAX_PCM_STREAMS,
94     PARSER_DATA_GAIN_OFFSET,
95     PARSER_DATA_PLAY_MODE
96 } E_PARSER_DATA;
97 
98 #endif /* #ifndef _EAS_PARSER_H */
99