From bc11e713063f3f96f98256abc81c0d8ee1ddb312 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Thu, 8 Jan 2015 12:26:36 -0800 Subject: Use callbacks for Midi I/O Instead of having the Sonivox engine directly open the file and use stdio to read from it, use caller-provided callbacks. Change-Id: Ie55129109060a4a7862fee3177f994401e00b6c1 --- include/media/JetPlayer.h | 5 ++--- include/media/MidiIoWrapper.h | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 include/media/MidiIoWrapper.h (limited to 'include/media') diff --git a/include/media/JetPlayer.h b/include/media/JetPlayer.h index 388f767..63d1980 100644 --- a/include/media/JetPlayer.h +++ b/include/media/JetPlayer.h @@ -22,6 +22,7 @@ #include #include #include +#include namespace android { @@ -86,15 +87,13 @@ private: int mMaxTracks; // max number of MIDI tracks, usually 32 EAS_DATA_HANDLE mEasData; - EAS_FILE_LOCATOR mEasJetFileLoc; + sp mIoWrapper; EAS_PCM* mAudioBuffer;// EAS renders the MIDI data into this buffer, sp mAudioTrack; // and we play it in this audio track int mTrackBufferSize; S_JET_STATUS mJetStatus; S_JET_STATUS mPreviousJetStatus; - char mJetFilePath[PATH_MAX]; - class JetPlayerThread : public Thread { public: JetPlayerThread(JetPlayer *player) : mPlayer(player) { diff --git a/include/media/MidiIoWrapper.h b/include/media/MidiIoWrapper.h new file mode 100644 index 0000000..caf1d75 --- /dev/null +++ b/include/media/MidiIoWrapper.h @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MIDI_IO_WRAPPER_H_ +#define MIDI_IO_WRAPPER_H_ + +#include + +namespace android { + +class MidiIoWrapper : public RefBase { +public: + MidiIoWrapper(const char *path); + MidiIoWrapper(int fd, off64_t offset, int64_t size); + + ~MidiIoWrapper(); + + int readAt(void *buffer, int offset, int size); + int size(); + + EAS_FILE_LOCATOR getLocator(); + +private: + int mFd; + off64_t mBase; + int64_t mLength; + EAS_FILE mEasFile; +}; + + +} // namespace android + +#endif // MIDI_IO_WRAPPER_H_ -- cgit v1.1