AMRWriter.h revision e7c9cb48fec02697227bd847cd2e69432659adfd
1e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber/* 2e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * Copyright (C) 2010 The Android Open Source Project 3e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * 4e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * you may not use this file except in compliance with the License. 6e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * You may obtain a copy of the License at 7e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * 8e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * 10e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * Unless required by applicable law or agreed to in writing, software 11e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * See the License for the specific language governing permissions and 14e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber * limitations under the License. 15e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber */ 16e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 17e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber#ifndef AMR_WRITER_H_ 18e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 19e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber#define AMR_WRITER_H_ 20e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 21e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber#include <stdio.h> 22e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 23e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber#include <utils/RefBase.h> 24e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber#include <utils/threads.h> 25e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 26e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Hubernamespace android { 27e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 28e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huberstruct MediaSource; 29e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 30e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huberstruct AMRWriter : public RefBase { 31e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber AMRWriter(const char *filename); 32e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber AMRWriter(int fd); 33e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 34e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber status_t initCheck() const; 35e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 36e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber status_t addSource(const sp<MediaSource> &source); 37e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 38e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber status_t start(); 39e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber void stop(); 40e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 41e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huberprotected: 42e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber virtual ~AMRWriter(); 43e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 44e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huberprivate: 45e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber Mutex mLock; 46e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 47e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber FILE *mFile; 48e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber status_t mInitCheck; 49e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber sp<MediaSource> mSource; 50e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber bool mStarted; 51e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber volatile bool mDone; 52e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber pthread_t mThread; 53e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 54e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber static void *ThreadWrapper(void *); 55e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber void threadFunc(); 56e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 57e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber AMRWriter(const AMRWriter &); 58e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber AMRWriter &operator=(const AMRWriter &); 59e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber}; 60e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 61e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber} // namespace android 62e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber 63e7c9cb48fec02697227bd847cd2e69432659adfdAndreas Huber#endif // AMR_WRITER_H_ 64