diff options
author | Andreas Huber <andih@google.com> | 2012-09-26 12:54:26 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2012-09-26 12:54:26 -0700 |
commit | eb11600a248cfe5b95ddd3e5aaae02bd2ab65276 (patch) | |
tree | 9b808c55bfce6bc2bf6235065bc3748d3e2806c7 /media/libstagefright/wifi-display/source/PlaybackSession.cpp | |
parent | 44b175c31a96804d8f981c43145967473491540f (diff) | |
download | frameworks_av-eb11600a248cfe5b95ddd3e5aaae02bd2ab65276.zip frameworks_av-eb11600a248cfe5b95ddd3e5aaae02bd2ab65276.tar.gz frameworks_av-eb11600a248cfe5b95ddd3e5aaae02bd2ab65276.tar.bz2 |
Make sure we only release the HDCP module once shutdown has completed.
Change-Id: I4b614afe2b55ac53b4aa63311e5bea8fd6c4462e
related-to-bug: 7223555
Diffstat (limited to 'media/libstagefright/wifi-display/source/PlaybackSession.cpp')
-rw-r--r-- | media/libstagefright/wifi-display/source/PlaybackSession.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/media/libstagefright/wifi-display/source/PlaybackSession.cpp b/media/libstagefright/wifi-display/source/PlaybackSession.cpp index ef39713..72e6313 100644 --- a/media/libstagefright/wifi-display/source/PlaybackSession.cpp +++ b/media/libstagefright/wifi-display/source/PlaybackSession.cpp @@ -1297,6 +1297,10 @@ bool WifiDisplaySource::PlaybackSession::allTracksHavePacketizerIndex() { return true; } +static inline size_t MIN(size_t a, size_t b) { + return (a < b) ? a : b; +} + status_t WifiDisplaySource::PlaybackSession::packetizeAccessUnit( size_t trackIndex, const sp<ABuffer> &accessUnit) { const sp<Track> &track = mTracks.valueFor(trackIndex); @@ -1309,8 +1313,20 @@ status_t WifiDisplaySource::PlaybackSession::packetizeAccessUnit( if (mHDCP != NULL && !track->isAudio()) { isHDCPEncrypted = true; +#if 0 + ALOGI("in:"); + hexdump(accessUnit->data(), MIN(64, accessUnit->size())); +#endif + + if (mTempAccessUnit == NULL + || mTempAccessUnit->capacity() < accessUnit->size()) { + mTempAccessUnit = new ABuffer(accessUnit->size()); + } + + memcpy(mTempAccessUnit->data(), accessUnit->data(), accessUnit->size()); + status_t err = mHDCP->encrypt( - accessUnit->data(), accessUnit->size(), + mTempAccessUnit->data(), mTempAccessUnit->size(), trackIndex /* streamCTR */, &inputCTR, accessUnit->data()); @@ -1320,6 +1336,12 @@ status_t WifiDisplaySource::PlaybackSession::packetizeAccessUnit( err); return err; + } else { +#if 0 + ALOGI("out:"); + hexdump(accessUnit->data(), MIN(64, accessUnit->size())); + ALOGI("inputCTR: 0x%016llx", inputCTR); +#endif } HDCP_private_data[0] = 0x00; |