vcodec_customization.c 8.75 KB
#include "sw_video_decode_custom.h"
#include "sw_video_encode_custom.h"
#include "vcodec_if.h"
#include "MP4SwEncMem.h"
#include "video_codec_mem_v2.h"

#ifdef __VP8_DEC_SW_SUPPORT__
const VP8_DEC_CUSTOM_SETTING_T VP8CustomSetting = {
    VP8_DEC_MAX_WIDTH,
    VP8_DEC_MAX_HEIGHT,
    VP8_DEC_WORKING_MEM
    };

const VP8_DEC_CUSTOM_SETTING_T VP8QVGACustomSetting = {
    VP8_QVGA_DEC_MAX_WIDTH,
    VP8_QVGA_DEC_MAX_HEIGHT,
    VP8_QVGA_DEC_WORKING_MEM
    };
const VP8_DEC_CUSTOM_SETTING_T VP8QVGAMPEG4SPCustomSetting = {
    VP8_QVGA_DEC_MAX_WIDTH,
    VP8_QVGA_DEC_MAX_HEIGHT,
    VP8_QVGA_DEC_WORKING_MEM
    };
const VP8_DEC_CUSTOM_SETTING_T VP8QCIFCustomSetting = {
    VP8_QCIF_DEC_MAX_WIDTH,
    VP8_QCIF_DEC_MAX_HEIGHT,
    VP8_QCIF_DEC_WORKING_MEM
    };
const VP8_DEC_CUSTOM_SETTING_T VP8VGACustomSetting = {
    VP8_VGA_DEC_MAX_WIDTH,
    VP8_VGA_DEC_MAX_HEIGHT,
    VP8_VGA_DEC_WORKING_MEM
    };
const VP8_DEC_CUSTOM_SETTING_T VP8CIFCustomSetting = {
    VP8_CIF_DEC_MAX_WIDTH,
    VP8_CIF_DEC_MAX_HEIGHT,
    VP8_CIF_DEC_WORKING_MEM
    };
const VP8_DEC_CUSTOM_SETTING_T VP8UPTOQVGACustomSetting = {
    VP8_UPTOQVGA_DEC_MAX_WIDTH,
    VP8_UPTOQVGA_DEC_MAX_HEIGHT,
    VP8_UPTOQVGA_DEC_WORKING_MEM
    };
const VP8_DEC_CUSTOM_SETTING_T VP8UPTOCIFCustomSetting = {
    VP8_UPTOCIF_DEC_MAX_WIDTH,
    VP8_UPTOCIF_DEC_MAX_HEIGHT,
    VP8_UPTOCIF_DEC_WORKING_MEM
    };
extern VCODEC_DEC_API_T rVP8API;
VCODEC_DEC_API_T *GetVP8DecoderAPI(void)
{
    return &rVP8API;
};
#endif

#ifdef __RV_DEC_SW_SUPPORT__
const RV9_DEC_CUSTOM_SETTING_T rmvbCustomSetting = {
    RV9_DEC_MAX_WIDTH,
    RV9_DEC_MAX_HEIGHT,
    RV9_DEC_WORKING_MEM
    };

const RV9_DEC_CUSTOM_SETTING_T rmvbQVGACustomSetting = {
    RV9_QVGA_DEC_MAX_WIDTH,
    RV9_QVGA_DEC_MAX_HEIGHT,
    RV9_QVGA_DEC_WORKING_MEM
    };
const RV9_DEC_CUSTOM_SETTING_T rmvbQVGAMPEG4SPCustomSetting = {
    RV9_QVGA_DEC_MAX_WIDTH,
    RV9_QVGA_DEC_MAX_HEIGHT,
    RV9_QVGA_DEC_WORKING_MEM
    };
const RV9_DEC_CUSTOM_SETTING_T rmvbQCIFCustomSetting = {
    RV9_QCIF_DEC_MAX_WIDTH,
    RV9_QCIF_DEC_MAX_HEIGHT,
    RV9_QCIF_DEC_WORKING_MEM
    };
const RV9_DEC_CUSTOM_SETTING_T rmvbVGACustomSetting = {
    RV9_VGA_DEC_MAX_WIDTH,
    RV9_VGA_DEC_MAX_HEIGHT,
    RV9_VGA_DEC_WORKING_MEM
    };
