AudioStreamRecord.h revision e1ce491a25faf06fdeab00dd938515f71f28b095
1e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk/* 2e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * Copyright 2016 The Android Open Source Project 3e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * 4e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * Licensed under the Apache License, Version 2.0 (the "License"); 5e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * you may not use this file except in compliance with the License. 6e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * You may obtain a copy of the License at 7e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * 8e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * http://www.apache.org/licenses/LICENSE-2.0 9e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * 10e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * Unless required by applicable law or agreed to in writing, software 11e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * distributed under the License is distributed on an "AS IS" BASIS, 12e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * See the License for the specific language governing permissions and 14e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * limitations under the License. 15e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk */ 16e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 17e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#ifndef LEGACY_AUDIOSTREAMRECORD_H 18e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#define LEGACY_AUDIOSTREAMRECORD_H 19e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 20e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#include <media/AudioRecord.h> 21e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#include <oboe/OboeAudio.h> 22e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 23e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#include "AudioStreamBuilder.h" 24e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#include "AudioStream.h" 25e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#include "OboeLegacy.h" 26e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 27e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burknamespace oboe { 28e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 29e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk/** 30e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * Internal stream that uses the legacy AudioTrack path. 31e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk */ 32e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkclass AudioStreamRecord : public AudioStream { 33e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkpublic: 34e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk AudioStreamRecord(); 35e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 36e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual ~AudioStreamRecord(); 37e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 38e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t open(const AudioStreamBuilder & builder) override; 39e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t close() override; 40e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 41e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t requestStart() override; 42e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t requestPause() override; 43e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t requestFlush() override; 44e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t requestStop() override; 45e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 46e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t getTimestamp(clockid_t clockId, 47e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk oboe_position_frames_t *framePosition, 48e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk oboe_nanoseconds_t *timeNanoseconds) override { 49e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk return OBOE_ERROR_UNIMPLEMENTED; // TODO 50e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk } 51e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 52e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t read(void *buffer, 53e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk oboe_size_frames_t numFrames, 54e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk oboe_nanoseconds_t timeoutNanoseconds) override; 55e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 56e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t setBufferSize(oboe_size_frames_t requestedFrames, 57e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk oboe_size_frames_t *actualFrames) override; 58e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 59e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_size_frames_t getBufferSize() const override; 60e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 61e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_size_frames_t getBufferCapacity() const override; 62e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 63e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual int32_t getXRunCount() const override; 64e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 65e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_size_frames_t getFramesPerBurst() const override; 66e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 67e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk virtual oboe_result_t updateState() override; 68e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 69e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkprivate: 70e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk android::sp<android::AudioRecord> mAudioRecord; 71e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk // TODO add 64-bit position reporting to AudioRecord and use it. 72e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk oboe_wrapping_frames_t mPositionWhenStarting = 0; 73e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk android::String16 mOpPackageName; 74e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk}; 75e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 76e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk} /* namespace oboe */ 77e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk 78e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk#endif /* LEGACY_AUDIOSTREAMRECORD_H */ 79