Subversion Repositories Kolibri OS

Rev

Rev 2415 | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. #define BLACK_MAGIC_SOUND
  3. #define BLACK_MAGIC_VIDEO
  4.  
  5. typedef unsigned int color_t;
  6. typedef unsigned int count_t;
  7.  
  8. typedef struct
  9. {
  10.     uint32_t    width;
  11.     uint32_t    height;
  12.     uint32_t    pitch;
  13.     uint32_t    handle;
  14.     uint8_t    *data;
  15. }bitmap_t;
  16.  
  17. typedef struct render  render_t;
  18.  
  19. #define HAS_LEFT        (1<<0)
  20. #define HAS_TOP         (1<<1)
  21. #define HAS_RIGHT       (1<<2)
  22. #define HAS_BOTTOM      (1<<3)
  23.  
  24. struct render
  25. {
  26.     uint32_t   caps;
  27.     uint32_t   ctx_width;
  28.     uint32_t   ctx_height;
  29.     uint32_t   win_width;
  30.     uint32_t   win_height;
  31.  
  32.     rect_t     rc_client;
  33.     rect_t     rcvideo;
  34.     rect_t     rcleft;
  35.     rect_t     rctop;
  36.     rect_t     rcright;
  37.     rect_t     rcbottom;
  38.  
  39.     uint32_t   layout;
  40.     bitmap_t   bitmap[4];
  41.     bitmap_t  *last_bitmap;
  42.    
  43.     uint32_t   ctx_format;
  44.     int        target;
  45.    
  46.     window_t   *win;
  47.     enum{
  48.       EMPTY, INIT }state;
  49.     enum win_state win_state;
  50.  
  51.     void (*draw)(render_t *render, AVPicture *picture);
  52. };
  53.  
  54. enum player_state
  55. {  CLOSED=0, STOP, PLAY_RESTART, PLAY, PAUSE, REWIND };
  56.  
  57. #define ID_PLAY    100
  58.  
  59. typedef struct
  60. {
  61.     volatile uint32_t   lock;
  62.     char               *buffer;
  63.     volatile uint32_t   count;
  64. }astream_t;
  65.  
  66. typedef struct
  67. {
  68.   unsigned int  code;
  69.   unsigned int  sender;
  70.   unsigned int  stream;
  71.   unsigned int  offset;
  72.   unsigned int  size;
  73.   unsigned int  unused[2];
  74. }SND_EVENT;
  75.  
  76. typedef struct
  77. {
  78.   unsigned      handle;
  79.   unsigned      io_code;
  80.   void          *input;
  81.   int           inp_size;
  82.   void          *output;
  83.   int           out_size;
  84. }ioctl_t;
  85.  
  86. typedef struct {
  87.     AVPacketList *first_pkt;
  88.     AVPacketList *last_pkt;
  89.     int size;
  90.     int count;
  91.     volatile uint32_t lock;
  92. } queue_t;
  93.  
  94. int put_packet(queue_t *q, AVPacket *pkt);
  95. int get_packet(queue_t *q, AVPacket *pkt);
  96.  
  97.  
  98. extern astream_t astream;
  99. extern AVRational video_time_base;
  100.  
  101. render_t *create_render(uint32_t width, uint32_t height,
  102.                         uint32_t ctx_format, uint32_t flags);
  103.  
  104. int init_render(render_t *render, int width, int height);
  105. void render_adjust_size(render_t *render, window_t *win);
  106. int render_set_size(render_t *render, int width, int height);
  107. void render_draw_client(render_t *render);
  108.  
  109.  
  110. int init_audio(int format);
  111. int audio_thread(void *param);
  112.  
  113. int init_video(AVCodecContext *ctx);
  114. int video_thread(void *param);
  115.  
  116. int decode_video(AVCodecContext  *ctx, queue_t *qv);
  117. int decode_audio(AVCodecContext  *ctx, queue_t *qa);
  118.  
  119. double get_master_clock(void);
  120.  
  121.  
  122. int create_thread(int (*proc)(void *param), void *param, int stack_size);
  123.  
  124. void mutex_lock(volatile uint32_t *val);
  125.  
  126. static inline void mutex_unlock(volatile uint32_t *val)
  127. {
  128.     *val = 0;
  129. }
  130.  
  131. static inline void GetNotify(void *event)
  132. {
  133.     __asm__ __volatile__ (
  134.     "int $0x40"
  135.     ::"a"(68),"b"(14),"c"(event));
  136. }
  137.  
  138. static inline uint32_t get_os_button()
  139. {
  140.     uint32_t val;
  141.     __asm__ __volatile__(
  142.     "int $0x40"
  143.     :"=a"(val)
  144.     :"a"(17));
  145.     return val>>8;
  146. };
  147.  
  148. static inline void yield(void)
  149. {
  150.     __asm__ __volatile__(
  151.     "int $0x40"
  152.     ::"a"(68), "b"(1));
  153. };
  154.  
  155. static inline void delay(uint32_t time)
  156. {
  157.     __asm__ __volatile__(
  158.     "int $0x40"
  159.     ::"a"(5), "b"(time));
  160. };
  161.  
  162.  
  163.  
  164.  
  165. #define HW_BIT_BLIT         (1<<0)      /* BGRX blitter             */
  166. #define HW_TEX_BLIT         (1<<1)      /* stretch blit             */
  167. #define HW_VID_BLIT         (1<<2)      /* planar and packed video  */
  168.  
  169. uint32_t InitPixlib(uint32_t flags);
  170.  
  171. int create_bitmap(bitmap_t *bitmap);
  172. int lock_bitmap(bitmap_t *bitmap);
  173. int resize_bitmap(bitmap_t *bitmap);
  174. int blit_bitmap(bitmap_t *bitmap, int dst_x, int dst_y,
  175.                 int w, int h);
  176.  
  177.  
  178.