108b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen/*
208b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * Copyright (C) 2014 The Android Open Source Project
308b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen *
408b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * Licensed under the Apache License, Version 2.0 (the "License");
508b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * you may not use this file except in compliance with the License.
608b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * You may obtain a copy of the License at
708b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen *
808b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen *      http://www.apache.org/licenses/LICENSE-2.0
908b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen *
1008b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * Unless required by applicable law or agreed to in writing, software
1108b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * distributed under the License is distributed on an "AS IS" BASIS,
1208b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1308b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * See the License for the specific language governing permissions and
1408b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen * limitations under the License.
1508b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen */
1608b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
1708b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen#ifndef MIDI_IO_WRAPPER_H_
1808b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen#define MIDI_IO_WRAPPER_H_
1908b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
2008b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen#include <libsonivox/eas_types.h>
2108b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
22faf4efc6a41e88adf85f76f48f020a6d681f5ff1Marco Nelissen#include "media/stagefright/DataSource.h"
23faf4efc6a41e88adf85f76f48f020a6d681f5ff1Marco Nelissen
2408b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissennamespace android {
2508b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
2608b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissenclass MidiIoWrapper : public RefBase {
2708b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissenpublic:
2808b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    MidiIoWrapper(const char *path);
2908b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    MidiIoWrapper(int fd, off64_t offset, int64_t size);
30faf4efc6a41e88adf85f76f48f020a6d681f5ff1Marco Nelissen    MidiIoWrapper(const sp<DataSource> &source);
3108b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
3208b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    ~MidiIoWrapper();
3308b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
3408b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    int readAt(void *buffer, int offset, int size);
3508b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    int size();
3608b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
3708b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    EAS_FILE_LOCATOR getLocator();
3808b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
3908b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissenprivate:
4008b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    int mFd;
4108b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    off64_t mBase;
4208b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    int64_t  mLength;
43faf4efc6a41e88adf85f76f48f020a6d681f5ff1Marco Nelissen    sp<DataSource> mDataSource;
4408b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen    EAS_FILE mEasFile;
4508b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen};
4608b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
4708b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
4808b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen}  // namespace android
4908b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen
5008b9e2d113213c37506a416bc95a36789bcab4caMarco Nelissen#endif // MIDI_IO_WRAPPER_H_
51