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