machblue_defines.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:33k
源码类别:

DVD

开发平台:

C/C++

  1. /*-----------------------------------------------------------------------------
  2.  | @(#) machblue_defines.h
  3.  |
  4.  |  JSWF: The Portable SWF Engine For Embedded Devices,
  5.  |  Copyright (c) 2002-2006, BlueStreak Technology Inc., All Rights Reserved.
  6.  |
  7.  +----------------------------------------------------------------------------*/
  8. #ifndef _MACHBLUE_DEFINES_H_
  9. #define _MACHBLUE_DEFINES_H_
  10. /*----------------------------------------------------------
  11.  | Include definition below this line
  12.  +----------------------------------------------------------*/
  13. #include "machblue_customer.h"
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif /* __cplusplus */
  17. /*----------------------------------------------------------
  18.  | Macro definition below this line
  19.  +----------------------------------------------------------*/
  20. /** Machblue invalid handle */
  21. #define MB_INVALID_HANDLE       0
  22. /** Machblue maximum configuration string length */ 
  23. #define MB_CFG_MAX_STR_LENGTH   32
  24. /** Machblue maximum path name length */ 
  25. #define MB_MAX_PATH_LENGTH      96
  26. /** Machblue maximum arg structure entry count */
  27. #define MB_MAX_ARGS_COUNT       4
  28. /** Machblue url current version */
  29. #define MB_URL_CURRENT_VERSION  (-1)
  30. /** Machblue MB_EVENT_KEY_DOWN ascii code argument (int)
  31.  * @see MB_EVENT_KEY_DOWN 
  32.  * @see mb_key_constant_t
  33.  */
  34. #define MB_ASCII_CODE_ARG(args)          ((args)->arg[0].l)    
  35. /** Machblue MB_EVENT_KEY_DOWN key code argument (int)
  36.  * @see MB_EVENT_KEY_DOWN 
  37.  * @see mb_key_constant_t
  38.  */
  39. #define MB_KEY_CODE_ARG(args)            ((args)->arg[1].l)    
  40. /** Machblue MB_EVENT_INPUT_MOVE input device x position argument (int)
  41.  * @see  MB_EVENT_INPUT_MOVE
  42.  */
  43. #define MB_INPUT_X_ARG(args)             ((args)->arg[0].l)
  44. /** Machblue MB_EVENT_INPUT_MOVE input device y position argument (int)
  45.  * @see MB_EVENT_INPUT_MOVE 
  46.  */
  47. #define MB_INPUT_Y_ARG(args)             ((args)->arg[1].l)
  48. /** Machblue MB_EVENT_INPUT_MOVE input button id argument (mb_input_button_id_t)
  49.  * @see MB_EVENT_INPUT_MOVE 
  50.  * @see mb_input_button_id_t
  51.  */
  52. #define MB_INPUT_BUTTON_ARG(args)        ((args)->arg[0].l)
  53.     
  54. /** Machblue MB_EVENT_NATIVE platform dependent native event argument (void *)
  55.  * @see MB_EVENT_NATIVE 
  56.  */
  57. #define MB_NATIVE_EVENT_ARG(args)        ((args)->arg[0].vp)   
  58. /** Machblue MB_GFX_REDRAW_CB gfx rect pointer argument (mb_rect_t *)
  59.  * @see MB_GFX_REDRAW_CB
  60.  * @see mb_rect_t
  61.  */
  62. #define MB_GFX_RECT_ARG(args)            ((args)->arg[0].vp)
  63. /** Machblue MB_GFX_REDRAW_CB gfx_ctx surface argument (mb_surface_t)
  64.  * @see MB_GFX_REDRAW_CB
  65.  * @see mb_surface_t
  66.  */
  67. #define MB_GFX_SURFACE_ARG(args)         ((args)->arg[1].l)
  68. /** Machblue MB_GFX_REDRAW_CB gfx context arg (mb_gfx_ctx_t *)
  69.  * @see MB_GFX_REDRAW_CB
  70.  * @see mb_gfx_ctx_t
  71.  */
  72. #define MB_GFX_CTX_ARG(args)             ((args)->arg[2].vp)
  73. /** Machblue MB_GFX_SET_PALETTE_CB gfx start entry argument (int)
  74.  * @see MB_GFX_SET_PALETTE_CB
  75.  */
  76. #define MB_GFX_START_ENTRY_ARG(args)     ((args)->arg[0].l)
  77. /** Machblue MB_GFX_SET_PALETTE_CB gfx palette argument (mb_palette_t *)
  78.  * @see MB_GFX_SET_PALETTE_CB
  79.  * @see mb_palette_t
  80.  */
  81. #define MB_GFX_PALETTE_ARG(args)         ((args)->arg[1].vp)
  82. /** Machblue MB_NR_MOVIE_ATTACHED notification movie (mb_movie_t)
  83.  * @see MB_NR_MOVIE_ATTACHED
  84.  * @see mb_movie_t
  85.  */
  86. #define MB_NR_MOVIE_ARG(args)            ((args)->arg[0].vp)
  87. /** Machblue MB_NR_MOVIE_ATTACHED notification client (mb_client_t)
  88.  * @see MB_NR_MOVIE_ATTACHED
  89.  * @see mb_client_t
  90.  */
  91. #define MB_NR_CLIENT_ARG(args)           ((args)->arg[1].vp)
  92. /** Machblue MB_NR_MOVIE_ACTIVATED notification extra context (mb_activate_reason_t)
  93.  * @see MB_NR_MOVIE_ATTACHED
  94.  * @see mb_activate_reason_t
  95.  */
  96. #define MB_NR_ACTIVATE_REASON_ARG(args)  ((args)->arg[2].l)
  97. /** Machblue MB_NR_MOVIE_SUSPENDED notification extra context (mb_suspend_reason_t)
  98.  * @see MB_NR_MOVIE_SUSPENDED
  99.  * @see mb_suspend_reason_t
  100.  */
  101. #define MB_NR_SUSPEND_REASON_ARG(args)   ((args)->arg[2].l)
  102. /** Machblue MB_NR_MOVIE_ABORT notification extra context (mb_abort_reason_t)
  103.  * @see MB_NR_MOVIE_ABORT
  104.  * @see mb_abort_reason_t
  105.  */
  106. #define MB_NR_ABORT_REASON_ARG(args)     ((args)->arg[2].l)
  107. /** Machblue MB_NR_LC_SEND_COMPLETE notification extra context (mb_handle_t)
  108.  * @see MB_NR_LC_SEND_COMPLETE
  109.  * @see mb_handle_t
  110.  */
  111. #define MB_NR_LC_HANDLE(args)            ((args)->arg[2].l)
  112. /** Machblue MB_NR_LC_REQUEST notification extra context (mb_lc_attributes_t *)
  113.  * @see MB_NR_LC_SEND_COMPLETE
  114.  * @see mb_lc_attributes_t
  115.  */
  116. #define MB_NR_LC_ATTRIBUTES(args)        ((args)->arg[2].vp)
  117. /** Machblue MB_NR_LC_SEND_COMPLETE notification extra context (mb_error_t)
  118.  * @see MB_NR_LC_SEND_COMPLETE
  119.  * @see mb_error_t
  120.  */
  121. #define MB_NR_LC_STATUS(args)            ((args)->arg[3].l)
  122. /** Machblue MB_LS_SUCCESS load status movie (mb_movie_t)
  123.  * @see see MB_LS_SUCCESS
  124.  * @see mb_movie_t
  125.  */
  126. #define MB_LS_MOVIE_ARG(args)            ((args)->arg[0].vp)
  127. /** Machblue MB_URL_OPEN url argument (mb_char_t *) 
  128.  * @see MB_URL_OPEN
  129.  * @see mb_char_t
  130.  */
  131. #define MB_URL_ARG(args)                 ((args)->arg[0].vp)
  132. /** Machblue MB_URL_CLOSE url handle argument (mb_url_handle_t)
  133.  * @see MB_URL_CLOSE
  134.  * @see mb_url_handle_t
  135.  */
  136. #define MB_URL_HANDLE_ARG(args)          ((args)->arg[0].l)
  137. /** Machblue MB_URL_POLL url polled event argument (mb_url_event_t)
  138.  * @see MB_URL_POLL
  139.  * @see mb_url_event_t
  140.  */
  141. #define MB_URL_EVENT_ARG(args)           ((args)->arg[1].l)
  142.     
  143. /** Machblue MB_URL_STORE url data argument (void *)
  144.  * @see MB_URL_STORE
  145.  */
  146. #define MB_URL_DATA_ARG(args)            ((args)->arg[1].vp)
  147. /** Machblue MB_URL_STORE url data size argument (mb_size_t) 
  148.  * @see MB_URL_STORE
  149.  * @see mb_size_t
  150.  */
  151. #define MB_URL_SIZE_ARG(args)            ((args)->arg[2].l)
  152. /** Machblue MB_URL_GET_DATA url data size pointer argument (mb_size_t *) 
  153.  * @see MB_URL_GET_DATA
  154.  * @see mb_size_t
  155.  */
  156. #define MB_URL_SIZE_POINTER_ARG(args)    ((args)->arg[2].vp)
  157. /** Machblue MB_URL_GET_VERSION url version pointer argument (int *) 
  158.  * @see MB_URL_GET_VERSION
  159.  */
  160. #define MB_URL_VERSION_POINTER_ARG(args) ((args)->arg[2].vp)
  161. /** Machblue MB_PCM_PLAY_COMPLETED_CB pcm buffer argument (void *) 
  162.  * @see MB_PCM_PLAY_COMPLETED_CB
  163.  */
  164. #define MB_PCM_BUFFER_ARG(args)         ((args)->arg[0].vp)
  165. /*----------------------------------------------------------
  166.  | Type definition below this line
  167.  +----------------------------------------------------------*/
  168. /*
  169.  * ======================= Primitive Types ===========================================
  170.  */
  171. /** Machblue error type */
  172. typedef enum {
  173.     MB_FAILURE = 0,       /**< Machblue failure error code */
  174.     MB_SUCCESS = 1,       /**< Machblue success error code */
  175.     MB_NOT_INITIALIZED,   /**< Machblue not initialized error code */
  176.     MB_BUSY,              /**< Machblue busy error code */        
  177.     MB_NOT_A_DIRECTORY,   /**< Machblue not a directory error code */
  178.     MB_UNIMPLEMENTED,     /**< RESERVED for Machblue internal purposes -- DO NOT USE */
  179.     MB_LAST_ERROR_CODE 
  180. } mb_error_t;
  181. /** Machblue client type */
  182. typedef struct _mb_client_s * mb_client_t;
  183. /** Machblue movie type */
  184. typedef struct _mb_movie_s * mb_movie_t;
  185. /** Machblue handle type */
  186. typedef long mb_handle_t;
  187. /** Machblue script object type */
  188. typedef void mb_script_object_t;
  189. /** Machblue time type in seconds since 01/01/1970 UTC */
  190. typedef unsigned long mb_time_t;
  191. /** Machblue point type */
  192. typedef struct {
  193.     int x;  
  194.     int y;
  195. } mb_point_t;
  196. /** Machblue rectangle type */
  197. typedef struct {
  198.     int x;  
  199.     int y;
  200.     unsigned int width;
  201.     unsigned int height;
  202. } mb_rect_t;
  203. /** Machblue argument type */
  204. typedef union {
  205.     long  l;  /**< argument viewed as long */
  206.     void *vp; /**< argument viewed as void pointer */
  207. } mb_arg_t;
  208. /** Machblue argument array type */
  209. typedef struct {
  210.     mb_arg_t arg[MB_MAX_ARGS_COUNT];
  211. } mb_args_t;
  212. /** Machblue event structure type */
  213. typedef struct {
  214.     unsigned long type;
  215.     mb_arg_t      arg[MB_MAX_ARGS_COUNT];
  216. } mb_event_t;
  217. /** machblue event types enum */
  218. typedef enum {
  219.     MB_EVENT_NULL     = 0,  /**< NULL event */
  220.     MB_EVENT_KEY_DOWN,      /**< key down event. 
  221.                                     MB_ASCII_CODE_ARG(event) = ascii code of key pressed 
  222.                                     MB_KEY_CODE_ARG(event)   = key code of key pressed */
  223.     MB_EVENT_KEY_UP,        /**< key up event. 
  224.                                     MB_ASCII_CODE_ARG(event) = ascii code of key pressed 
  225.                                     MB_KEY_CODE_ARG(event)   = key code of key pressed */
  226.     MB_EVENT_KEY_REPEAT,    /**< key repeat event.
  227.                                     MB_ASCII_CODE_ARG(event) = ascii code of key pressed 
  228.                                     MB_KEY_CODE_ARG(event)   = key code of key pressed */
  229.     MB_EVENT_INPUT_MOVE,    /**< INPUT move event. 
  230.                                     MB_INPUT_X_ARG(event)    = x position of input device relative
  231.                                                                to gfx ctx bounds,
  232.                                     MB_INPUT_Y_ARG(event)    = y position of input device relative 
  233.                                                                to gfx ctx bounds */
  234.     MB_EVENT_INPUT_DOWN,    /**< INPUT down event.
  235.                                     MB_INPUT_BUTTON_ARG(event) = ID of the button pressed.  */
  236.     MB_EVENT_INPUT_UP,      /**< INPUT up event.
  237.                                     MB_INPUT_BUTTON_ARG(event) = ID of the button released. */
  238.     MB_EVENT_NATIVE,        /**< native event.
  239.                                     MB_NATIVE_EVENT_ARG(event) = pointer to platform dependent 
  240.                                                                  native event */
  241.     MB_EVENT_LAST
  242. } mb_event_type_t;
  243. /*
  244.  * ======================= Client API Types ===========================================
  245.  */
  246. /** Machblue rgba color type */
  247. typedef struct {
  248.     unsigned char r;   /**< red component */
  249.     unsigned char g;   /**< green component */
  250.     unsigned char b;   /**< blue component */
  251.     unsigned char a;   /**< alpha component */
  252. } mb_rgba_color_t;
  253. /** Machblue palette type */
  254. typedef struct {
  255.     mb_rgba_color_t *colors; /**< color entries */
  256.     int              count;  /**< number of colors in palette */
  257. } mb_palette_t;
  258. /** Machblue graphic callback function reason enum */
  259. typedef enum {
  260.     MB_GFX_REDRAW_CB,       /**< invoked when a gfx redraw is needed. 
  261.                                     MB_GFX_RECT_ARG(args)    = pointer to the mb_rect to redraw 
  262.                                     MB_GFX_SURFACE_ARG(args) = pointer to the client provided 
  263.                                                                gfx_ctx surface
  264.                                     MB_GFX_CTX_ARG(arg)      = pointer to the client provided gfx_ctx */
  265.     MB_GFX_SET_PALETTE_CB,  /**< invoked when a new palette need to be set (only on CLUT based systems)
  266.                                     MB_GFX_START_ENTRY_ARG(args) = integer containg the starting 
  267.                                                                    entry number
  268.                                     MB_GFX_PALETTE_ARG(args)     = pointer to an mb_palette_t structure 
  269.                                                                    containing the palette to set
  270.                                     MB_GFX_CTX_ARG(arg)          = pointer to the client provided gfx_ctx */
  271.     MB_GFX_LAST_CB
  272. } mb_gfx_cb_reason_t;
  273. /** Machblue graphic callback function */
  274. typedef mb_error_t (mb_gfx_callback_f)( mb_gfx_cb_reason_t reason, mb_args_t *args, void *client_data );
  275. /** Machblue graphic context type */
  276. typedef struct {
  277.     mb_surface_t       surface;         /**< graphic surface to draw to */
  278.     mb_rect_t          bounds;          /**< graphic context bounds on the physical display */
  279.     mb_gfx_callback_f *callback_f;      /**< graphic callback function */
  280.     void              *cb_client_data;  /**< callback client data */
  281. } mb_gfx_ctx_t;
  282. /** Machblue sound context type */
  283. typedef struct {
  284.     mb_pcm_engine_t    pcm_engine;       /**< pcm engine to playback sound too */
  285. } mb_sound_ctx_t;
  286. /** Machblue client notification reasons */
  287. typedef enum {
  288.     MB_NR_MOVIE_ATTACHED,     /**< movie attached notification reason 
  289.                                     MB_NR_MOVIE_ARG(args) = movie handle attached 
  290.                                     MB_NR_CLIENT_ARG(args)= client handle */
  291.     MB_NR_MOVIE_DETACHED,     /**< movie detached notification reason 
  292.                                     MB_NR_MOVIE_ARG(args) = movie handle detached
  293.                                     MB_NR_CLIENT_ARG(args)= client handle */
  294.     MB_NR_MOVIE_ACTIVATED,    /**< movie activated notification reason 
  295.                                     MB_NR_MOVIE_ARG(args)           = movie handle activated
  296.                                     MB_NR_CLIENT_ARG(args)          = client handle
  297.                                     MB_NR_ACTIVATE_REASON_ARG(args) = movie activate reason */
  298.     MB_NR_MOVIE_SUSPENDED,    /**< movie suspended notification reason
  299.                                     MB_NR_MOVIE_ARG(args)          = movie handle suspended
  300.                                     MB_NR_CLIENT_ARG(args)         = client handle
  301.                                     MB_NR_SUSPEND_REASON_ARG(args) = movie suspend reason */
  302.     MB_NR_LC_SEND_COMPLETE,   /**< movie local connection completed notification reason 
  303.                                     MB_NR_MOVIE_ARG(args)  = target movie handle
  304.                                     MB_NR_CLIENT_ARG(args) = client handle
  305.                                     MB_NR_LC_HANDLE(args)  = local connection handle
  306.                                     MB_NR_LC_STATUS(args)  = MB_SUCCESS if target could be invoked,
  307.                                                              MB_FAILURE otherwise */
  308.     MB_NR_LC_REQUEST,         /**< movie local connection request notification reason 
  309.                                     MB_NR_MOVIE_ARG(args)     = movie handle sending the request
  310.                                     MB_NR_CLIENT_ARG(args)    = client handle
  311.                                     MB_NR_LC_ATTRIBUTES(args) = local connection attributes */
  312.     MB_NR_MOVIE_ABORT,        /**< movie error notification reason 
  313.                                     MB_NR_MOVIE_ARG(args)        = movie handle aborted 
  314.                                     MB_NR_CLIENT_ARG(args)       = client handle 
  315.                                     MB_NR_ABORT_REASON_ARG(args) = movie abort reason  */
  316.     MB_NR_LAST
  317. } mb_notif_reason_t;
  318. /** Machblue client notification function */
  319. typedef mb_error_t (mb_client_notify_f)( mb_notif_reason_t reason, mb_args_t *args, void *client_data );
  320. /** Machnlue load notification status */
  321. typedef enum {
  322.     MB_LS_FAILURE = 0,   /**< load failure notification
  323.                               MB_LS_MOVIE_ARG(args) = movie handle that could not be loaded */
  324.     MB_LS_SUCCESS,       /**< load success notification 
  325.                               MB_LS_MOVIE_ARG(args) = movie handle that was successfully loaded */
  326.     MB_LS_LAST
  327. } mb_load_status_t;
  328. /** Machblue load notification function */
  329. typedef mb_error_t (mb_load_notify_f)( mb_load_status_t status, mb_args_t *args, void *client_data );
  330. /** Machblue movie info type */
  331. typedef struct {
  332.     const mb_char_t *url;        /**< SWF url given at movie handle creation */
  333.     unsigned int     version;    /**< version of SWF format used*/
  334.     unsigned int     height;     /**< height of the movie */
  335.     unsigned int     width;      /**< width of the movie */
  336.     unsigned int     frame_rate; /**< frame rate used in the movie */
  337. } mb_movie_info_t;
  338. /** Machblue parameter type */
  339. typedef struct {
  340.     const mb_char_t *name;  /**< parameter name */
  341.     const mb_char_t *value; /**< parameter value */
  342. } mb_param_t;
  343. /** Machblue Local Connection request attributes */
  344. typedef struct {
  345.     const mb_char_t  *connection;  /**< connection name (excluding domain) */
  346.     const mb_char_t  *function;    /**< function name */
  347.     mb_param_t       *parameters;  /**< function parameters */
  348. } mb_lc_attributes_t;
  349. /** Machblue movie activation reasons */
  350. typedef enum {
  351.     MB_AR_INITIAL,  /**< initial activation reason */
  352.     MB_AR_RESUME,   /**< resume activation reason */
  353.     MB_AR_SYSTEM,   /**< system activation reason */
  354.     MB_AR_INTERNAL, /**< internal activation reason: used only in
  355.                          mb_client_notify_f; do not use in
  356.                          mb_movie_activate(). Another movie has been suspended
  357.                          and the client's activation engine automatically
  358.                          reactivated this movie. */
  359.     MB_AR_LAST
  360. } mb_activate_reason_t;
  361. /** Machblue movie suspend reasons */
  362. typedef enum {
  363.     MB_SR_UNKNOWN,       /**< unknown suspend reason */
  364.     MB_SR_SYSTEM,        /**< system suspend reason */
  365.     MB_SR_QUIT,          /**< movie quit suspend reason */
  366.     MB_SR_INTERNAL,      /**< internal suspend reason: used only in
  367.                               mb_client_notify_f; do not use in mb_movie_suspend().
  368.                               Another movie has been activated and the client's
  369.                               activation engine decided to suspended this movie. It
  370.                               will be automatically reactivated with MB_AR_INTERNAL
  371.                               when the other movie quits or is suspended. To
  372.                               prevent this reactivation, invoke mb_movie_suspend()
  373.                               with another reason. */
  374.     MB_SR_LAST
  375. } mb_suspend_reason_t;
  376. /** Machblue movie abort reasons */
  377. typedef enum {
  378.     MB_ABR_INIT_FAILED,           /**< movie initialization failed abort reason */
  379.     MB_ABR_OUT_OF_MEMORY,         /**< movie out of memory abort reason */
  380.     MB_ABR_NOT_RESPONDING,        /**< movie not responding abort reason */
  381.     MB_ABR_UNKNOWN_FATAL_ERROR,   /**< unknown fatal error abort reason */
  382.     MB_ABR_SYSTEM_SHUTDOWN,       /**< player is going down abort reason */
  383.     MB_ABR_LAST
  384. } mb_abort_reason_t;
  385. /**
  386.  * Machblue key constants enumeration lists all non-ascii keys directly supported.  
  387.  * in flash
  388.  */
  389. typedef enum {
  390.    MB_KEY_BACKSPACE  = 0x00000008,    /**<  The BACKSPACE key. */
  391.    MB_KEY_TAB        = 0x00000009,    /**< The TAB key.   */
  392.    MB_KEY_SELECT     = 0x0000000D,    /**< The selection key.  This can be enter or some other primary action key. */
  393.    MB_KEY_SHIFT      = 0x00000010,    /**< The SHIFT key.    */
  394.    MB_KEY_CONTROL    = 0x00000011,    /**< The CONTROL key.  */
  395.    MB_KEY_CAPSLOCK   = 0x00000014,    /**< The CAPSLOCK key. */
  396.    MB_KEY_ESCAPE     = 0x0000001B,    /**< The ESCAPE key.   */
  397.    MB_KEY_SPACE      = 0x00000020,    /**< The DELETE key.   */
  398.    MB_KEY_PAGE_UP    = 0x00000021,    /**< The key that represents a page up scrolling action. */
  399.    MB_KEY_PAGE_DOWN  = 0x00000022,    /**< The key that represents a page down scrolling action. */
  400.    MB_KEY_END        = 0x00000023,    /**< The END key. */
  401.    MB_KEY_HOME       = 0x00000024,    /**< The HOME key. */
  402.    MB_KEY_LEFT       = 0x00000025,    /**< The left navigation key. */
  403.    MB_KEY_UP         = 0x00000026,    /**< The up navigation key. */
  404.    MB_KEY_RIGHT      = 0x00000027,    /**< The right navigation key. */
  405.    MB_KEY_DOWN       = 0x00000028,    /**< The down navigation key. */
  406.    MB_KEY_INSERT     = 0x0000002D,    /**< The INSERT key. */
  407.    MB_KEY_DELETE     = 0x0000002E,    /**< The DELETE key. */
  408.    MB_KEY_LAST
  409. } mb_key_constant_t;
  410. /**
  411.  * Machblue input button id enum type
  412.  */
  413. typedef enum {
  414.     MB_INPUT_BUTTON_LEFT = 0,   /**< Input left button id  */
  415.     MB_INPUT_BUTTON_RIGHT,      /**< Input right button id  */
  416.     MB_INPUT_BUTTON_CENTER,     /**< Input center button id  */
  417.     MB_INPUT_BUTTON_LAST
  418. } mb_input_button_id_t;
  419. /*
  420.  * ======================= Init API Types ===========================================
  421.  */
  422. /** Machblue memory allocation config */
  423. typedef struct {
  424.     void          *initial_mem_block;       /**< initial memory block to use for heap alocations, may be NULL */
  425.     unsigned long  imb_size;                /**< initial memory block size */
  426.     int            is_growable;             /**< 1 if heap can grow beyond initial block, 0 otherwise */
  427.     unsigned long  min_heap_increment;      /**< minimum heap size increment */
  428. } mb_memory_config_t;
  429. /** Machblue video memory config */
  430. typedef struct {
  431.     unsigned int max_mem_per_movie;       /**< maximum amount of video memory available 
  432.                                                to a movie besides primary surface mem */
  433.     unsigned int min_alloc_sys_mem_limit; /**< minimum amount of system memory below which
  434.                                                new video buffer allocation should be denied */
  435. } mb_video_memory_config_t;
  436. /** Machblue registry config */
  437. typedef struct {
  438.     mb_char_t    root_path[MB_CFG_MAX_STR_LENGTH]; /**< default filesystem root dir location */
  439.     unsigned int lifetime;                         /**< default file lifetime in seconds*/
  440. } mb_registry_config_t;
  441. /** Machblue http config */
  442. typedef struct {
  443.     mb_char_t    user_agent[MB_CFG_MAX_STR_LENGTH]; /**< http client user agent */
  444.     unsigned int timeout;                           /**< default connectivity timeout in milliseconds */
  445. } mb_http_config_t;
  446. /** Machblue system information config */
  447. typedef struct {
  448.    mb_char_t network_name[MB_CFG_MAX_STR_LENGTH];          /**< name of the network integrating
  449.                                                                 MachBlue player */
  450.    mb_char_t manufacturer_name[MB_CFG_MAX_STR_LENGTH];     /**< hardware manufacturer for the
  451.                                                                 set-top box */
  452.    mb_char_t model_name[MB_CFG_MAX_STR_LENGTH];            /**< model number of the set-top box */
  453.    mb_char_t os_middleware_name[MB_CFG_MAX_STR_LENGTH];    /**< name of the OS or middleware on
  454.                                                                 top of which the porting layer is
  455.                                                                 built */
  456.    mb_char_t os_middleware_version[MB_CFG_MAX_STR_LENGTH]; /**< version of the os/middleware */
  457.    mb_char_t porting_layer_version[MB_CFG_MAX_STR_LENGTH]; /**< version of the porting layer */
  458. } mb_system_info_config_t;
  459. /** Machblue config structure */
  460. typedef struct {
  461.     mb_size_t                 size;             /**< config structure size */
  462.     mb_memory_config_t        memory;           /**< memory allocation config */
  463.     mb_video_memory_config_t  video_memory;     /**< video memory config  */
  464.     mb_registry_config_t      registry;         /**< registry config */
  465.     mb_http_config_t          http;             /**< http config */
  466.     mb_system_info_config_t   system_info;      /**< system info config */
  467.     void                     *reserved;         /**< reserved (do not modify) */
  468.     void                     *init_client_data; /**< platform specific init client data to pass to
  469.                                                      mb_porting_layer_init */
  470. } mb_init_config_t;
  471. /** Machblue url handler event */
  472. typedef enum {
  473.     MB_URL_EVENT_LOAD_COMPLETE,        /**< Load complete event */
  474.     MB_URL_EVENT_STORE_COMPLETE,       /**< Store complete event */
  475.     MB_URL_EVENT_TRANSACTION_COMPLETE, /**< Trasaction complete event */
  476.     MB_URL_EVENT_ERROR,                /**< Error condition event */
  477.     MB_URL_EVENT_LAST
  478. } mb_url_event_t;
  479. /** Machblue url handler function reason enum */
  480. typedef enum {
  481.     MB_URL_OPEN,        /**< url open call: This is used by the player to open a new url.
  482.                                             MB_URL_ARG(args) contains the url to open.
  483.                                             MB_URL_VERSION_ARG(args) contains the version of the url
  484.                                                                      to open. This is only relevant for 
  485.                                                                      schemes that support versioning 
  486.                                                                      (broadcast carousels, etc.)
  487.                              returns a valid mb_url_handle_t on success or MB_INVALID_URL_HANDLE 
  488.                              on failure */
  489.     MB_URL_CLOSE,       /**< url close call: This is used by the player to close a previously opened 
  490.                                              handle.
  491.                                             MB_URL_HANDLE_ARG(args) contains a url handle to close.
  492.                              returns MB_SUCCESS on success, MB_FAILURE on failure */
  493.     MB_URL_LOAD,        /**< url load call: This is used by the player to start the asynchronous loading
  494.                                             process of a url handle.
  495.                                             MB_URL_HANDLE_ARG(args) contains a url handle to load.
  496.                              returns MB_SUCCESS on success, MB_FAILURE on failure */
  497.     MB_URL_STORE,       /**< url store call: This is used by the player to store data at a given url.
  498.                                             MB_URL_HANDLE_ARG(args) contains url handle to store,
  499.                                             MB_URL_DATA_ARG(args) contains the data to store,
  500.                                             MB_URL_SIZE_ARG(args) contains the size of the data to store.
  501.                              returns MB_SUCCESS on success, MB_FAILURE on failure */
  502.     MB_URL_TRANSACT,    /**< url transact call: This is used by the player to transact with a server at
  503.                                             a given url. For HTTP schemes this corresponds to the POST method.
  504.                                             MB_URL_HANDLE_ARG(args) contains url handle to transact on,
  505.                                             MB_URL_DATA_ARG(args) contains the data to send for the transaction,
  506.                                             MB_URL_SIZE_ARG(args) contains the size of the transaction data.
  507.                              returns MB_SUCCESS on success, MB_FAILURE on failure */
  508.     MB_URL_POLL,        /**< url poll call: This is used by the player to poll the state of a url handle.
  509.                                             MB_URL_HANDLE_ARG(args) contains the url handle to poll.
  510.                                             MB_URL_EVENT_ARG(args) contains the url event to poll for.
  511.                              returns MB_SUCCESS if the event condition polled for is current, MB_FAILURE 
  512.                              otherwise. */
  513.     MB_URL_GET_DATA,    /**< url get_data call: This is used by the player to retrieve data from a url handle.
  514.                                             MB_URL_HANDLE_ARG(args) contains url handle to get data from,
  515.                                             MB_URL_SIZE_POINTER_ARG(args) contains pointer to data size.
  516.                              returns a pointer to url handle data on success, NULL on failure. */
  517.     MB_URL_GET_VERSION, /**< url get_version call: This is used by the player to retrieve the version of a url handle.
  518.                                             MB_URL_HANDLE_ARG(args) contains url handle to query,
  519.                                             MB_URL_VERSION_POINTER_ARG(args) contains a pointer to version int to update.
  520.                              returns MB_SUCCESS on success, MB_FAILURE on failure. */
  521.     MB_URL_LAST_REASON
  522. } mb_url_handler_reason_t;
  523. /** Machblue url handler function */
  524. typedef unsigned long (mb_url_handler_f)( mb_url_handler_reason_t reason, mb_args_t *args, void *client_data );
  525. /*
  526.  * ======================= Porting Core API Types ===========================================
  527.  */
  528. /** Machblue timer callback function */
  529. typedef mb_error_t (mb_timer_callback_f)( void *client_data );
  530. /** Machblue socket types */
  531. typedef enum {
  532.     MB_SOCKET_TYPE_STREAM,    /**< TCP socket type */
  533.     MB_SOCKET_TYPE_DATAGRAM,  /**< UDP socket type */
  534.     MB_SOCKET_TYPE_LAST 
  535. } mb_socket_type_t;
  536. /** Machblue socket event */
  537. typedef enum {
  538.     MB_SOCKET_EVENT_DATA_IN,  /**< Data available for read event */
  539.     MB_SOCKET_EVENT_DATA_OUT, /**< Space available for non-blocking write event */
  540.     MB_SOCKET_EVENT_ERROR,    /**< Error condition event */
  541.     MB_SOCKET_EVENT_LAST
  542. } mb_socket_event_t;
  543. /** Machblue directory entry type */
  544. typedef struct {
  545.     mb_char_t  name[MB_MAX_PATH_LENGTH]; /**< directory entry name */   
  546.     long       reserved;                 /**< reserved for future use */
  547. } mb_dir_entry_t;
  548. /** Machblue pixel format */
  549. typedef enum {
  550.     MB_CLUT8_FORMAT,    /**< CLUT 8 format */
  551.     MB_ALPHA_FORMAT,    /**< 8 bits alpha plane format */
  552.     MB_RGB565_FORMAT,   /**< RGB 565 format */
  553.     MB_ARGB4444_FORMAT, /**< ARGB 4444 format */
  554.     MB_ARGB1555_FORMAT, /**< ARGB 1555 format */
  555.     MB_ARGB8888_FORMAT, /**< ARGB 8888 format */
  556.     MB_LAST_PIXEL_FORMAT
  557. } mb_pixel_format_t;
  558. /** Machblue blit options */
  559. typedef enum {
  560.     MB_BLIT_COPY,         /**< blit the content of the source to the destination without applying 
  561.                                any transformation (direct copy) */
  562.     MB_BLIT_TRANSPARENT,  /**< blit the content of the source to the destination by applying
  563.                                any relevant transparency transformation (color keying or alpha)
  564.                                between the source pixels and the destination pixels */
  565.     MB_LAST_BLIT
  566. } mb_blit_option_t;
  567. /**< Machblue PCM format */
  568. typedef enum {
  569.     MB_PCM8_FORMAT,      /**< 8 bits per sample PCM format */
  570.     MB_PCM16_FORMAT,     /**< 16 bits per sample PCM format (little endian) */
  571.     MB_ADPCM8_FORMAT,    /**< 8 bits per sample ADPCM format */
  572.     MB_ADPCM16_FORMAT,   /**< 16 bits per sample ADPCM format (little endian) */
  573.     MB_LAST_PCM_FORMAT   
  574. } mb_pcm_format_t;
  575. /** Machblue PCM callback function reason enum */
  576. typedef enum {
  577.     MB_PCM_PLAY_COMPLETED_CB, /**< invoked when a pcm sample buffer sent for playback has been consumed. 
  578.                                     MB_PCM_BUFFER_ARG(args) is a pointer to the sample buffer that has
  579.                                     been consumed */
  580.     MB_PCM_LAST_CB
  581. } mb_pcm_cb_reason_t;
  582. /** Machblue PCM callback function */
  583. typedef mb_error_t (mb_pcm_callback_f)( mb_pcm_cb_reason_t reason, mb_args_t *sample_buffer, void *client_data );
  584. /** Machblue system time type */
  585. typedef struct {
  586.     unsigned long sec;       /**< seconds since 01/01/1970 UTC */
  587.     long          nanosec;   /**< nanoseconds since previous second */
  588. } mb_system_time_t;
  589. /** Machblue time zone type */
  590. typedef struct {
  591.    int     daylight;      /**< 1 if daylight saving is enabled, 0 otherwise */
  592.    long    offset;        /**< offset in seconds from UTC */
  593. } mb_timezone_t;
  594. /** Machblue thread attributes type */
  595. typedef struct {
  596.     mb_size_t            stack_size;   /**< thread stack size in bytes. If 0 the default system 
  597.                                             stack value should be used */
  598.     mb_thread_priority_t priority;     /**< thread priority (system dependant) */
  599. } mb_thread_attributes_t ;
  600. /** Machblue message type */
  601. typedef mb_event_t mb_message_t ;
  602. /** Machblue thread start function */
  603. typedef void (mb_thread_start_function_t)( void *arg );
  604. /** Machblue font style function */
  605. typedef enum {
  606.     MB_FONT_STYLE_DEFAULT = 0,   /**< normal font style */
  607.     MB_FONT_STYLE_BOLD    = 0x1, /**< bold font style */
  608.     MB_FONT_STYLE_ITALIC  = 0x2, /**< italic font style */
  609.     MB_FONT_STYLE_LAST      
  610. } mb_font_style_t;
  611. /** Machblue file statistics structure */
  612. typedef struct {
  613.     mb_size_t  size;            /**< file size in bytes */
  614.     mb_time_t  creation_date;   /**< file creation date in seconds since 01/01/1970 UTC if supported.
  615.                                      Should be set to 0 otherwise. */
  616.     mb_time_t  access_date;     /**< file last access date in seconds since 01/01/1970 UTC if supported.
  617.                                      Sould be set 0 otherwise. */
  618.     mb_time_t  expiration_date; /**< file expiration date in seconds since 01/01/1970 UTC. This is
  619.                                      the date at which the file will automatically be deleted from
  620.                                      the filesystem if any. Should be set to 0 otherwise. */
  621. } mb_file_stats_t;
  622. /*----------------------------------------------------------
  623.  | Functions definition below this line
  624.  +----------------------------------------------------------*/
  625. #ifdef __cplusplus
  626. }      /* extern "C" */  
  627. #endif /* __cplusplus */
  628. #endif /* _BLUESTREAK_DEFINES_H_ */