MediaWriter.h revision 37047fceba836f341d0108beed0991b0f8dfc543
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2010 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef MEDIA_WRITER_H_ 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define MEDIA_WRITER_H_ 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 214df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project#include <utils/RefBase.h> 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <media/IMediaRecorderClient.h> 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace android { 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26ab751aa085433e9f735d2e7603459c6c7e9d2fb0satokstruct MediaSource; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct MetaData; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct MediaWriter : public RefBase { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaWriter() {} 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t addSource(const sp<MediaSource> &source) = 0; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual bool reachedEOS() = 0; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual status_t start(MetaData *params = NULL) = 0; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void stop() = 0; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void pause() = 0; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; } 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; } 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void setListener(const sp<IMediaRecorderClient>& listener) { 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mListener = listener; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprotected: 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~MediaWriter() {} 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int64_t mMaxFileSizeLimitBytes; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int64_t mMaxFileDurationLimitUs; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sp<IMediaRecorderClient> mListener; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void notify(int msg, int ext1, int ext2) { 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mListener != NULL) { 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mListener->notify(msg, ext1, ext2); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 534df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project } 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 554df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project MediaWriter(const MediaWriter &); 56ab751aa085433e9f735d2e7603459c6c7e9d2fb0satok MediaWriter &operator=(const MediaWriter &); 57ab751aa085433e9f735d2e7603459c6c7e9d2fb0satok}; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 59} // namespace android 60 61#endif // MEDIA_WRITER_H_ 62