MediaWriter.h revision 19c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bb
12dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber/* 22dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * Copyright (C) 2010 The Android Open Source Project 32dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * 42dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 52dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * you may not use this file except in compliance with the License. 62dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * You may obtain a copy of the License at 72dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * 82dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 92dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * 102dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * Unless required by applicable law or agreed to in writing, software 112dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 122dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * See the License for the specific language governing permissions and 142dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber * limitations under the License. 152dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber */ 162dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 172dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber#ifndef MEDIA_WRITER_H_ 182dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 192dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber#define MEDIA_WRITER_H_ 202dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 212dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber#include <utils/RefBase.h> 2237047fceba836f341d0108beed0991b0f8dfc543James Dong#include <media/IMediaRecorderClient.h> 232dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 242dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Hubernamespace android { 252dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 262dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberstruct MediaSource; 272dec2b5be2056c6d9428897dc672185872d30d17James Dongstruct MetaData; 282dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 292dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberstruct MediaWriter : public RefBase { 3019c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bbAndreas Huber MediaWriter() 3119c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bbAndreas Huber : mMaxFileSizeLimitBytes(0), 3219c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bbAndreas Huber mMaxFileDurationLimitUs(0) { 3319c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bbAndreas Huber } 342dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 352dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual status_t addSource(const sp<MediaSource> &source) = 0; 362dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual bool reachedEOS() = 0; 372dec2b5be2056c6d9428897dc672185872d30d17James Dong virtual status_t start(MetaData *params = NULL) = 0; 382dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual void stop() = 0; 39a7d1a2dd776bf356c228785a94ba8e0ff6a2ec7fJames Dong virtual void pause() = 0; 40d599cd4573b5a2d5914c5040e0565ef866749b77James Dong virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; } 41d599cd4573b5a2d5914c5040e0565ef866749b77James Dong virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; } 4237047fceba836f341d0108beed0991b0f8dfc543James Dong virtual void setListener(const sp<IMediaRecorderClient>& listener) { 43d599cd4573b5a2d5914c5040e0565ef866749b77James Dong mListener = listener; 44d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 452dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 462dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprotected: 472dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual ~MediaWriter() {} 48d599cd4573b5a2d5914c5040e0565ef866749b77James Dong int64_t mMaxFileSizeLimitBytes; 49d599cd4573b5a2d5914c5040e0565ef866749b77James Dong int64_t mMaxFileDurationLimitUs; 5037047fceba836f341d0108beed0991b0f8dfc543James Dong sp<IMediaRecorderClient> mListener; 51d599cd4573b5a2d5914c5040e0565ef866749b77James Dong 52d599cd4573b5a2d5914c5040e0565ef866749b77James Dong void notify(int msg, int ext1, int ext2) { 53d599cd4573b5a2d5914c5040e0565ef866749b77James Dong if (mListener != NULL) { 54d599cd4573b5a2d5914c5040e0565ef866749b77James Dong mListener->notify(msg, ext1, ext2); 55d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 56d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 572dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprivate: 582dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber MediaWriter(const MediaWriter &); 592dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber MediaWriter &operator=(const MediaWriter &); 602dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber}; 612dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 622dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber} // namespace android 632dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 642dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber#endif // MEDIA_WRITER_H_ 65