12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /*
- * Copyright 2017 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 NUPLAYER2_DECODER_PASS_THROUGH_H_
- #define NUPLAYER2_DECODER_PASS_THROUGH_H_
- #include "NuPlayer2.h"
- #include "NuPlayer2DecoderBase.h"
- namespace android {
- struct NuPlayer2::DecoderPassThrough : public DecoderBase {
- DecoderPassThrough(const sp<AMessage> ¬ify,
- const sp<Source> &source,
- const sp<Renderer> &renderer);
- protected:
- virtual ~DecoderPassThrough();
- virtual void onMessageReceived(const sp<AMessage> &msg);
- virtual void onConfigure(const sp<AMessage> &format);
- virtual void onSetParameters(const sp<AMessage> ¶ms);
- virtual void onSetRenderer(const sp<Renderer> &renderer);
- virtual void onResume(bool notifyComplete);
- virtual void onFlush();
- virtual void onShutdown(bool notifyComplete);
- virtual bool doRequestBuffers();
- private:
- enum {
- kWhatBufferConsumed = 'bufC',
- };
- sp<Source> mSource;
- sp<Renderer> mRenderer;
- int64_t mSkipRenderingUntilMediaTimeUs;
- bool mReachedEOS;
- // Used by feedDecoderInputData to aggregate small buffers into
- // one large buffer.
- sp<ABuffer> mPendingAudioAccessUnit;
- status_t mPendingAudioErr;
- sp<ABuffer> mAggregateBuffer;
- // mPendingBuffersToDrain are only for debugging. It can be removed
- // when the power investigation is done.
- size_t mPendingBuffersToDrain;
- size_t mCachedBytes;
- AString mComponentName;
- bool isStaleReply(const sp<AMessage> &msg);
- bool isDoneFetching() const;
- status_t dequeueAccessUnit(sp<ABuffer> *accessUnit);
- sp<ABuffer> aggregateBuffer(const sp<ABuffer> &accessUnit);
- status_t fetchInputData(sp<AMessage> &reply);
- void doFlush(bool notifyComplete);
- void onInputBufferFetched(const sp<AMessage> &msg);
- void onBufferConsumed(int32_t size);
- DISALLOW_EVIL_CONSTRUCTORS(DecoderPassThrough);
- };
- } // namespace android
- #endif // NUPLAYER2_DECODER_PASS_THROUGH_H_
|