Subversion Repositories Kolibri OS

Rev

Rev 2693 | 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. {
  56.     CLOSED = 0,
  57.     PREPARE,
  58.     STOP,
  59.     PAUSE,
  60.     PLAY,
  61.     REWIND,
  62.     PLAY_2_STOP,
  63.     PLAY_2_PAUSE,
  64.     PAUSE_2_PLAY,
  65.     REWIND_2_PLAY,
  66. };
  67.  
  68. #define ID_PLAY             100
  69. #define ID_STOP             101
  70. #define ID_PROGRESS         102
  71. #define ID_VOL_LEVEL        103
  72. #define ID_VOL_CTRL         104
  73.  
  74. typedef struct
  75. {
  76.     volatile uint32_t   lock;
  77.     char               *buffer;
  78.     volatile uint32_t   count;
  79. }astream_t;
  80.  
  81. typedef struct
  82. {
  83.   unsigned int  code;
  84.   unsigned int  sender;
  85.   unsigned int  stream;
  86.   unsigned int  offset;
  87.   unsigned int  size;
  88.   unsigned int  unused[2];
  89. }SND_EVENT;
  90.  
  91. typedef struct
  92. {
  93.   unsigned      handle;
  94.   unsigned      io_code;
  95.   void          *input;
  96.   int           inp_size;
  97.   void          *output;
  98.   int           out_size;
  99. }ioctl_t;
  100.  
  101. typedef struct {
  102.     AVPacketList *first_pkt;
  103.     AVPacketList *last_pkt;
  104.     int size;
  105.     int count;
  106.     volatile uint32_t lock;
  107. } queue_t;
  108.  
  109. int put_packet(queue_t *q, AVPacket *pkt);
  110. int get_packet(queue_t *q, AVPacket *pkt);
  111.  
  112.  
  113. extern astream_t astream;
  114. extern AVRational video_time_base;
  115.  
  116. render_t *create_render(uint32_t width, uint32_t height,
  117.                         uint32_t ctx_format, uint32_t flags);
  118.  
  119. int init_render(render_t *render, int width, int height);
  120. void render_adjust_size(render_t *render, window_t *win);
  121. int render_set_size(render_t *render, int width, int height);
  122. void render_draw_client(render_t *render);
  123.  
  124.  
  125. int init_audio(int format);
  126. int audio_thread(void *param);
  127. void set_audio_volume(int left, int right);
  128.  
  129. int init_video(AVCodecContext *ctx);
  130. int video_thread(void *param);
  131.  
  132. int decode_video(AVCodecContext  *ctx, queue_t *qv);
  133. int decode_audio(AVCodecContext  *ctx, queue_t *qa);
  134.  
  135. double get_master_clock(void);
  136.  
  137.  
  138. int create_thread(int (*proc)(void *param), void *param, int stack_size);
  139.  
  140. void mutex_lock(volatile uint32_t *val);
  141.  
  142. static inline void mutex_unlock(volatile uint32_t *val)
  143. {
  144.     *val = 0;
  145. }
  146.  
  147. static inline void GetNotify(void *event)
  148. {
  149.     __asm__ __volatile__ (
  150.     "int $0x40"
  151.     ::"a"(68),"b"(14),"c"(event));
  152. }
  153.  
  154. static inline uint32_t get_os_button()
  155. {
  156.     uint32_t val;
  157.     __asm__ __volatile__(
  158.     "int $0x40"
  159.     :"=a"(val)
  160.     :"a"(17));
  161.     return val>>8;
  162. };
  163.  
  164. static inline void yield(void)
  165. {
  166.     __asm__ __volatile__(
  167.     "int $0x40"
  168.     ::"a"(68), "b"(1));
  169. };
  170.  
  171. static inline void delay(uint32_t time)
  172. {
  173.     __asm__ __volatile__(
  174.     "int $0x40"
  175.     ::"a"(5), "b"(time)
  176.     :"memory");
  177. };
  178.  
  179.  
  180.  
  181.  
  182. #define HW_BIT_BLIT         (1<<0)      /* BGRX blitter             */
  183. #define HW_TEX_BLIT         (1<<1)      /* stretch blit             */
  184. #define HW_VID_BLIT         (1<<2)      /* planar and packed video  */
  185.  
  186. uint32_t InitPixlib(uint32_t flags);
  187.  
  188. int create_bitmap(bitmap_t *bitmap);
  189. int lock_bitmap(bitmap_t *bitmap);
  190. int resize_bitmap(bitmap_t *bitmap);
  191. int blit_bitmap(bitmap_t *bitmap, int dst_x, int dst_y,
  192.                 int w, int h);
  193.  
  194. int init_fontlib();
  195.