// SPDX-FileCopyrightText: © 2025 Allegro DVT <github-ip@allegrodvt.com>
// SPDX-License-Identifier: MIT

/******************************************************************************
   \addtogroup FourCC
   !@{
   \file
 *****************************************************************************/

#pragma once
#include "lib_common/FourCC.h"
#include "lib_common_enc/EncChanParam.h"

/*****************************************************************************
   \brief Returns the FOURCC identifier of the framebuffer the encoder is expecting
   according to the chosen encoding chroma mode, bitdepth and storage mode.
   \param[in] picFmt source picture format
   \return Returns the corresponding TFourCC format
*****************************************************************************/
TFourCC AL_EncGetSrcFourCC(AL_TPicFormat const picFmt);

/*****************************************************************************
   \brief Returns the TPicFormat of the framebuffer the encoder is expecting
   according to the chosen encoding chroma mode, bitdepth, storage and compression mode.
   \param[in] eChromaMode source picture chroma mode
   \param[in] uBitDepth source picture bit depth
   \param[in] eSrcMode source mode mode of the picture
   \return Returns the corresponding TPicFormat
*****************************************************************************/
AL_TPicFormat AL_EncGetSrcPicFormat(AL_EChromaMode eChromaMode, uint8_t uBitDepth, AL_ESrcMode eSrcMode);

/*****************************************************************************
   \brief Returns the FOURCC identifier of the reconstructed frame buffer
   generated by the encoder according to the chosen decoded chroma mode, bitdepth
   and storage mode.
   \param[in] picFmt reconstructed picture format
   \return Returns the corresponding TFourCC format
*****************************************************************************/
TFourCC AL_GetRecFourCC(AL_TPicFormat const picFmt);

/*****************************************************************************
   \brief Returns the TPicFormat of the reconstructed frame buffer
   according to the chosen encoding chroma mode, bitdepth, and compression mode.
   \param[in] eChromaMode reconstructed picture chroma mode
   \param[in] uBitDepth reconstructed picture bit depth
   \param[in] bIsCompressed true if reconstructed picture is compressed, false otherwise
   \param[in] eStorageMode storage mode of the reconstructed (default should be AL_FB_TILE_64x4)
   \return Returns the corresponding TPicFormat
*****************************************************************************/
AL_TPicFormat AL_EncGetRecPicFormat(AL_EChromaMode eChromaMode, uint8_t uBitDepth, bool bIsCompressed, AL_EFbStorageMode eStorageMode);

/*!@}*/
