android_media_MediaSync.h revision d80d6f6b056e23a8d017fe8f3900f6a88e27aa1b
1071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia/* 2071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * Copyright 2015, The Android Open Source Project 3071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * 4071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * Licensed under the Apache License, Version 2.0 (the "License"); 5071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * you may not use this file except in compliance with the License. 6071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * You may obtain a copy of the License at 7071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * 8071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * http://www.apache.org/licenses/LICENSE-2.0 9071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * 10071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * Unless required by applicable law or agreed to in writing, software 11071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * distributed under the License is distributed on an "AS IS" BASIS, 12071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * See the License for the specific language governing permissions and 14071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia * limitations under the License. 15071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia */ 16071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 17071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia#ifndef _ANDROID_MEDIA_MEDIASYNC_H_ 18071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia#define _ANDROID_MEDIA_MEDIASYNC_H_ 19071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 20071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia#include <media/stagefright/foundation/ABase.h> 2105ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar#include <media/stagefright/MediaSync.h> 22071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia#include <utils/Errors.h> 23071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia#include <utils/RefBase.h> 24071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 25071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jianamespace android { 26071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 2705ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnarstruct AudioPlaybackRate; 28071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jiaclass AudioTrack; 29071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jiastruct IGraphicBufferProducer; 30217ec0adfc35302a6cc6b04bc78bf8fd82ffc8a5Wei Jiastruct MediaClock; 31071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jiaclass MediaSync; 32071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 33071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jiastruct JMediaSync : public RefBase { 34071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia JMediaSync(); 35071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 36d80d6f6b056e23a8d017fe8f3900f6a88e27aa1bWei Jia status_t setSurface(const sp<IGraphicBufferProducer> &bufferProducer); 37d80d6f6b056e23a8d017fe8f3900f6a88e27aa1bWei Jia status_t setAudioTrack(const sp<AudioTrack> &audioTrack); 38071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 39071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia status_t createInputSurface(sp<IGraphicBufferProducer>* bufferProducer); 40071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 41071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia status_t updateQueuedAudioData(int sizeInBytes, int64_t presentationTimeUs); 42071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 4325b802d47249702b9e5d175b3e7144934b67553dWei Jia status_t getPlayTimeForPendingAudioFrames(int64_t *outTimeUs); 4425b802d47249702b9e5d175b3e7144934b67553dWei Jia 4505ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar status_t setPlaybackSettings(const AudioPlaybackRate& rate); 4605ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar void getPlaybackSettings(AudioPlaybackRate* rate /* nonnull */); 4705ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar status_t setSyncSettings(const AVSyncSettings& syncSettings); 4805ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar void getSyncSettings(AVSyncSettings* syncSettings /* nonnull */); 4905ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar status_t setVideoFrameRateHint(float rate); 5005ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar float getVideoFrameRate(); 5105ebffe6bf6cdacc6de4b3bbf480c31869a81661Lajos Molnar 52217ec0adfc35302a6cc6b04bc78bf8fd82ffc8a5Wei Jia sp<const MediaClock> getMediaClock(); 53217ec0adfc35302a6cc6b04bc78bf8fd82ffc8a5Wei Jia 54071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jiaprotected: 55071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia virtual ~JMediaSync(); 56071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 57071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jiaprivate: 58071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia sp<MediaSync> mSync; 59071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 60071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia DISALLOW_EVIL_CONSTRUCTORS(JMediaSync); 61071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia}; 62071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 63071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia} // namespace android 64071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia 65071a8b71d1212e218a3ebf7dbb8908a4acf5cf6dWei Jia#endif // _ANDROID_MEDIA_MEDIASYNC_H_ 66