1ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber/*
2ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * Copyright (C) 2012 The Android Open Source Project
3ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber *
4ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * you may not use this file except in compliance with the License.
6ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * You may obtain a copy of the License at
7ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber *
8ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber *
10ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * Unless required by applicable law or agreed to in writing, software
11ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * See the License for the specific language governing permissions and
14ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber * limitations under the License.
15ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber */
16ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
17ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber#ifndef SOFT_RAW_H_
18ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
19ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber#define SOFT_RAW_H_
20ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
21ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber#include "SimpleSoftOMXComponent.h"
22ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
23ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huberstruct tPVMP4AudioDecoderExternal;
24ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
25ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Hubernamespace android {
26ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
27ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huberstruct SoftRaw : public SimpleSoftOMXComponent {
28ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    SoftRaw(const char *name,
29ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber            const OMX_CALLBACKTYPE *callbacks,
30ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber            OMX_PTR appData,
31ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber            OMX_COMPONENTTYPE **component);
32ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
33ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huberprotected:
34ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    virtual ~SoftRaw();
35ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
36ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    virtual OMX_ERRORTYPE internalGetParameter(
37ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber            OMX_INDEXTYPE index, OMX_PTR params);
38ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
39ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    virtual OMX_ERRORTYPE internalSetParameter(
40ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber            OMX_INDEXTYPE index, const OMX_PTR params);
41ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
42ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    virtual void onQueueFilled(OMX_U32 portIndex);
43ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
44ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huberprivate:
45ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    enum {
46ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber        kNumBuffers = 4
47ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    };
48ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
49ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    bool mSignalledError;
50ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
51ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    int32_t mChannelCount;
52ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    int32_t mSampleRate;
53ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
54ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    void initPorts();
55ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    status_t initDecoder();
56ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
57ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(SoftRaw);
58ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber};
59ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
60ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber}  // namespace android
61ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber
62ecdd39c5af016e2fa57cbfd837aa670b706dabd3Andreas Huber#endif  // SOFT_RAW_H_
63