1050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen/*
2050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Copyright (C) 2014 The Android Open Source Project
3050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen *
4050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Licensed under the Apache License, Version 2.0 (the "License");
5050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * you may not use this file except in compliance with the License.
6050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * You may obtain a copy of the License at
7050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen *
8050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen *      http://www.apache.org/licenses/LICENSE-2.0
9050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen *
10050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Unless required by applicable law or agreed to in writing, software
11050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * distributed under the License is distributed on an "AS IS" BASIS,
12050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * See the License for the specific language governing permissions and
14050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * limitations under the License.
15050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen */
16050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
17050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
18050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen/*
19050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * This file defines an NDK API.
20050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Do not remove methods.
21050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Do not change method signatures.
22050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Do not change the value of constants.
23050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Do not change the size of any of the classes defined in here.
24050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Do not reference types that are not part of the NDK.
25050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen * Do not #include files that aren't part of the NDK.
26050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen */
27050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
28050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#ifndef _NDK_MEDIA_CRYPTO_H
29050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#define _NDK_MEDIA_CRYPTO_H
30050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
31050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#include <sys/types.h>
3279e2b622702fb148ccff12d6f38643466555c4ebMarco Nelissen#include <stdbool.h>
33050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
34050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#ifdef __cplusplus
35050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissenextern "C" {
36050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#endif
37050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
38050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissenstruct AMediaCrypto;
39050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissentypedef struct AMediaCrypto AMediaCrypto;
40050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
41050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissentypedef uint8_t AMediaUUID[16];
42050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
43829e097f832b4c4c41733f9b77121888204d993eMarco Nelissenbool AMediaCrypto_isCryptoSchemeSupported(const AMediaUUID uuid);
44050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
45050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissenbool AMediaCrypto_requiresSecureDecoderComponent(const char *mime);
46050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
47050eb3280d7305b84f723d515be2dc9606dc39d1Marco NelissenAMediaCrypto* AMediaCrypto_new(const AMediaUUID uuid, const void *initData, size_t initDataSize);
48050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
49050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissenvoid AMediaCrypto_delete(AMediaCrypto* crypto);
50050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
51050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
52050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#ifdef __cplusplus
53050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen} // extern "C"
54050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#endif
55050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen
56050eb3280d7305b84f723d515be2dc9606dc39d1Marco Nelissen#endif // _NDK_MEDIA_CRYPTO_H
57