MediaWriter.h revision d599cd4573b5a2d5914c5040e0565ef866749b77
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>
22d599cd4573b5a2d5914c5040e0565ef866749b77James Dong#include <media/IMediaPlayerClient.h>
232dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber
242dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Hubernamespace android {
252dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber
262dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberstruct MediaSource;
272dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber
282dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberstruct MediaWriter : public RefBase {
292dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    MediaWriter() {}
302dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber
312dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    virtual status_t addSource(const sp<MediaSource> &source) = 0;
322dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    virtual bool reachedEOS() = 0;
332dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    virtual status_t start() = 0;
342dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    virtual void stop() = 0;
35d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; }
36d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; }
37d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    virtual void setListener(const sp<IMediaPlayerClient>& listener) {
38d599cd4573b5a2d5914c5040e0565ef866749b77James Dong        mListener = listener;
39d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    }
402dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber
412dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprotected:
422dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    virtual ~MediaWriter() {}
43d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    int64_t mMaxFileSizeLimitBytes;
44d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    int64_t mMaxFileDurationLimitUs;
45d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    sp<IMediaPlayerClient> mListener;
46d599cd4573b5a2d5914c5040e0565ef866749b77James Dong
47d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    void notify(int msg, int ext1, int ext2) {
48d599cd4573b5a2d5914c5040e0565ef866749b77James Dong        if (mListener != NULL) {
49d599cd4573b5a2d5914c5040e0565ef866749b77James Dong            mListener->notify(msg, ext1, ext2);
50d599cd4573b5a2d5914c5040e0565ef866749b77James Dong        }
51d599cd4573b5a2d5914c5040e0565ef866749b77James Dong    }
522dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huberprivate:
532dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    MediaWriter(const MediaWriter &);
542dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber    MediaWriter &operator=(const MediaWriter &);
552dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber};
562dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber
572dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber}  // namespace android
582dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber
592dce41ad26cb3e9e15c9e456a84bcf5309548ca0Andreas Huber#endif  // MEDIA_WRITER_H_
60