const RV9_DEC_CUSTOM_SETTING_T rmvbCIFCustomSetting = {
    RV9_CIF_DEC_MAX_WIDTH,
    RV9_CIF_DEC_MAX_HEIGHT,
    RV9_CIF_DEC_WORKING_MEM
    };
const RV9_DEC_CUSTOM_SETTING_T rmvbUPTOQVGACustomSetting = {
    RV9_UPTOQVGA_DEC_MAX_WIDTH,
    RV9_UPTOQVGA_DEC_MAX_HEIGHT,
    RV9_UPTOQVGA_DEC_WORKING_MEM
    };
const RV9_DEC_CUSTOM_SETTING_T rmvbUPTOCIFCustomSetting = {
    RV9_UPTOCIF_DEC_MAX_WIDTH,
    RV9_UPTOCIF_DEC_MAX_HEIGHT,
    RV9_UPTOCIF_DEC_WORKING_MEM
    };
extern VCODEC_DEC_API_T rRVAPI;
VCODEC_DEC_API_T *GetRMDecoderAPI(void)
{
    return &rRVAPI;
};  //RV9,RV10
#endif

#ifdef __MPEG4_DEC_SW_SUPPORT__
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4CustomSetting = {
    MPEG4_DEC_MAX_WIDTH_SP,
    MPEG4_DEC_MAX_HEIGHT_SP,
    MPEG4_DEC_MAX_WIDTH_ASP,
    MPEG4_DEC_MAX_HEIGHT_ASP,
    MPEG4_DEC_WORKING_MEM
    };
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4QVGACustomSetting = {
    MPEG4_QVGA_DEC_MAX_WIDTH,
    MPEG4_QVGA_DEC_MAX_HEIGHT,
    MPEG4_QVGA_DEC_MAX_WIDTH,
    MPEG4_QVGA_DEC_MAX_HEIGHT,
    MPEG4_QVGA_DEC_WORKING_MEM
    };
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4QVGAMPEG4SPCustomSetting = {
    MPEG4_QVGAMPEG4SP_DEC_MAX_WIDTH,
    MPEG4_QVGAMPEG4SP_DEC_MAX_HEIGHT,
    MPEG4_QVGAMPEG4SP_DEC_MAX_WIDTH,
    MPEG4_QVGAMPEG4SP_DEC_MAX_HEIGHT,
    MPEG4_QVGAMPEG4SP_DEC_WORKING_MEM
    };
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4QCIFCustomSetting = {
    MPEG4_QCIF_DEC_MAX_WIDTH,
    MPEG4_QCIF_DEC_MAX_HEIGHT,
    MPEG4_QCIF_DEC_MAX_WIDTH,
    MPEG4_QCIF_DEC_MAX_HEIGHT,
    MPEG4_QCIF_DEC_WORKING_MEM
    };
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4VGACustomSetting = {
    MPEG4_VGA_DEC_MAX_WIDTH,
    MPEG4_VGA_DEC_MAX_HEIGHT,
    MPEG4_VGA_DEC_MAX_WIDTH,
    MPEG4_VGA_DEC_MAX_HEIGHT,
    MPEG4_VGA_DEC_WORKING_MEM
    };
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4CIFCustomSetting = {
    MPEG4_CIF_DEC_MAX_WIDTH,
    MPEG4_CIF_DEC_MAX_HEIGHT,
    MPEG4_CIF_DEC_MAX_WIDTH,
    MPEG4_CIF_DEC_MAX_HEIGHT,
    MPEG4_CIF_DEC_WORKING_MEM
    };
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4UPTOQVGACustomSetting = {
    MPEG4_UPTOQVGA_DEC_MAX_WIDTH,
    MPEG4_UPTOQVGA_DEC_MAX_HEIGHT,
    MPEG4_UPTOQVGA_DEC_MAX_WIDTH,
    MPEG4_UPTOQVGA_DEC_MAX_HEIGHT,
    MPEG4_UPTOQVGA_DEC_WORKING_MEM
    };
