Subversion Repositories Kolibri OS

Rev

Rev 3068 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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