blob: c883803df234299a075c4d5192094f661877a727 [file] [log] [blame]
// 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_DRIVERS_VIDEO_AMLOGIC_DECODER_CODEC_ADAPTER_MPEG2_H_
#define GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_CODEC_ADAPTER_MPEG2_H_
#include "codec_adapter.h"
class DeviceCtx;
class AmlogicVideo;
class CodecAdapterMpeg2 : public CodecAdapter {
public:
explicit CodecAdapterMpeg2(std::mutex& lock,
CodecAdapterEvents* codec_adapter_events,
DeviceCtx* device);
~CodecAdapterMpeg2();
bool IsCoreCodecRequiringOutputConfigForFormatDetection() override;
void CoreCodecInit(const fuchsia::mediacodec::CodecFormatDetails&
initial_input_format_details) override;
void CoreCodecStartStream() override;
void CoreCodecQueueInputFormatDetails(
const fuchsia::mediacodec::CodecFormatDetails&
per_stream_override_format_details) override;
void CoreCodecQueueInputPacket(const CodecPacket* packet) override;
void CoreCodecQueueInputEndOfStream() override;
void CoreCodecStopStream() override;
void CoreCodecAddBuffer(CodecPort port, const CodecBuffer* buffer) override;
void CoreCodecConfigureBuffers(
CodecPort port,
const std::vector<std::unique_ptr<CodecPacket>>& packets) override;
void CoreCodecRecycleOutputPacket(CodecPacket* packet) override;
void CoreCodecEnsureBuffersNotConfigured(CodecPort port) override;
std::unique_ptr<const fuchsia::mediacodec::CodecOutputConfig>
CoreCodecBuildNewOutputConfig(
uint64_t stream_lifetime_ordinal,
uint64_t new_output_buffer_constraints_version_ordinal,
uint64_t new_output_format_details_version_ordinal,
bool buffer_constraints_action_required) override;
void CoreCodecMidStreamOutputBufferReConfigPrepare() override;
void CoreCodecMidStreamOutputBufferReConfigFinish() override;
private:
DeviceCtx* device_ = nullptr;
AmlogicVideo* video_ = nullptr;
FXL_DISALLOW_IMPLICIT_CONSTRUCTORS(CodecAdapterMpeg2);
};
#endif // GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_CODEC_ADAPTER_MPEG2_H_