const MPEG4_DEC_CUSTOM_SETTING_T MPEG4UPTOCIFCustomSetting = {
    MPEG4_UPTOCIF_DEC_MAX_WIDTH,
    MPEG4_UPTOCIF_DEC_MAX_HEIGHT,
    MPEG4_UPTOCIF_DEC_MAX_WIDTH,
    MPEG4_UPTOCIF_DEC_MAX_HEIGHT,
    MPEG4_UPTOCIF_DEC_WORKING_MEM
    };


extern VCODEC_DEC_API_T rMPEG4API_ASP;
extern VCODEC_DEC_API_T rMPEG4API_SP;
VCODEC_DEC_API_T *GetMPEG4DecoderAPI(void)
{
#ifdef __MP4_DEC_SW_SUPPORT_ASP__
    return &rMPEG4API_ASP;
#else
    return &rMPEG4API_SP;
#endif
}
#endif

#ifdef __H264_DEC_SW_SUPPORT__
const H264_DEC_CUSTOM_SETTING_T H264CustomSetting = {
    H264_DEC_MAX_WIDTH_BP,
    H264_DEC_MAX_HEIGHT_BP,
    H264_DEC_MAX_WIDTH_MPHP,
    H264_DEC_MAX_HEIGHT_MPHP,
    H264_DEC_WORKING_MEM,
    H264_DEC_DPB_SIZE
    };
const H264_DEC_CUSTOM_SETTING_T H264QVGACustomSetting = {
    H264_QVGA_DEC_MAX_WIDTH, //BP
    H264_QVGA_DEC_MAX_HEIGHT,//BP
    H264_QVGA_DEC_MAX_WIDTH, //MPHP
    H264_QVGA_DEC_MAX_HEIGHT,//MPHP
    H264_QVGA_DEC_WORKING_MEM,
    H264_QVGA_DEC_DPB_SIZE
    };
const H264_DEC_CUSTOM_SETTING_T H264QVGAMPEG4SPCustomSetting = {
    H264_QVGA_DEC_MAX_WIDTH, //BP
    H264_QVGA_DEC_MAX_HEIGHT,//BP
    H264_QVGA_DEC_MAX_WIDTH, //MPHP
    H264_QVGA_DEC_MAX_HEIGHT,//MPHP
    H264_QVGA_DEC_WORKING_MEM,
    H264_QVGA_DEC_DPB_SIZE
    };
const H264_DEC_CUSTOM_SETTING_T H264QCIFCustomSetting = {
    H264_QCIF_DEC_MAX_WIDTH,
    H264_QCIF_DEC_MAX_HEIGHT,
    H264_QCIF_DEC_MAX_WIDTH,
    H264_QCIF_DEC_MAX_HEIGHT,
    H264_QCIF_DEC_WORKING_MEM,
    H264_QCIF_DEC_DPB_SIZE
    };
const H264_DEC_CUSTOM_SETTING_T H264VGACustomSetting = {
    H264_VGA_DEC_MAX_WIDTH,
    H264_VGA_DEC_MAX_HEIGHT,
    H264_VGA_DEC_MAX_WIDTH,
    H264_VGA_DEC_MAX_HEIGHT,
    H264_VGA_DEC_WORKING_MEM,
    H264_VGA_DEC_DPB_SIZE
    };
const H264_DEC_CUSTOM_SETTING_T H264CIFCustomSetting = {
    H264_CIF_DEC_MAX_WIDTH,
    H264_CIF_DEC_MAX_HEIGHT,
    H264_CIF_DEC_MAX_WIDTH,
    H264_CIF_DEC_MAX_HEIGHT,
    H264_CIF_DEC_WORKING_MEM,
    H264_CIF_DEC_DPB_SIZE
    };
// MAUI_02955479
const H264_DEC_CUSTOM_SETTING_T H264PreviewCustomSetting = {
    H264_DEC_MAX_WIDTH_BP,
    H264_DEC_MAX_HEIGHT_BP,
    H264_DEC_MAX_WIDTH_MPHP,
    H264_DEC_MAX_HEIGHT_MPHP,
    H264_DEC_WORKING_MEM,
    //H264_PREVIEW_DEC_DPB_SIZE
    H264_DEC_DPB_SIZE
    };

