Loading include/media/ICrypto.h +2 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ struct ICrypto : public IInterface { virtual bool requiresSecureDecoderComponent( const char *mime) const = 0; virtual void notifyResolution(uint32_t width, uint32_t height) = 0; virtual ssize_t decrypt( bool secure, const uint8_t key[16], Loading @@ -64,4 +66,3 @@ struct BnCrypto : public BnInterface<ICrypto> { } // namespace android #endif // ANDROID_ICRYPTO_H_ media/libmedia/ICrypto.cpp +21 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ enum { DESTROY_PLUGIN, REQUIRES_SECURE_COMPONENT, DECRYPT, NOTIFY_RESOLUTION, }; struct BpCrypto : public BpInterface<ICrypto> { Loading Loading @@ -149,6 +150,15 @@ struct BpCrypto : public BpInterface<ICrypto> { return result; } virtual void notifyResolution( uint32_t width, uint32_t height) { Parcel data, reply; data.writeInterfaceToken(ICrypto::getInterfaceDescriptor()); data.writeInt32(width); data.writeInt32(height); remote()->transact(NOTIFY_RESOLUTION, data, &reply); } private: DISALLOW_EVIL_CONSTRUCTORS(BpCrypto); }; Loading Loading @@ -290,10 +300,20 @@ status_t BnCrypto::onTransact( return OK; } case NOTIFY_RESOLUTION: { CHECK_INTERFACE(ICrypto, data, reply); int32_t width = data.readInt32(); int32_t height = data.readInt32(); notifyResolution(width, height); return OK; } default: return BBinder::onTransact(code, data, reply, flags); } } } // namespace android media/libmediaplayerservice/Crypto.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -257,4 +257,12 @@ ssize_t Crypto::decrypt( errorDetailMsg); } void Crypto::notifyResolution(uint32_t width, uint32_t height) { Mutex::Autolock autoLock(mLock); if (mInitCheck == OK && mPlugin != NULL) { mPlugin->notifyResolution(width, height); } } } // namespace android media/libmediaplayerservice/Crypto.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ struct Crypto : public BnCrypto { virtual bool requiresSecureDecoderComponent( const char *mime) const; virtual void notifyResolution(uint32_t width, uint32_t height); virtual ssize_t decrypt( bool secure, const uint8_t key[16], Loading media/libstagefright/MediaCodec.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -1011,6 +1011,16 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { mFlags |= kFlagOutputFormatChanged; postActivityNotificationIfPossible(); } // Notify mCrypto of video resolution changes if (mCrypto != NULL) { int32_t height, width; if (mOutputFormat->findInt32("height", &height) && mOutputFormat->findInt32("width", &width)) { mCrypto->notifyResolution(width, height); } } break; } Loading Loading
include/media/ICrypto.h +2 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ struct ICrypto : public IInterface { virtual bool requiresSecureDecoderComponent( const char *mime) const = 0; virtual void notifyResolution(uint32_t width, uint32_t height) = 0; virtual ssize_t decrypt( bool secure, const uint8_t key[16], Loading @@ -64,4 +66,3 @@ struct BnCrypto : public BnInterface<ICrypto> { } // namespace android #endif // ANDROID_ICRYPTO_H_
media/libmedia/ICrypto.cpp +21 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ enum { DESTROY_PLUGIN, REQUIRES_SECURE_COMPONENT, DECRYPT, NOTIFY_RESOLUTION, }; struct BpCrypto : public BpInterface<ICrypto> { Loading Loading @@ -149,6 +150,15 @@ struct BpCrypto : public BpInterface<ICrypto> { return result; } virtual void notifyResolution( uint32_t width, uint32_t height) { Parcel data, reply; data.writeInterfaceToken(ICrypto::getInterfaceDescriptor()); data.writeInt32(width); data.writeInt32(height); remote()->transact(NOTIFY_RESOLUTION, data, &reply); } private: DISALLOW_EVIL_CONSTRUCTORS(BpCrypto); }; Loading Loading @@ -290,10 +300,20 @@ status_t BnCrypto::onTransact( return OK; } case NOTIFY_RESOLUTION: { CHECK_INTERFACE(ICrypto, data, reply); int32_t width = data.readInt32(); int32_t height = data.readInt32(); notifyResolution(width, height); return OK; } default: return BBinder::onTransact(code, data, reply, flags); } } } // namespace android
media/libmediaplayerservice/Crypto.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -257,4 +257,12 @@ ssize_t Crypto::decrypt( errorDetailMsg); } void Crypto::notifyResolution(uint32_t width, uint32_t height) { Mutex::Autolock autoLock(mLock); if (mInitCheck == OK && mPlugin != NULL) { mPlugin->notifyResolution(width, height); } } } // namespace android
media/libmediaplayerservice/Crypto.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ struct Crypto : public BnCrypto { virtual bool requiresSecureDecoderComponent( const char *mime) const; virtual void notifyResolution(uint32_t width, uint32_t height); virtual ssize_t decrypt( bool secure, const uint8_t key[16], Loading
media/libstagefright/MediaCodec.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -1011,6 +1011,16 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { mFlags |= kFlagOutputFormatChanged; postActivityNotificationIfPossible(); } // Notify mCrypto of video resolution changes if (mCrypto != NULL) { int32_t height, width; if (mOutputFormat->findInt32("height", &height) && mOutputFormat->findInt32("width", &width)) { mCrypto->notifyResolution(width, height); } } break; } Loading