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     unsigned int i;
     86 
     87     fw_table_t topaz_fw_table[] = {
     88         /* index   header
     89          * { ver, codec, text_size, data_size, date_location }
     90          * fw_text fw_data */
     91         { 0, {0, 0, 0, 0, 0}, NULL, NULL },
     92         {
     93             FW_H264_NO_RC,
     94             {
     95                 FW_VER,
     96                 FW_H264_NO_RC,
     97                 ui32H264_MTXTOPAZFWTextSize,
     98                 ui32H264_MTXTOPAZFWDataSize,
     99                 ui32H264_MTXTOPAZFWDataLocation
    100             },
    101             aui32H264_MTXTOPAZFWText, aui32H264_MTXTOPAZFWData
    102         },
    103 
    104         {
    105             FW_H264_VBR,
    106             {
    107                 FW_VER,
    108                 FW_H264_VBR,
    109                 ui32H264VBR_MTXTOPAZFWTextSize,
    110                 ui32H264VBR_MTXTOPAZFWDataSize,
    111                 ui32H264VBR_MTXTOPAZFWDataLocation
    112             },
    113             aui32H264VBR_MTXTOPAZFWText, aui32H264VBR_MTXTOPAZFWData
    114         },
    115 
    116         {
    117             FW_H264_CBR,
    118             {
    119                 FW_VER,
    120                 FW_H264_CBR,
    121                 ui32H264CBR_MTXTOPAZFWTextSize,
    122                 ui32H264CBR_MTXTOPAZFWDataSize,
    123                 ui32H264CBR_MTXTOPAZFWDataLocation
    124             },
    125             aui32H264CBR_MTXTOPAZFWText,
    126             aui32H264CBR_MTXTOPAZFWData
    127         },
    128 
    129         {
    130             FW_H264_VCM,
    131             {
    132                 FW_VER,
    133                 FW_H264_VCM,
    134                 ui32H264VCM_MTXTOPAZFWTextSize,
    135                 ui32H264VCM_MTXTOPAZFWDataSize,
    136                 ui32H264VCM_MTXTOPAZFWDataLocation
    137             },
    138             aui32H264VCM_MTXTOPAZFWText,
    139             aui32H264VCM_MTXTOPAZFWData
    140         },
    141 
    142         {
    143             FW_H263_NO_RC,
    144             {
    145                 FW_VER,
    146                 FW_H263_NO_RC,
    147                 ui32H263_MTXTOPAZFWTextSize,
    148                 ui32H263_MTXTOPAZFWDataSize,
    149                 ui32H263_MTXTOPAZFWDataLocation
    150             },
    151             aui32H263_MTXTOPAZFWText,
    152             aui32H263_MTXTOPAZFWData
    153         },
    154 
    155         {
    156             FW_H263_VBR,
    157             {
    158                 FW_VER,
    159                 FW_H263_VBR,
    160                 ui32H263VBR_MTXTOPAZFWTextSize,
    161                 ui32H263VBR_MTXTOPAZFWDataSize,
    162                 ui32H263VBR_MTXTOPAZFWDataLocation
    163             },
    164             aui32H263VBR_MTXTOPAZFWText,
    165             aui32H263VBR_MTXTOPAZFWData
    166         },
    167 
    168         {
    169             FW_H263_CBR,
    170             {
    171                 FW_VER,
    172                 FW_H263_CBR,
    173                 ui32H263CBR_MTXTOPAZFWTextSize,
    174                 ui32H263CBR_MTXTOPAZFWDataSize,
    175                 ui32H263CBR_MTXTOPAZFWDataLocation
    176             },
    177             aui32H263CBR_MTXTOPAZFWText,
    178             aui32H263CBR_MTXTOPAZFWData
    179         },
    180 
    181         {
    182             FW_MPEG4_NO_RC,
    183             {
    184                 FW_VER,
    185                 FW_MPEG4_NO_RC,
    186                 ui32MPG4_MTXTOPAZFWTextSize,
    187                 ui32MPG4_MTXTOPAZFWDataSize,
    188                 ui32MPG4_MTXTOPAZFWDataLocation
    189             },
    190             aui32MPG4_MTXTOPAZFWText,
    191             aui32MPG4_MTXTOPAZFWData
    192         },
    193 
    194         {
    195             FW_MPEG4_VBR,
    196             {
    197                 FW_VER,
    198                 FW_MPEG4_VBR,
    199                 ui32MPG4VBR_MTXTOPAZFWTextSize,
    200                 ui32MPG4VBR_MTXTOPAZFWDataSize,
    201                 ui32MPG4VBR_MTXTOPAZFWDataLocation
    202             },
    203             aui32MPG4VBR_MTXTOPAZFWText,
    204             aui32MPG4VBR_MTXTOPAZFWData
    205         },
    206 
    207         {
    208             FW_MPEG4_CBR,
    209             {
    210                 FW_VER,
    211                 FW_MPEG4_CBR,
    212                 ui32MPG4CBR_MTXTOPAZFWTextSize,
    213                 ui32MPG4CBR_MTXTOPAZFWDataSize,
    214                 ui32MPG4CBR_MTXTOPAZFWDataLocation
    215             },
    216             aui32MPG4CBR_MTXTOPAZFWText,
    217             aui32MPG4CBR_MTXTOPAZFWData
    218         }
    219     };
    220 
    221     /* open file  */
    222     fp = fopen(FW_FILE_NAME, "w");
    223 
    224     if (NULL == fp)
    225         return -1;
    226     /* write fw table into the file */
    227     while (iter < FW_NUM) {
    228         /* record the size use bytes */
    229         topaz_fw_table[iter].header.data_size *= 4;
    230         topaz_fw_table[iter].header.text_size *= 4;
    231 
    232         /* write header */
    233         fwrite(&(topaz_fw_table[iter].header), sizeof(topaz_fw_table[iter].header), 1, fp);
    234 
    235         /* write text */
    236         size = topaz_fw_table[iter].header.text_size;
    237         fwrite(topaz_fw_table[iter].fw_text, 1, size, fp);
    238 
    239         /* write data */
    240         size = topaz_fw_table[iter].header.data_size;
    241         fwrite(topaz_fw_table[iter].fw_data, 1, size, fp);
    242 
    243         ++iter;
    244     }
    245 
    246     /* close file */
    247     fclose(fp);
    248 
    249     return 0;
    250 }
    251