Home | History | Annotate | Download | only in topazsc
      1 /*
      2  * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
      3  * Copyright (c) Imagination Technologies Limited, UK
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a
      6  * copy of this software and associated documentation files (the
      7  * "Software"), to deal in the Software without restriction, including
      8  * without limitation the rights to use, copy, modify, merge, publish,
      9  * distribute, sub license, and/or sell copies of the Software, and to
     10  * permit persons to whom the Software is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The above copyright notice and this permission notice (including the
     14  * next paragraph) shall be included in all copies or substantial portions
     15  * of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
     20  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
     21  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     22  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     23  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     24  *
     25  * Authors:
     26  *    Zeng Li <zeng.li (at) intel.com>
     27  *
     28  */
     29 
     30 #include <stdio.h>
     31 
     32 #include "H263Firmware_bin.h"
     33 #include "H263FirmwareCBR_bin.h"
     34 #include "H263FirmwareVBR_bin.h"
     35 #include "H264Firmware_bin.h"
     36 #include "H264FirmwareCBR_bin.h"
     37 #include "H264FirmwareVBR_bin.h"
     38 #include "H264FirmwareVCM_bin.h"
     39 #include "MPG4Firmware_bin.h"
     40 #include "MPG4FirmwareCBR_bin.h"
     41 #include "MPG4FirmwareVBR_bin.h"
     42 
     43 #define FW_VER 146 /* DDKv146 release */
     44 #define FW_FILE_NAME "topaz_fw.bin"
     45 
     46 struct topaz_fw_info_item_s {
     47     unsigned short ver;
     48     unsigned short codec;
     49 
     50     unsigned int  text_size;
     51     unsigned int data_size;
     52     unsigned int data_location;
     53 };
     54 typedef struct topaz_fw_info_item_s topaz_fw_info_item_t;
     55 
     56 enum topaz_fw_codec_e {
     57     FW_JPEG = 0,
     58     FW_H264_NO_RC,
     59     FW_H264_VBR,
     60     FW_H264_CBR,
     61     FW_H264_VCM,
     62     FW_H263_NO_RC,
     63     FW_H263_VBR,
     64     FW_H263_CBR,
     65     FW_MPEG4_NO_RC,
     66     FW_MPEG4_VBR,
     67     FW_MPEG4_CBR,
     68     FW_NUM
     69 };
     70 typedef enum topaz_fw_codec_e topaz_fw_codec_t;
     71 
     72 struct fw_table_s {
     73     topaz_fw_codec_t index;
     74     topaz_fw_info_item_t header;
     75     unsigned int *fw_text;
     76     unsigned int *fw_data;
     77 };
     78 typedef struct fw_table_s fw_table_t;
     79 
     80 int main()
     81 {
     82     FILE *fp = NULL;
     83     topaz_fw_codec_t iter = FW_H264_NO_RC;
     84     unsigned int size = 0;
     85 
     86     fw_table_t topaz_fw_table[] = {
     87         /* index   header
     88          * { ver, codec, text_size, data_size, date_location }
     89          * fw_text fw_data */
     90         { 0, {0, 0, 0, 0, 0}, NULL, NULL },
     91         {
     92             FW_H264_NO_RC,
     93             {
     94                 FW_VER,
     95                 FW_H264_NO_RC,
     96                 ui32H264_MTXTOPAZFWTextSize,
     97                 ui32H264_MTXTOPAZFWDataSize,
     98                 ui32H264_MTXTOPAZFWDataLocation
     99             },
    100             aui32H264_MTXTOPAZFWText, aui32H264_MTXTOPAZFWData
    101         },
    102 
    103         {
    104             FW_H264_VBR,
    105             {
    106                 FW_VER,
    107                 FW_H264_VBR,
    108                 ui32H264VBR_MTXTOPAZFWTextSize,
    109                 ui32H264VBR_MTXTOPAZFWDataSize,
    110                 ui32H264VBR_MTXTOPAZFWDataLocation
    111             },
    112             aui32H264VBR_MTXTOPAZFWText, aui32H264VBR_MTXTOPAZFWData
    113         },
    114 
    115         {
    116             FW_H264_CBR,
    117             {
    118                 FW_VER,
    119                 FW_H264_CBR,
    120                 ui32H264CBR_MTXTOPAZFWTextSize,
    121                 ui32H264CBR_MTXTOPAZFWDataSize,
    122                 ui32H264CBR_MTXTOPAZFWDataLocation
    123             },
    124             aui32H264CBR_MTXTOPAZFWText,
    125             aui32H264CBR_MTXTOPAZFWData
    126         },
    127 
    128         {
    129             FW_H264_VCM,
    130             {
    131                 FW_VER,
    132                 FW_H264_VCM,
    133                 ui32H264VCM_MTXTOPAZFWTextSize,
    134                 ui32H264VCM_MTXTOPAZFWDataSize,
    135                 ui32H264VCM_MTXTOPAZFWDataLocation
    136             },
    137             aui32H264VCM_MTXTOPAZFWText,
    138             aui32H264VCM_MTXTOPAZFWData
    139         },
    140 
    141         {
    142             FW_H263_NO_RC,
    143             {
    144                 FW_VER,
    145                 FW_H263_NO_RC,
    146                 ui32H263_MTXTOPAZFWTextSize,
    147                 ui32H263_MTXTOPAZFWDataSize,
    148                 ui32H263_MTXTOPAZFWDataLocation
    149             },
    150             aui32H263_MTXTOPAZFWText,
    151             aui32H263_MTXTOPAZFWData
    152         },
    153 
    154         {
    155             FW_H263_VBR,
    156             {
    157                 FW_VER,
    158                 FW_H263_VBR,
    159                 ui32H263VBR_MTXTOPAZFWTextSize,
    160                 ui32H263VBR_MTXTOPAZFWDataSize,
    161                 ui32H263VBR_MTXTOPAZFWDataLocation
    162             },
    163             aui32H263VBR_MTXTOPAZFWText,
    164             aui32H263VBR_MTXTOPAZFWData
    165         },
    166 
    167         {
    168             FW_H263_CBR,
    169             {
    170                 FW_VER,
    171                 FW_H263_CBR,
    172                 ui32H263CBR_MTXTOPAZFWTextSize,
    173                 ui32H263CBR_MTXTOPAZFWDataSize,
    174                 ui32H263CBR_MTXTOPAZFWDataLocation
    175             },
    176             aui32H263CBR_MTXTOPAZFWText,
    177             aui32H263CBR_MTXTOPAZFWData
    178         },
    179 
    180         {
    181             FW_MPEG4_NO_RC,
    182             {
    183                 FW_VER,
    184                 FW_MPEG4_NO_RC,
    185                 ui32MPG4_MTXTOPAZFWTextSize,
    186                 ui32MPG4_MTXTOPAZFWDataSize,
    187                 ui32MPG4_MTXTOPAZFWDataLocation
    188             },
    189             aui32MPG4_MTXTOPAZFWText,
    190             aui32MPG4_MTXTOPAZFWData
    191         },
    192 
    193         {
    194             FW_MPEG4_VBR,
    195             {
    196                 FW_VER,
    197                 FW_MPEG4_VBR,
    198                 ui32MPG4VBR_MTXTOPAZFWTextSize,
    199                 ui32MPG4VBR_MTXTOPAZFWDataSize,
    200                 ui32MPG4VBR_MTXTOPAZFWDataLocation
    201             },
    202             aui32MPG4VBR_MTXTOPAZFWText,
    203             aui32MPG4VBR_MTXTOPAZFWData
    204         },
    205 
    206         {
    207             FW_MPEG4_CBR,
    208             {
    209                 FW_VER,
    210                 FW_MPEG4_CBR,
    211                 ui32MPG4CBR_MTXTOPAZFWTextSize,
    212                 ui32MPG4CBR_MTXTOPAZFWDataSize,
    213                 ui32MPG4CBR_MTXTOPAZFWDataLocation
    214             },
    215             aui32MPG4CBR_MTXTOPAZFWText,
    216             aui32MPG4CBR_MTXTOPAZFWData
    217         }
    218     };
    219 
    220     /* open file  */
    221     fp = fopen(FW_FILE_NAME, "w");
    222 
    223     if (NULL == fp)
    224         return -1;
    225     /* write fw table into the file */
    226     while (iter < FW_NUM) {
    227         /* record the size use bytes */
    228         topaz_fw_table[iter].header.data_size *= 4;
    229         topaz_fw_table[iter].header.text_size *= 4;
    230 
    231         /* write header */
    232         fwrite(&(topaz_fw_table[iter].header), sizeof(topaz_fw_table[iter].header), 1, fp);
    233 
    234         /* write text */
    235         size = topaz_fw_table[iter].header.text_size;
    236         fwrite(topaz_fw_table[iter].fw_text, 1, size, fp);
    237 
    238         /* write data */
    239         size = topaz_fw_table[iter].header.data_size;
    240         fwrite(topaz_fw_table[iter].fw_data, 1, size, fp);
    241 
    242         ++iter;
    243     }
    244 
    245     /* close file */
    246     fclose(fp);
    247 
    248     return 0;
    249 }
    250