1334de520b0369215b7931fefa424fb92d295f0ebJames Dong/*
2334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Copyright (C) 2009 The Android Open Source Project
3334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
4334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Licensed under the Apache License, Version 2.0 (the "License");
5334de520b0369215b7931fefa424fb92d295f0ebJames Dong * you may not use this file except in compliance with the License.
6334de520b0369215b7931fefa424fb92d295f0ebJames Dong * You may obtain a copy of the License at
7334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
8334de520b0369215b7931fefa424fb92d295f0ebJames Dong *      http://www.apache.org/licenses/LICENSE-2.0
9334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
10334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Unless required by applicable law or agreed to in writing, software
11334de520b0369215b7931fefa424fb92d295f0ebJames Dong * distributed under the License is distributed on an "AS IS" BASIS,
12334de520b0369215b7931fefa424fb92d295f0ebJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13334de520b0369215b7931fefa424fb92d295f0ebJames Dong * See the License for the specific language governing permissions and
14334de520b0369215b7931fefa424fb92d295f0ebJames Dong * limitations under the License.
15334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
16334de520b0369215b7931fefa424fb92d295f0ebJames Dong
17334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_PLUGIN_BASE_H_
18334de520b0369215b7931fefa424fb92d295f0ebJames Dong
19334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_PLUGIN_BASE_H_
20334de520b0369215b7931fefa424fb92d295f0ebJames Dong
21334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <sys/types.h>
22334de520b0369215b7931fefa424fb92d295f0ebJames Dong
23334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <OMX_Component.h>
24334de520b0369215b7931fefa424fb92d295f0ebJames Dong
25334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <utils/String8.h>
26334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <utils/Vector.h>
27334de520b0369215b7931fefa424fb92d295f0ebJames Dong
28334de520b0369215b7931fefa424fb92d295f0ebJames Dongnamespace android {
29334de520b0369215b7931fefa424fb92d295f0ebJames Dong
30334de520b0369215b7931fefa424fb92d295f0ebJames Dongstruct OMXPluginBase {
31334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMXPluginBase() {}
32334de520b0369215b7931fefa424fb92d295f0ebJames Dong    virtual ~OMXPluginBase() {}
33334de520b0369215b7931fefa424fb92d295f0ebJames Dong
34334de520b0369215b7931fefa424fb92d295f0ebJames Dong    virtual OMX_ERRORTYPE makeComponentInstance(
35334de520b0369215b7931fefa424fb92d295f0ebJames Dong            const char *name,
36334de520b0369215b7931fefa424fb92d295f0ebJames Dong            const OMX_CALLBACKTYPE *callbacks,
37334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_PTR appData,
38334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_COMPONENTTYPE **component) = 0;
39334de520b0369215b7931fefa424fb92d295f0ebJames Dong
40334de520b0369215b7931fefa424fb92d295f0ebJames Dong    virtual OMX_ERRORTYPE destroyComponentInstance(
41334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_COMPONENTTYPE *component) = 0;
42334de520b0369215b7931fefa424fb92d295f0ebJames Dong
43334de520b0369215b7931fefa424fb92d295f0ebJames Dong    virtual OMX_ERRORTYPE enumerateComponents(
44334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_STRING name,
45334de520b0369215b7931fefa424fb92d295f0ebJames Dong            size_t size,
46334de520b0369215b7931fefa424fb92d295f0ebJames Dong            OMX_U32 index) = 0;
47334de520b0369215b7931fefa424fb92d295f0ebJames Dong
48334de520b0369215b7931fefa424fb92d295f0ebJames Dong    virtual OMX_ERRORTYPE getRolesOfComponent(
49334de520b0369215b7931fefa424fb92d295f0ebJames Dong            const char *name,
50334de520b0369215b7931fefa424fb92d295f0ebJames Dong            Vector<String8> *roles) = 0;
51334de520b0369215b7931fefa424fb92d295f0ebJames Dong
52334de520b0369215b7931fefa424fb92d295f0ebJames Dongprivate:
53334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMXPluginBase(const OMXPluginBase &);
54334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMXPluginBase &operator=(const OMXPluginBase &);
55334de520b0369215b7931fefa424fb92d295f0ebJames Dong};
56334de520b0369215b7931fefa424fb92d295f0ebJames Dong
57334de520b0369215b7931fefa424fb92d295f0ebJames Dong}  // namespace android
58334de520b0369215b7931fefa424fb92d295f0ebJames Dong
59334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif  // OMX_PLUGIN_BASE_H_
60