From 1cd139824b2e6832f239cd27d8962d3239053c02 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Fri, 17 Jan 2014 15:12:51 -0800 Subject: NuPlayer: use MediaCodec instead of ACodec Bug: 11785204 Change-Id: I1455bfc683469c7a69e565b179aceacbc5c459f5 --- .../nuplayer/NuPlayerDecoder.h | 44 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h') diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h index 78ea74a..94243fc 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoder.h @@ -25,12 +25,14 @@ namespace android { struct ABuffer; +struct MediaCodec; struct NuPlayer::Decoder : public AHandler { Decoder(const sp ¬ify, const sp &nativeWindow = NULL); void configure(const sp &format); + void init(); void signalFlush(); void signalResume(); @@ -38,7 +40,18 @@ struct NuPlayer::Decoder : public AHandler { bool supportsSeamlessFormatChange(const sp &to) const; + enum { + kWhatFillThisBuffer = 'flTB', + kWhatDrainThisBuffer = 'drTB', + kWhatOutputFormatChanged = 'fmtC', + kWhatFlushCompleted = 'flsC', + kWhatShutdownCompleted = 'shDC', + kWhatEOS = 'eos ', + kWhatError = 'err ', + }; + protected: + virtual ~Decoder(); virtual void onMessageReceived(const sp &msg); @@ -46,21 +59,40 @@ protected: private: enum { kWhatCodecNotify = 'cdcN', + kWhatConfigure = 'conf', + kWhatInputBufferFilled = 'inpF', + kWhatRenderBuffer = 'rndr', + kWhatFlush = 'flus', + kWhatShutdown = 'shuD', }; sp mNotify; sp mNativeWindow; - sp mFormat; - sp mCodec; + sp mInputFormat; + sp mOutputFormat; + sp mCodec; sp mCodecLooper; + sp mDecoderLooper; + + Vector > mInputBuffers; + Vector > mOutputBuffers; + + void handleError(int32_t err); + bool handleAnInputBuffer(); + bool handleAnOutputBuffer(); - Vector > mCSD; - size_t mCSDIndex; + void requestCodecNotification(); + bool isStaleReply(const sp &msg); - sp makeFormat(const sp &meta); + void onConfigure(const sp &format); + void onFlush(); + void onInputBufferFilled(const sp &msg); + void onRenderBuffer(const sp &msg); + void onShutdown(); - void onFillThisBuffer(const sp &msg); + int32_t mBufferGeneration; + AString mComponentName; bool supportsSeamlessAudioFormatChange(const sp &targetFormat) const; -- cgit v1.1