/* * Copyright (c) 2011 Intel Corporation. All Rights Reserved. * Copyright (c) Imagination Technologies Limited, UK * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sub license, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial portions * of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * Authors: * Zeng Li <zeng.li@intel.com> * */ #include <stdio.h> #include "H263Firmware_bin.h" #include "H263FirmwareCBR_bin.h" #include "H263FirmwareVBR_bin.h" #include "H264Firmware_bin.h" #include "H264FirmwareCBR_bin.h" #include "H264FirmwareVBR_bin.h" #include "H264FirmwareVCM_bin.h" #include "MPG4Firmware_bin.h" #include "MPG4FirmwareCBR_bin.h" #include "MPG4FirmwareVBR_bin.h" #define FW_VER 146 /* DDKv146 release */ #define FW_FILE_NAME "topaz_fw.bin" struct topaz_fw_info_item_s { unsigned short ver; unsigned short codec; unsigned int text_size; unsigned int data_size; unsigned int data_location; }; typedef struct topaz_fw_info_item_s topaz_fw_info_item_t; enum topaz_fw_codec_e { FW_JPEG = 0, FW_H264_NO_RC, FW_H264_VBR, FW_H264_CBR, FW_H264_VCM, FW_H263_NO_RC, FW_H263_VBR, FW_H263_CBR, FW_MPEG4_NO_RC, FW_MPEG4_VBR, FW_MPEG4_CBR, FW_NUM }; typedef enum topaz_fw_codec_e topaz_fw_codec_t; struct fw_table_s { topaz_fw_codec_t index; topaz_fw_info_item_t header; unsigned int *fw_text; unsigned int *fw_data; }; typedef struct fw_table_s fw_table_t; int main() { FILE *fp = NULL; topaz_fw_codec_t iter = FW_H264_NO_RC; unsigned int size = 0; fw_table_t topaz_fw_table[] = { /* index header * { ver, codec, text_size, data_size, date_location } * fw_text fw_data */ { 0, {0, 0, 0, 0, 0}, NULL, NULL }, { FW_H264_NO_RC, { FW_VER, FW_H264_NO_RC, ui32H264_MTXTOPAZFWTextSize, ui32H264_MTXTOPAZFWDataSize, ui32H264_MTXTOPAZFWDataLocation }, aui32H264_MTXTOPAZFWText, aui32H264_MTXTOPAZFWData }, { FW_H264_VBR, { FW_VER, FW_H264_VBR, ui32H264VBR_MTXTOPAZFWTextSize, ui32H264VBR_MTXTOPAZFWDataSize, ui32H264VBR_MTXTOPAZFWDataLocation }, aui32H264VBR_MTXTOPAZFWText, aui32H264VBR_MTXTOPAZFWData }, { FW_H264_CBR, { FW_VER, FW_H264_CBR, ui32H264CBR_MTXTOPAZFWTextSize, ui32H264CBR_MTXTOPAZFWDataSize, ui32H264CBR_MTXTOPAZFWDataLocation }, aui32H264CBR_MTXTOPAZFWText, aui32H264CBR_MTXTOPAZFWData }, { FW_H264_VCM, { FW_VER, FW_H264_VCM, ui32H264VCM_MTXTOPAZFWTextSize, ui32H264VCM_MTXTOPAZFWDataSize, ui32H264VCM_MTXTOPAZFWDataLocation }, aui32H264VCM_MTXTOPAZFWText, aui32H264VCM_MTXTOPAZFWData }, { FW_H263_NO_RC, { FW_VER, FW_H263_NO_RC, ui32H263_MTXTOPAZFWTextSize, ui32H263_MTXTOPAZFWDataSize, ui32H263_MTXTOPAZFWDataLocation }, aui32H263_MTXTOPAZFWText, aui32H263_MTXTOPAZFWData }, { FW_H263_VBR, { FW_VER, FW_H263_VBR, ui32H263VBR_MTXTOPAZFWTextSize, ui32H263VBR_MTXTOPAZFWDataSize, ui32H263VBR_MTXTOPAZFWDataLocation }, aui32H263VBR_MTXTOPAZFWText, aui32H263VBR_MTXTOPAZFWData }, { FW_H263_CBR, { FW_VER, FW_H263_CBR, ui32H263CBR_MTXTOPAZFWTextSize, ui32H263CBR_MTXTOPAZFWDataSize, ui32H263CBR_MTXTOPAZFWDataLocation }, aui32H263CBR_MTXTOPAZFWText, aui32H263CBR_MTXTOPAZFWData }, { FW_MPEG4_NO_RC, { FW_VER, FW_MPEG4_NO_RC, ui32MPG4_MTXTOPAZFWTextSize, ui32MPG4_MTXTOPAZFWDataSize, ui32MPG4_MTXTOPAZFWDataLocation }, aui32MPG4_MTXTOPAZFWText, aui32MPG4_MTXTOPAZFWData }, { FW_MPEG4_VBR, { FW_VER, FW_MPEG4_VBR, ui32MPG4VBR_MTXTOPAZFWTextSize, ui32MPG4VBR_MTXTOPAZFWDataSize, ui32MPG4VBR_MTXTOPAZFWDataLocation }, aui32MPG4VBR_MTXTOPAZFWText, aui32MPG4VBR_MTXTOPAZFWData }, { FW_MPEG4_CBR, { FW_VER, FW_MPEG4_CBR, ui32MPG4CBR_MTXTOPAZFWTextSize, ui32MPG4CBR_MTXTOPAZFWDataSize, ui32MPG4CBR_MTXTOPAZFWDataLocation }, aui32MPG4CBR_MTXTOPAZFWText, aui32MPG4CBR_MTXTOPAZFWData } }; /* open file */ fp = fopen(FW_FILE_NAME, "w"); if (NULL == fp) return -1; /* write fw table into the file */ while (iter < FW_NUM) { /* record the size use bytes */ topaz_fw_table[iter].header.data_size *= 4; topaz_fw_table[iter].header.text_size *= 4; /* write header */ fwrite(&(topaz_fw_table[iter].header), sizeof(topaz_fw_table[iter].header), 1, fp); /* write text */ size = topaz_fw_table[iter].header.text_size; fwrite(topaz_fw_table[iter].fw_text, 1, size, fp); /* write data */ size = topaz_fw_table[iter].header.data_size; fwrite(topaz_fw_table[iter].fw_data, 1, size, fp); ++iter; } /* close file */ fclose(fp); return 0; }