1744f5739019d1fd917f981e740b353c3d73fd1a8David Smith/*
2744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * Copyright (C) 2014 The Android Open Source Project
3744f5739019d1fd917f981e740b353c3d73fd1a8David Smith *
4744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * Licensed under the Apache License, Version 2.0 (the "License");
5744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * you may not use this file except in compliance with the License.
6744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * You may obtain a copy of the License at
7744f5739019d1fd917f981e740b353c3d73fd1a8David Smith *
8744f5739019d1fd917f981e740b353c3d73fd1a8David Smith *      http://www.apache.org/licenses/LICENSE-2.0
9744f5739019d1fd917f981e740b353c3d73fd1a8David Smith *
10744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * Unless required by applicable law or agreed to in writing, software
11744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * distributed under the License is distributed on an "AS IS" BASIS,
12744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * See the License for the specific language governing permissions and
14744f5739019d1fd917f981e740b353c3d73fd1a8David Smith * limitations under the License.
15744f5739019d1fd917f981e740b353c3d73fd1a8David Smith */
16744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
17744f5739019d1fd917f981e740b353c3d73fd1a8David Smith#ifndef SIMPLE_FILTER_H_
18744f5739019d1fd917f981e740b353c3d73fd1a8David Smith#define SIMPLE_FILTER_H_
19744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
20744f5739019d1fd917f981e740b353c3d73fd1a8David Smith#include <stdint.h>
21744f5739019d1fd917f981e740b353c3d73fd1a8David Smith#include <utils/Errors.h>
22744f5739019d1fd917f981e740b353c3d73fd1a8David Smith#include <utils/RefBase.h>
23744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
24744f5739019d1fd917f981e740b353c3d73fd1a8David Smithnamespace android {
25744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
267e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimstruct AMessage;
277e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kimclass MediaCodecBuffer;
287e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim
29744f5739019d1fd917f981e740b353c3d73fd1a8David Smithstruct SimpleFilter : public RefBase {
30744f5739019d1fd917f981e740b353c3d73fd1a8David Smithpublic:
31744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    SimpleFilter() : mWidth(0), mHeight(0), mStride(0), mSliceHeight(0),
32744f5739019d1fd917f981e740b353c3d73fd1a8David Smith            mColorFormatIn(0), mColorFormatOut(0) {};
33744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
346dad9ad21ff547fab7f192956e4a3732fd78488bDavid Smith    virtual status_t configure(const sp<AMessage> &msg);
35744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
36744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    virtual status_t start() = 0;
37744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    virtual void reset() = 0;
38744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    virtual status_t setParameters(const sp<AMessage> &msg) = 0;
39744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    virtual status_t processBuffers(
407e34bf5af26f8752d4786d3098740cdf51e2438fWonsik Kim            const sp<MediaCodecBuffer> &srcBuffer, const sp<MediaCodecBuffer> &outBuffer) = 0;
41744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
42744f5739019d1fd917f981e740b353c3d73fd1a8David Smithprotected:
43744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    int32_t mWidth, mHeight;
44744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    int32_t mStride, mSliceHeight;
45744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    int32_t mColorFormatIn, mColorFormatOut;
46744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
47744f5739019d1fd917f981e740b353c3d73fd1a8David Smith    virtual ~SimpleFilter() {};
48744f5739019d1fd917f981e740b353c3d73fd1a8David Smith};
49744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
50744f5739019d1fd917f981e740b353c3d73fd1a8David Smith}   // namespace android
51744f5739019d1fd917f981e740b353c3d73fd1a8David Smith
52744f5739019d1fd917f981e740b353c3d73fd1a8David Smith#endif  // SIMPLE_FILTER_H_
53