| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GARNET_LIB_MEDIA_CODEC_IMPL_INCLUDE_LIB_MEDIA_CODEC_IMPL_CODEC_ADAPTER_EVENTS_H_ |
| #define GARNET_LIB_MEDIA_CODEC_IMPL_INCLUDE_LIB_MEDIA_CODEC_IMPL_CODEC_ADAPTER_EVENTS_H_ |
| |
| class CodecPacket; |
| |
| // |
| // For use by CodecAdapter implementations to report async events. |
| // |
| |
| // We use an abstract base class here instead of letting CodecAdapter |
| // sub-classes directly call CodecImpl, just to make sure the CodecAdapter uses |
| // the intended interface to the CodecImpl. |
| |
| class CodecAdapterEvents { |
| public: |
| // If the core codec needs to fail the whole CodecImpl, such as when/if new |
| // FormatDetails are different than the initial FormatDetails and |
| // the core codec doesn't support switching from the old to the new input |
| // format details (for example due to needing different input buffer config). |
| virtual void onCoreCodecFailCodec(const char* format, ...) = 0; |
| |
| // The core codec should only call this method at times when there is a |
| // current stream, not between streams. |
| virtual void onCoreCodecFailStream() = 0; |
| |
| // "Mid-stream" can mean at the start of a stream also - it's just required |
| // that a stream be active currently. The core codec must ensure that this |
| // call is propertly ordered with respect to onCoreCodecOutputPacket() and |
| // onCoreCodecOutputEndOfStream() calls. |
| // |
| // A call to onCoreCodecMidStreamOutputConfigChange(true) must not be |
| // followed by any more output (including EndOfStream) until the associated |
| // output re-config is completed by a call to |
| // CoreCodecMidStreamOutputBufferReConfigFinish(). |
| virtual void onCoreCodecMidStreamOutputConfigChange( |
| bool output_re_config_required) = 0; |
| |
| virtual void onCoreCodecInputPacketDone(CodecPacket* packet) = 0; |
| |
| virtual void onCoreCodecOutputPacket(CodecPacket* packet, |
| bool error_detected_before, |
| bool error_detected_during) = 0; |
| |
| virtual void onCoreCodecOutputEndOfStream(bool error_detected_before) = 0; |
| }; |
| |
| #endif // GARNET_LIB_MEDIA_CODEC_IMPL_INCLUDE_LIB_MEDIA_CODEC_IMPL_CODEC_ADAPTER_EVENTS_H_ |