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