diff options
author | Chong Zhang <chz@google.com> | 2014-11-12 16:41:05 -0800 |
---|---|---|
committer | Chong Zhang <chz@google.com> | 2014-11-20 18:14:31 -0800 |
commit | 7137ec7e005a5a6e3c0edb91cfacf16a31f4bf6a (patch) | |
tree | df4513073e85173034aca859ff220d8908969636 /media/libmediaplayerservice/nuplayer/NuPlayerDecoderBase.h | |
parent | f4ea51fda9396d7ee851b1d4d220384210ea2336 (diff) | |
download | frameworks_av-7137ec7e005a5a6e3c0edb91cfacf16a31f4bf6a.zip frameworks_av-7137ec7e005a5a6e3c0edb91cfacf16a31f4bf6a.tar.gz frameworks_av-7137ec7e005a5a6e3c0edb91cfacf16a31f4bf6a.tar.bz2 |
tunnel NuPlayer source and decoder input
Bug: 18342383
Change-Id: Ieff1cd3bad2b39d46f127ddd5d5139b919992461
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/NuPlayerDecoderBase.h')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/NuPlayerDecoderBase.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDecoderBase.h b/media/libmediaplayerservice/nuplayer/NuPlayerDecoderBase.h new file mode 100644 index 0000000..1b24c4f --- /dev/null +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDecoderBase.h @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NUPLAYER_DECODER_BASE_H_ + +#define NUPLAYER_DECODER_BASE_H_ + +#include "NuPlayer.h" + +#include <media/stagefright/foundation/AHandler.h> + +namespace android { + +struct ABuffer; +struct MediaCodec; +struct MediaBuffer; + +struct NuPlayer::DecoderBase : public AHandler { + DecoderBase(); + + void configure(const sp<AMessage> &format); + void init(); + + void setRenderer(const sp<Renderer> &renderer); + + status_t getInputBuffers(Vector<sp<ABuffer> > *dstBuffers) const; + void signalFlush(); + void signalResume(); + void initiateShutdown(); + + virtual void getStats( + int64_t *mNumFramesTotal, + int64_t *mNumFramesDropped) const = 0; + + enum { + kWhatInputDiscontinuity = 'inDi', + kWhatVideoSizeChanged = 'viSC', + kWhatFlushCompleted = 'flsC', + kWhatShutdownCompleted = 'shDC', + kWhatEOS = 'eos ', + kWhatError = 'err ', + }; + +protected: + + virtual ~DecoderBase(); + + virtual void onMessageReceived(const sp<AMessage> &msg); + + virtual void onConfigure(const sp<AMessage> &format) = 0; + virtual void onSetRenderer(const sp<Renderer> &renderer) = 0; + virtual void onGetInputBuffers(Vector<sp<ABuffer> > *dstBuffers) = 0; + virtual void onResume() = 0; + virtual void onFlush(bool notifyComplete) = 0; + virtual void onShutdown(bool notifyComplete) = 0; + + void onRequestInputBuffers(); + void scheduleRequestBuffers(); + virtual void doRequestBuffers() = 0; + +private: + enum { + kWhatConfigure = 'conf', + kWhatSetRenderer = 'setR', + kWhatGetInputBuffers = 'gInB', + kWhatRequestInputBuffers = 'reqB', + kWhatFlush = 'flus', + kWhatShutdown = 'shuD', + }; + + sp<ALooper> mDecoderLooper; + bool mRequestInputBuffersPending; + + DISALLOW_EVIL_CONSTRUCTORS(DecoderBase); +}; + +} // namespace android + +#endif // NUPLAYER_DECODER_BASE_H_ |