Subversion Repositories Kolibri OS

Rev

Rev 6117 | Rev 6121 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4438 Serge 1
 
6117 serge 2
#include "pixlib3.h"
5372 serge 3
4438 Serge 4
 
5
#define BLACK_MAGIC_VIDEO
6
7
 
8
typedef unsigned int count_t;
9
10
 
11
typedef struct vstate vst_t;
6117 serge 12
4438 Serge 13
 
14
#define HAS_TOP         (1<<1)
15
#define HAS_RIGHT       (1<<2)
16
#define HAS_BOTTOM      (1<<3)
17
18
 
19
{
20
    vst_t     *vst;
6117 serge 21
    uint32_t   caps;
4438 Serge 22
    uint32_t   ctx_width;
23
    uint32_t   ctx_height;
24
    uint32_t   win_width;
25
    uint32_t   win_height;
26
27
 
28
    rect_t     rcvideo;
29
    rect_t     rcleft;
30
    rect_t     rctop;
31
    rect_t     rcright;
32
    rect_t     rcbottom;
33
34
 
35
    bitmap_t  *bitmap[4];
5372 serge 36
    bitmap_t  *last_bitmap;
4438 Serge 37
38
 
39
    int        target;
40
41
 
42
    enum{
43
      EMPTY, INIT }state;
44
    enum win_state win_state;
45
46
 
47
};
48
49
 
50
{
51
    CLOSED = 0,
52
    PREPARE,
53
    STOP,
54
    PAUSE,
55
    PLAY,
56
    REWIND,
57
    PLAY_2_STOP,
58
    PLAY_2_PAUSE,
59
    PAUSE_2_PLAY,
60
    REWIND_2_PLAY,
61
};
62
63
 
64
#define ID_STOP             101
65
#define ID_PROGRESS         102
66
#define ID_VOL_LEVEL        103
67
#define ID_VOL_CTRL         104
68
69
 
70
{
71
    mutex_t lock;
5603 serge 72
    char    *buffer;
73
    int     count;
74
}astream_t;
4438 Serge 75
76
 
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
 
88
    AVPacketList *first_pkt;
89
    AVPacketList *last_pkt;
90
    int size;
91
    int count;
92
    mutex_t       lock;
6117 serge 93
} queue_t;
4438 Serge 94
95
 
96
int get_packet(queue_t *q, AVPacket *pkt);
97
98
 
6117 serge 99
{
100
    AVFormatContext *fCtx;      /* format context */
101
    AVCodecContext  *vCtx;      /* video decoder context */
102
    AVCodecContext  *aCtx;      /* audio decoder context */
103
    AVCodec         *vCodec;    /* video codec */
104
    AVCodec         *aCodec;    /* audio codec */
105
    int             vStream;    /* video stream index */
106
    int             aStream;    /* audio stream index */
107
4438 Serge 108
 
6117 serge 109
    queue_t         q_audio;    /* audio packets queue */
110
111
 
112
113
 
6118 serge 114
    int             dfx;        /* index of renderd frame */
115
116
 
6117 serge 117
118
 
119
 
120
 
5603 serge 121
#define AUDIO_THREAD    2
122
#define VIDEO_THREAD    4
123
124
 
125
extern astream_t astream;
4438 Serge 126
extern AVRational video_time_base;
127
128
 
6117 serge 129
void destroy_render(render_t *render);
4438 Serge 130
int init_render(render_t *render, int width, int height);
131
void render_adjust_size(render_t *render, window_t *win);
132
void render_set_size(render_t *render, int width, int height);
133
void render_draw_client(render_t *render);
134
135
 
6118 serge 136
4438 Serge 137
 
138
int audio_thread(void *param);
139
void set_audio_volume(int left, int right);
140
141
 
6117 serge 142
int video_thread(void *param);
4438 Serge 143
144
 
6117 serge 145
int decode_video(vst_t* vst);
146
int decode_audio(AVCodecContext  *ctx, queue_t *qa);
4438 Serge 147
148
 
149
150
 
151
{
152
    __asm__ __volatile__ (
153
    "int $0x40"
154
    ::"a"(68),"b"(14),"c"(event));
155
}
156
157
 
5592 serge 158
void va_convert_picture(vst_t *vst, int width, int height, AVPicture *pic);
6118 serge 159
160
 
4438 Serge 161
char *get_moviefile();
162
163