14bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber/*
24bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * Copyright (C) 2014 The Android Open Source Project
34bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber *
44bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
54bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * you may not use this file except in compliance with the License.
64bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * You may obtain a copy of the License at
74bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber *
84bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
94bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber *
104bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * Unless required by applicable law or agreed to in writing, software
114bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
124bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * See the License for the specific language governing permissions and
144bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * limitations under the License.
154bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber */
164bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
17e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#ifndef MIDI_IO_WRAPPER_H_
18e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#define MIDI_IO_WRAPPER_H_
194bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
20e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <libsonivox/eas_types.h>
214bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
222a243f08193fe9ff1afe018e9953f01c44ced9deMarco Nelissen#include <media/DataSourceBase.h>
234bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
244bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Hubernamespace android {
254bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
263d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissenclass MidiIoWrapper {
27e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic:
283d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen    explicit MidiIoWrapper(const char *path);
293d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen    explicit MidiIoWrapper(int fd, off64_t offset, int64_t size);
303d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen    explicit MidiIoWrapper(DataSourceBase *source);
314bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
32e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    ~MidiIoWrapper();
334bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
34e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    int readAt(void *buffer, int offset, int size);
35e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    int size();
364bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
37e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    EAS_FILE_LOCATOR getLocator();
384bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
394bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huberprivate:
40e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    int mFd;
41e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    off64_t mBase;
42e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    int64_t  mLength;
432a243f08193fe9ff1afe018e9953f01c44ced9deMarco Nelissen    DataSourceBase *mDataSource;
44e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    EAS_FILE mEasFile;
454bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber};
464bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
474bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
48e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}  // namespace android
494bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
50e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#endif // MIDI_IO_WRAPPER_H_
51