From 095248375e29adde961ec2a44989ecb3a6dda6a2 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Thu, 17 Jul 2014 14:29:51 -0700 Subject: nuplayer: support widevine sources - handle widevine:// scheme - add separate looper for renderer (as it can block initial buffer handling if all buffers are used) - initiate secure codecs before source is started - don't read secure buffers - share ACodec's input buffers with Widevine source on the decoder side - keep track of mediabuffers released by widevine source - keep track of dequeued input buffers (for safety) - release mediabuffer when buffer is subsequently dequeued. (This was hardcoded into OMXCodec to do this when buffer-empties message was handled, but MediaCodec does not support such functionality.) Bug: 15699665 Change-Id: I4a369443294e45c644be8b0257010e52db1d7c9b --- media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h') diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h index 4fa0dbd..c6fc237 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h @@ -26,6 +26,7 @@ namespace android { struct ABuffer; struct MediaCodec; +struct MediaBuffer; struct NuPlayer::Decoder : public AHandler { Decoder(const sp ¬ify, @@ -34,6 +35,7 @@ struct NuPlayer::Decoder : public AHandler { virtual void configure(const sp &format); virtual void init(); + status_t getInputBuffers(Vector > *dstBuffers) const; virtual void signalFlush(); virtual void signalResume(); virtual void initiateShutdown(); @@ -60,6 +62,7 @@ private: enum { kWhatCodecNotify = 'cdcN', kWhatConfigure = 'conf', + kWhatGetInputBuffers = 'gInB', kWhatInputBufferFilled = 'inpF', kWhatRenderBuffer = 'rndr', kWhatFlush = 'flus', @@ -77,11 +80,14 @@ private: Vector > mInputBuffers; Vector > mOutputBuffers; + Vector mInputBufferIsDequeued; + Vector mMediaBuffers; void handleError(int32_t err); bool handleAnInputBuffer(); bool handleAnOutputBuffer(); + void releaseAndResetMediaBuffers(); void requestCodecNotification(); bool isStaleReply(const sp &msg); -- cgit v1.1