MediaWriter.h revision 37047fceba836f341d0108beed0991b0f8dfc543
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 { 302dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber MediaWriter() {} 312dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 322dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual status_t addSource(const sp<MediaSource> &source) = 0; 332dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual bool reachedEOS() = 0; 342dec2b5be2056c6d9428897dc672185872d30d17James Dong virtual status_t start(MetaData *params = NULL) = 0; 352dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual void stop() = 0; 36a7d1a2dd776bf356c228785a94ba8e0ff6a2ec7fJames Dong virtual void pause() = 0; 37d599cd4573b5a2d5914c5040e0565ef866749b77James Dong virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; } 38d599cd4573b5a2d5914c5040e0565ef866749b77James Dong virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; } 3937047fceba836f341d0108beed0991b0f8dfc543James Dong virtual void setListener(const sp<IMediaRecorderClient>& listener) { 40d599cd4573b5a2d5914c5040e0565ef866749b77James Dong mListener = listener; 41d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 422dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 432dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprotected: 442dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual ~MediaWriter() {} 45d599cd4573b5a2d5914c5040e0565ef866749b77James Dong int64_t mMaxFileSizeLimitBytes; 46d599cd4573b5a2d5914c5040e0565ef866749b77James Dong int64_t mMaxFileDurationLimitUs; 4737047fceba836f341d0108beed0991b0f8dfc543James Dong sp<IMediaRecorderClient> mListener; 48d599cd4573b5a2d5914c5040e0565ef866749b77James Dong 49d599cd4573b5a2d5914c5040e0565ef866749b77James Dong void notify(int msg, int ext1, int ext2) { 50d599cd4573b5a2d5914c5040e0565ef866749b77James Dong if (mListener != NULL) { 51d599cd4573b5a2d5914c5040e0565ef866749b77James Dong mListener->notify(msg, ext1, ext2); 52d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 53d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 542dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprivate: 552dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber MediaWriter(const MediaWriter &); 562dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber MediaWriter &operator=(const MediaWriter &); 572dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber}; 582dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 592dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber} // namespace android 602dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 612dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber#endif // MEDIA_WRITER_H_ 62