IAudioRecord.h revision 89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5
1d9e397b599b13d642138480a28c14db7a136bf0Adam Langley/*
2d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Copyright (C) 2007 The Android Open Source Project
3d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
4d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Licensed under the Apache License, Version 2.0 (the "License");
5d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * you may not use this file except in compliance with the License.
6d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * You may obtain a copy of the License at
7d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
8d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *      http://www.apache.org/licenses/LICENSE-2.0
9d9e397b599b13d642138480a28c14db7a136bf0Adam Langley *
10d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * Unless required by applicable law or agreed to in writing, software
11d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * distributed under the License is distributed on an "AS IS" BASIS,
12d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * See the License for the specific language governing permissions and
14d9e397b599b13d642138480a28c14db7a136bf0Adam Langley * limitations under the License.
15d9e397b599b13d642138480a28c14db7a136bf0Adam Langley */
16d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
17d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#ifndef IAUDIORECORD_H_
18d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#define IAUDIORECORD_H_
19d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
20d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#include <stdint.h>
21d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#include <sys/types.h>
22d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
23d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#include <utils/RefBase.h>
24d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#include <utils/Errors.h>
25d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#include <utils/IInterface.h>
26d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#include <utils/IMemory.h>
27d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
28d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
29d9e397b599b13d642138480a28c14db7a136bf0Adam Langleynamespace android {
30d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
31d9e397b599b13d642138480a28c14db7a136bf0Adam Langley// ----------------------------------------------------------------------------
32d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
33d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyclass IAudioRecord : public IInterface
34d9e397b599b13d642138480a28c14db7a136bf0Adam Langley{
35d9e397b599b13d642138480a28c14db7a136bf0Adam Langleypublic:
36d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    DECLARE_META_INTERFACE(AudioRecord);
37d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
38d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    /* After it's created the track is not active. Call start() to
39d9e397b599b13d642138480a28c14db7a136bf0Adam Langley     * make it active. If set, the callback will start being called.
40d9e397b599b13d642138480a28c14db7a136bf0Adam Langley     */
41d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    virtual status_t    start() = 0;
42d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
43d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    /* Stop a track. If set, the callback will cease being called and
44d9e397b599b13d642138480a28c14db7a136bf0Adam Langley     * obtainBuffer will return an error. Buffers that are already released
45d9e397b599b13d642138480a28c14db7a136bf0Adam Langley     * will be processed, unless flush() is called.
46d9e397b599b13d642138480a28c14db7a136bf0Adam Langley     */
47d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    virtual void        stop() = 0;
48d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
49d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    /* get this tracks control block */
50d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    virtual sp<IMemory> getCblk() const = 0;
51d9e397b599b13d642138480a28c14db7a136bf0Adam Langley};
52d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
53d9e397b599b13d642138480a28c14db7a136bf0Adam Langley// ----------------------------------------------------------------------------
54d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
55d9e397b599b13d642138480a28c14db7a136bf0Adam Langleyclass BnAudioRecord : public BnInterface<IAudioRecord>
56d9e397b599b13d642138480a28c14db7a136bf0Adam Langley{
57d9e397b599b13d642138480a28c14db7a136bf0Adam Langleypublic:
58d9e397b599b13d642138480a28c14db7a136bf0Adam Langley    virtual status_t    onTransact( uint32_t code,
59d9e397b599b13d642138480a28c14db7a136bf0Adam Langley                                    const Parcel& data,
60d9e397b599b13d642138480a28c14db7a136bf0Adam Langley                                    Parcel* reply,
61d9e397b599b13d642138480a28c14db7a136bf0Adam Langley                                    uint32_t flags = 0);
62d9e397b599b13d642138480a28c14db7a136bf0Adam Langley};
63d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
64d9e397b599b13d642138480a28c14db7a136bf0Adam Langley// ----------------------------------------------------------------------------
65d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
66d9e397b599b13d642138480a28c14db7a136bf0Adam Langley}; // namespace android
67d9e397b599b13d642138480a28c14db7a136bf0Adam Langley
68d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif /*IAUDIORECORD_H_*/
69d9e397b599b13d642138480a28c14db7a136bf0Adam Langley