Subversion Repositories Kolibri OS

Rev

Rev 5592 | Rev 6106 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1.  
  2. #include "pixlib3.h"
  3. #include <libsync.h>
  4.  
  5. #define BLACK_MAGIC_SOUND
  6. #define BLACK_MAGIC_VIDEO
  7.  
  8. typedef unsigned int color_t;
  9. typedef unsigned int count_t;
  10.  
  11. typedef struct render  render_t;
  12.  
  13. #define HAS_LEFT        (1<<0)
  14. #define HAS_TOP         (1<<1)
  15. #define HAS_RIGHT       (1<<2)
  16. #define HAS_BOTTOM      (1<<3)
  17.  
  18. struct render
  19. {
  20.     uint32_t   caps;
  21.     uint32_t   ctx_width;
  22.     uint32_t   ctx_height;
  23.     uint32_t   win_width;
  24.     uint32_t   win_height;
  25.  
  26.     rect_t     rc_client;
  27.     rect_t     rcvideo;
  28.     rect_t     rcleft;
  29.     rect_t     rctop;
  30.     rect_t     rcright;
  31.     rect_t     rcbottom;
  32.  
  33.     uint32_t   layout;
  34.     bitmap_t  *bitmap[4];
  35.     bitmap_t  *last_bitmap;
  36.  
  37.     uint32_t   ctx_format;
  38.     int        target;
  39.  
  40.     window_t   *win;
  41.     enum{
  42.       EMPTY, INIT }state;
  43.     enum win_state win_state;
  44.  
  45.     void (*draw)(render_t *render, AVPicture *picture);
  46. };
  47.  
  48. enum player_state
  49. {
  50.     CLOSED = 0,
  51.     PREPARE,
  52.     STOP,
  53.     PAUSE,
  54.     PLAY,
  55.     REWIND,
  56.     PLAY_2_STOP,
  57.     PLAY_2_PAUSE,
  58.     PAUSE_2_PLAY,
  59.     REWIND_2_PLAY,
  60. };
  61.  
  62. #define ID_PLAY             100
  63. #define ID_STOP             101
  64. #define ID_PROGRESS         102
  65. #define ID_VOL_LEVEL        103
  66. #define ID_VOL_CTRL         104
  67.  
  68.  
  69. typedef struct
  70. {
  71.     mutex_t lock;
  72.     char    *buffer;
  73.     int     count;
  74. }astream_t;
  75.  
  76. typedef struct
  77. {
  78.   unsigned int  code;
  79.   unsigned int  sender;
  80.   unsigned int  stream;
  81.   unsigned int  offset;
  82.   unsigned int  size;
  83.   unsigned int  unused[2];
  84. }SND_EVENT;
  85.  
  86.  
  87. typedef struct {
  88.     AVPacketList *first_pkt;
  89.     AVPacketList *last_pkt;
  90.     int size;
  91.     int count;
  92.     mutex_t             lock;
  93. } queue_t;
  94.  
  95. int put_packet(queue_t *q, AVPacket *pkt);
  96. int get_packet(queue_t *q, AVPacket *pkt);
  97.  
  98.  
  99. #define DECODER_THREAD  1
  100. #define AUDIO_THREAD    2
  101. #define VIDEO_THREAD    4
  102.  
  103. extern int threads_running;
  104. extern astream_t astream;
  105. extern AVRational video_time_base;
  106.  
  107. render_t *create_render(window_t *win, AVCodecContext *ctx, uint32_t flags);
  108. void destroy_render(render_t *render);
  109. int init_render(render_t *render, int width, int height);
  110. void render_adjust_size(render_t *render, window_t *win);
  111. void render_set_size(render_t *render, int width, int height);
  112. void render_draw_client(render_t *render);
  113.  
  114.  
  115. int init_audio(int format);
  116. int audio_thread(void *param);
  117. void set_audio_volume(int left, int right);
  118.  
  119. int init_video(AVCodecContext *ctx);
  120. int video_thread(void *param);
  121.  
  122. int decode_video(AVCodecContext  *ctx, queue_t *qv);
  123. int decode_audio(AVCodecContext  *ctx, queue_t *qa);
  124.  
  125. double get_master_clock(void);
  126.  
  127.  
  128. int create_thread(int (*proc)(void *param), void *param, int stack_size);
  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. int fplay_vaapi_init(void);
  139. int init_fontlib();
  140. char *get_moviefile();
  141.  
  142.