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
22e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include "media/stagefright/DataSource.h"
234bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
244bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Hubernamespace android {
254bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber
26e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass MidiIoWrapper : public RefBase {
27e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic:
28e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    MidiIoWrapper(const char *path);
29e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    MidiIoWrapper(int fd, off64_t offset, int64_t size);
30e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    MidiIoWrapper(const sp<DataSource> &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;
43e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    sp<DataSource> 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