blob: 2f76051ca51479cd54aa0dc98dd89e82494ba28c [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* INTEL CONFIDENTIAL
* Copyright 2010-2011 Intel Corporation All Rights Reserved.
* The source code, information and material ("Material") contained herein is owned
* by Intel Corporation or its suppliers or licensors, and title to such Material
* remains with Intel Corporation or its suppliers or licensors. The Material contains
* proprietary information of Intel or its suppliers and licensors. The Material is
* protected by worldwide copyright laws and treaty provisions. No part of the Material
* may be used, copied, reproduced, modified, published, uploaded, posted, transmitted,
* distributed or disclosed in any way without Intel's prior express written permission.
* No license under any patent, copyright or other intellectual property rights in the
* Material is granted to or conferred upon you, either expressly, by implication, inducement,
* estoppel or otherwise. Any license under such intellectual property rights must be express
* and approved by Intel in writing.
* Unless otherwise agreed by Intel in writing, you may not remove or alter this notice or any
* other notice embedded in Materials by Intel or Intel's suppliers or licensors in any way.
*/
#ifndef INTELVIDEOEDITORENCODERSOURCE_H
#define INTELVIDEOEDITORENCODERSOURCE_H
#include <media/stagefright/MediaSource.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/MediaBufferGroup.h>
namespace android {
struct IntelVideoEditorEncoderSource : public MediaSource {
public:
static sp<IntelVideoEditorEncoderSource> Create(
const sp<MetaData> &format);
virtual status_t start(MetaData *params = NULL);
virtual status_t stop();
virtual sp<MetaData> getFormat();
virtual status_t read(MediaBuffer **buffer,
const ReadOptions *options = NULL);
virtual int32_t storeBuffer(MediaBuffer *buffer);
virtual int32_t requestBuffer(MediaBuffer **buffer);
protected:
virtual ~IntelVideoEditorEncoderSource();
private:
status_t getSharedBuffers();
MediaBufferGroup* mGroup;
bool mUseSharedBuffers;
struct MediaBufferChain {
MediaBuffer* buffer;
MediaBufferChain* nextLink;
};
enum State {
CREATED,
STARTED,
ERROR
};
IntelVideoEditorEncoderSource(const sp<MetaData> &format);
// Don't call me
IntelVideoEditorEncoderSource(const IntelVideoEditorEncoderSource &);
IntelVideoEditorEncoderSource &operator=(
const IntelVideoEditorEncoderSource &);
MediaBufferChain* mFirstBufferLink;
MediaBufferChain* mLastBufferLink;
int32_t mNbBuffer;
bool mIsEOS;
State mState;
sp<MetaData> mEncFormat;
Mutex mLock;
Condition mBufferCond;
};
}
#endif