MidiFile.h revision 89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5
189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** Copyright 2008, The Android Open Source Project 489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** you may not use this file except in compliance with the License. 789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** You may obtain a copy of the License at 889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 1089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** 1189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** Unless required by applicable law or agreed to in writing, software 1289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 1389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** See the License for the specific language governing permissions and 1589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project** limitations under the License. 1689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project*/ 1789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 1889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#ifndef ANDROID_MIDIFILE_H 1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#define ANDROID_MIDIFILE_H 2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/MediaPlayerInterface.h> 2289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/AudioTrack.h> 2389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <libsonivox/eas.h> 2489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace android { 2689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass MidiFile : public MediaPlayerInterface { 2889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectpublic: 2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project MidiFile(); 3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project ~MidiFile(); 3189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t initCheck(); 3389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t setDataSource(const char* path); 3489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t setDataSource(int fd, int64_t offset, int64_t length); 3589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t setVideoSurface(const sp<ISurface>& surface) { return UNKNOWN_ERROR; } 3689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t prepare(); 3789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t prepareAsync(); 3889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t start(); 3989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t stop(); 4089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t seekTo(int msec); 4189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t pause(); 4289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual bool isPlaying(); 4389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t getCurrentPosition(int* msec); 4489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t getDuration(int* msec); 4589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t release(); 4689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t reset(); 4789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual status_t setLooping(int loop); 4889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project virtual player_type playerType() { return SONIVOX_PLAYER; } 4989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectprivate: 5189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t createOutputTrack(); 5289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project status_t reset_nosync(); 5389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project static int renderThread(void*); 5489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int render(); 5589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project void updateState(){ EAS_State(mEasData, mEasHandle, &mState); } 5689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Mutex mMutex; 5889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Condition mCondition; 5989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project EAS_DATA_HANDLE mEasData; 6089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project EAS_HANDLE mEasHandle; 6189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project EAS_PCM* mAudioBuffer; 6289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project EAS_I32 mPlayTime; 6389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project EAS_I32 mDuration; 6489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project EAS_STATE mState; 6589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project EAS_FILE mFileLocator; 6689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project int mStreamType; 6789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mLoop; 6889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project volatile bool mExit; 6989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool mPaused; 7089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project volatile bool mRender; 7189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project pid_t mTid; 7289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 7389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; // namespace android 7589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#endif // ANDROID_MIDIFILE_H 7789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 78