const H264_DEC_CUSTOM_SETTING_T H264UPTOQVGACustomSetting = {
    H264_UPTOQVGA_DEC_MAX_WIDTH, //BP
    H264_UPTOQVGA_DEC_MAX_HEIGHT,//BP
    H264_UPTOQVGA_DEC_MAX_WIDTH, //MPHP
    H264_UPTOQVGA_DEC_MAX_HEIGHT,//MPHP
    H264_UPTOQVGA_DEC_WORKING_MEM,
    H264_UPTOQVGA_DEC_DPB_SIZE
    };

const H264_DEC_CUSTOM_SETTING_T H264UPTOCIFCustomSetting = {
    H264_UPTOCIF_DEC_MAX_WIDTH,
    H264_UPTOCIF_DEC_MAX_HEIGHT,
    H264_UPTOCIF_DEC_MAX_WIDTH,
    H264_UPTOCIF_DEC_MAX_HEIGHT,
    H264_UPTOCIF_DEC_WORKING_MEM,
    H264_UPTOCIF_DEC_DPB_SIZE
    };

extern VCODEC_DEC_API_T rH264API_MPHP;
extern VCODEC_DEC_API_T rH264API_BP;
VCODEC_DEC_API_T *GetH264DecoderAPI(void)
{
#ifdef __H264_DEC_SW_SUPPORT_MAINHIGH__
    return &rH264API_MPHP;
#else
    return &rH264API_BP;
#endif
}
#endif

#ifdef __MPEG4_ENC_SW_SUPPORT__

#ifndef MPEG4_ENC_MAX_WIDTH
#define MPEG4_ENC_MAX_WIDTH 1280
#define MPEG4_ENC_MAX_HEIGHT 720
#endif

const VCODEC_ENC_MPEG4_SETTING_T MPEG4EncoderCustomSetting = {
		VCODEC_COLOR_FORMAT_YUV420	,
		MPEG4_ENC_MAX_WIDTH,
		MPEG4_ENC_MAX_HEIGHT,
		MP4SwEncMaxVidCodRes,
#ifdef MT6256
    50000 * 20
#else
    10000 * 15
#endif
	};

extern VCODEC_ENC_API_T _rMPEG4EncoderAPI;
VCODEC_ENC_API_T* GetMPEG4EncoderAPI(void)
{
    return &_rMPEG4EncoderAPI;
}
#endif


#ifdef __VIDEO_VT_SUPPORT__
#ifdef __MPEG4_DEC_SW_SUPPORT__
const MPEG4VT_DEC_CUSTOM_SETTING_T MPEG4VTCustomSetting = {
    MPEG4_VT_DEC_MAX_WIDTH,
    MPEG4_VT_DEC_MAX_HEIGHT,
    MPEG4_VT_DEC_WORKING_MEM
    };

extern VCODEC_DEC_API_T rMPEG4VTAPI;
VCODEC_DEC_API_T *GetMPEG4VTDecoderAPI(void)
{
    return &rMPEG4VTAPI;
}
#endif


const VCODEC_ENC_GENERAL_SETTING_T MPEG4VTEncoderCustomSetting = {
		VCODEC_COLOR_FORMAT_YUV420,
		176,			// DO NOT MODIFY
		144,			// DO NOT MODIFY
		RES_QCIF
	};
extern VCODEC_ENC_API_T _rMP4VTEncoderAPI;
VCODEC_ENC_API_T *GetMPEG4SWVTEncoderAPI(void)
{
	return &_rMP4VTEncoderAPI;
}
#endif

#ifdef __H264_ENC_SW_SUPPORT__
const VCODEC_ENC_GENERAL_SETTING_T H264EncoderCustomSetting = {
    VCODEC_COLOR_FORMAT_YUV420	,
    H264_ENC_MAX_WIDTH,
    H264_ENC_MAX_HEIGHT,
    0
};
extern VCODEC_ENC_API_T _rH264EncoderAPI;
VCODEC_ENC_API_T *GetH264EncoderAPI(void)
{
    return &_rH264EncoderAPI;
}
#endif // __H264_ENC_SW_SUPPORT__