eas_parser.h revision e442bb7cd6a085b33a4dd52c0e20a157ada7feb1
13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/*----------------------------------------------------------------------------
23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *
33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * File:
43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * eas_parser.h
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) *
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Contents and purpose:
73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Interface declarations for the generic parser interface
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *
93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * This header only contains declarations that are specific
103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * to this implementation.
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *
123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Copyright Sonic Network Inc. 2005
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License");
153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * you may not use this file except in compliance with the License.
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * You may obtain a copy of the License at
173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *
183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *      http://www.apache.org/licenses/LICENSE-2.0
193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Unless required by applicable law or agreed to in writing, software
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS,
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * See the License for the specific language governing permissions and
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * limitations under the License.
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *----------------------------------------------------------------------------
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Revision Control:
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) *   $Revision: 767 $
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) *   $Date: 2007-07-19 13:47:31 -0700 (Thu, 19 Jul 2007) $
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) *----------------------------------------------------------------------------
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)*/
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef _EAS_PARSER_H
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define _EAS_PARSER_H
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "eas_types.h"
373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/* metadata callback */
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)typedef struct s_metadata_cb_tag
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles){
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	EAS_METADATA_CBFUNC		callback;
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	char					*buffer;
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	EAS_VOID_PTR			pUserData;
453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	EAS_I32					bufferSize;
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} S_METADATA_CB;
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/* generic parser interface */
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)typedef struct
503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles){
513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	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
66typedef enum
67{
68	eParserModePlay,
69	eParserModeLocate,
70	eParserModeMute,
71	eParserModeMetaData
72} E_PARSE_MODE;
73
74typedef 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