1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef MEDIA_WRITER_H_
18 
19 #define MEDIA_WRITER_H_
20 
21 #include <utils/RefBase.h>
22 #include <media/MediaSource.h>
23 #include <media/IMediaRecorderClient.h>
24 
25 namespace android {
26 
27 struct MediaWriter : public RefBase {
MediaWriterMediaWriter28     MediaWriter()
29         : mMaxFileSizeLimitBytes(0),
30           mMaxFileDurationLimitUs(0) {
31     }
32 
33     virtual status_t addSource(const sp<MediaSource> &source) = 0;
34     virtual bool reachedEOS() = 0;
35     virtual status_t start(MetaData *params = NULL) = 0;
36     virtual status_t stop() = 0;
37     virtual status_t pause() = 0;
38 
setMaxFileSizeMediaWriter39     virtual void setMaxFileSize(int64_t bytes) { mMaxFileSizeLimitBytes = bytes; }
setMaxFileDurationMediaWriter40     virtual void setMaxFileDuration(int64_t durationUs) { mMaxFileDurationLimitUs = durationUs; }
setListenerMediaWriter41     virtual void setListener(const sp<IMediaRecorderClient>& listener) {
42         mListener = listener;
43     }
44 
dumpMediaWriter45     virtual status_t dump(int /*fd*/, const Vector<String16>& /*args*/) {
46         return OK;
47     }
48 
setStartTimeOffsetMsMediaWriter49     virtual void setStartTimeOffsetMs(int /*ms*/) {}
getStartTimeOffsetMsMediaWriter50     virtual int32_t getStartTimeOffsetMs() const { return 0; }
setNextFdMediaWriter51     virtual status_t setNextFd(int /*fd*/) { return INVALID_OPERATION; }
52 
53 protected:
~MediaWriterMediaWriter54     virtual ~MediaWriter() {}
55     int64_t mMaxFileSizeLimitBytes;
56     int64_t mMaxFileDurationLimitUs;
57     sp<IMediaRecorderClient> mListener;
58 
notifyMediaWriter59     void notify(int msg, int ext1, int ext2) {
60         if (mListener != NULL) {
61             mListener->notify(msg, ext1, ext2);
62         }
63     }
64 private:
65     MediaWriter(const MediaWriter &);
66     MediaWriter &operator=(const MediaWriter &);
67 };
68 
69 }  // namespace android
70 
71 #endif  // MEDIA_WRITER_H_
72