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; 3837187916a486504acaf83bea30147eb5fbf46ae5James Dong virtual status_t stop() = 0; 3937187916a486504acaf83bea30147eb5fbf46ae5James Dong virtual status_t pause() = 0; 4037187916a486504acaf83bea30147eb5fbf46ae5James Dong 41d599cd4573b5a2d5914c5040e0565ef866749b77James Dong virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; } 42d599cd4573b5a2d5914c5040e0565ef866749b77James Dong virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; } 4337047fceba836f341d0108beed0991b0f8dfc543James Dong virtual void setListener(const sp<IMediaRecorderClient>& listener) { 44d599cd4573b5a2d5914c5040e0565ef866749b77James Dong mListener = listener; 45d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 462dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 47dedf414d3fe2e79ee0aad0f1c82ca16ebd886ff6James Dong virtual status_t dump(int fd, const Vector<String16>& args) { 48dedf414d3fe2e79ee0aad0f1c82ca16ebd886ff6James Dong return OK; 49dedf414d3fe2e79ee0aad0f1c82ca16ebd886ff6James Dong } 50dedf414d3fe2e79ee0aad0f1c82ca16ebd886ff6James Dong 51d8cf55d878edddfc36bb821a95b88dfb2453c2c3Robert Shih virtual void setStartTimeOffsetMs(int ms) {} 52d8cf55d878edddfc36bb821a95b88dfb2453c2c3Robert Shih virtual int32_t getStartTimeOffsetMs() const { return 0; } 53d8cf55d878edddfc36bb821a95b88dfb2453c2c3Robert Shih 542dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprotected: 552dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber virtual ~MediaWriter() {} 56d599cd4573b5a2d5914c5040e0565ef866749b77James Dong int64_t mMaxFileSizeLimitBytes; 57d599cd4573b5a2d5914c5040e0565ef866749b77James Dong int64_t mMaxFileDurationLimitUs; 5837047fceba836f341d0108beed0991b0f8dfc543James Dong sp<IMediaRecorderClient> mListener; 59d599cd4573b5a2d5914c5040e0565ef866749b77James Dong 60d599cd4573b5a2d5914c5040e0565ef866749b77James Dong void notify(int msg, int ext1, int ext2) { 61d599cd4573b5a2d5914c5040e0565ef866749b77James Dong if (mListener != NULL) { 62d599cd4573b5a2d5914c5040e0565ef866749b77James Dong mListener->notify(msg, ext1, ext2); 63d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 64d599cd4573b5a2d5914c5040e0565ef866749b77James Dong } 652dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprivate: 662dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber MediaWriter(const MediaWriter &); 672dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber MediaWriter &operator=(const MediaWriter &); 682dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber}; 692dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 702dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber} // namespace android 712dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber 722dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber#endif // MEDIA_WRITER_H_ 73