android_media_MediaCrypto.h revision 8240d9239d9aabed75c49f9d4d69fd8a5fe4c899
18240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber/* 28240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * Copyright 2012, The Android Open Source Project 38240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * 48240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 58240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * you may not use this file except in compliance with the License. 68240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * You may obtain a copy of the License at 78240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * 88240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 98240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * 108240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * Unless required by applicable law or agreed to in writing, software 118240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 128240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * See the License for the specific language governing permissions and 148240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber * limitations under the License. 158240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber */ 168240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 178240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber#ifndef _ANDROID_MEDIA_CRYPTO_H_ 188240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber#define _ANDROID_MEDIA_CRYPTO_H_ 198240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 208240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber#include "jni.h" 218240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 228240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber#include <media/stagefright/foundation/ABase.h> 238240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber#include <utils/Errors.h> 248240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber#include <utils/RefBase.h> 258240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 268240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Hubernamespace android { 278240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 288240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huberstruct ICrypto; 298240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 308240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huberstruct JCrypto : public RefBase { 318240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber static bool IsCryptoSchemeSupported(const uint8_t uuid[16]); 328240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 338240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber JCrypto(JNIEnv *env, jobject thiz, 348240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber const uint8_t uuid[16], const void *initData, size_t initSize); 358240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 368240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber status_t initCheck() const; 378240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 388240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber bool requiresSecureDecoderComponent(const char *mime) const; 398240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 408240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber static sp<ICrypto> GetCrypto(JNIEnv *env, jobject obj); 418240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 428240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huberprotected: 438240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber virtual ~JCrypto(); 448240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 458240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huberprivate: 468240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber jweak mObject; 478240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber sp<ICrypto> mCrypto; 488240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 498240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber static sp<ICrypto> MakeCrypto(); 508240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 518240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber static sp<ICrypto> MakeCrypto( 528240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber const uint8_t uuid[16], const void *initData, size_t initSize); 538240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 548240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(JCrypto); 558240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber}; 568240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 578240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber} // namespace android 588240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber 598240d9239d9aabed75c49f9d4d69fd8a5fe4c899Andreas Huber#endif // _ANDROID_MEDIA_CRYPTO_H_ 60