Rev 6106 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6106 | Rev 6658 | ||
---|---|---|---|
1 | #include |
- | |
- | 1 | #include |
|
2 | #include |
2 | #include |
3 | #include |
3 | #include |
4 | #include |
4 | #include |
5 | #include |
5 | #include |
- | 6 | #include |
|
6 | #include |
7 | #include |
7 | #include "winlib/winlib.h" |
8 | #include |
8 | #include "fplay.h" |
9 | #include "winlib/winlib.h" |
9 | 10 | #include "fplay.h" |
|
10 | extern uint32_t hw2d ; |
11 | |
11 | 12 | extern uint32_t hw2d ; |
|
12 | int64_t _lseeki64(int fd, int64_t offset, int origin ) |
13 | |
13 | { |
14 | int64_t _lseeki64(int fd, int64_t offset, int origin ) |
14 | int off = offset; |
15 | { |
15 | return lseek(fd, off, origin); |
16 | int off = offset; |
16 | } |
17 | return lseek(fd, off, origin); |
17 | 18 | } |
|
18 | int put_packet(queue_t *q, AVPacket *pkt) |
19 | |
19 | { |
20 | int put_packet(queue_t *q, AVPacket *pkt) |
20 | AVPacketList *q_pkt; |
21 | { |
21 | 22 | AVPacketList *q_pkt; |
|
22 | q_pkt = av_malloc(sizeof(AVPacketList)); |
23 | |
23 | if (!q_pkt) |
24 | q_pkt = av_malloc(sizeof(AVPacketList)); |
24 | return -1; |
25 | if (!q_pkt) |
25 | 26 | return -1; |
|
26 | q_pkt->pkt = *pkt; |
27 | |
27 | q_pkt->next = NULL; |
28 | q_pkt->pkt = *pkt; |
28 | 29 | q_pkt->next = NULL; |
|
29 | mutex_lock(&q->lock); |
30 | |
30 | 31 | mutex_lock(&q->lock); |
|
31 | if (!q->last_pkt) |
32 | |
32 | q->first_pkt = q_pkt; |
33 | if (!q->last_pkt) |
33 | else |
34 | q->first_pkt = q_pkt; |
34 | q->last_pkt->next = q_pkt; |
35 | else |
35 | 36 | q->last_pkt->next = q_pkt; |
|
36 | q->last_pkt = q_pkt; |
37 | |
37 | q->size += q_pkt->pkt.size + sizeof(*q_pkt); |
38 | q->last_pkt = q_pkt; |
38 | q->count++; |
39 | q->size += q_pkt->pkt.size + sizeof(*q_pkt); |
39 | 40 | q->count++; |
|
40 | mutex_unlock(&q->lock); |
41 | |
41 | 42 | mutex_unlock(&q->lock); |
|
42 | return 0; |
43 | |
43 | } |
44 | return 0; |
44 | 45 | } |
|
45 | int get_packet(queue_t *q, AVPacket *pkt) |
46 | |
46 | { |
47 | int get_packet(queue_t *q, AVPacket *pkt) |
47 | AVPacketList *q_pkt; |
48 | { |
48 | int ret = 0; |
49 | AVPacketList *q_pkt; |
49 | 50 | int ret = 0; |
|
50 | mutex_lock(&q->lock); |
51 | |
51 | 52 | mutex_lock(&q->lock); |
|
52 | q_pkt = q->first_pkt; |
53 | |
53 | if (q_pkt) |
54 | q_pkt = q->first_pkt; |
54 | { |
55 | if (q_pkt) |
55 | q->first_pkt = q_pkt->next; |
56 | { |
56 | if (!q->first_pkt) |
57 | q->first_pkt = q_pkt->next; |
57 | q->last_pkt = NULL; |
58 | if (!q->first_pkt) |
58 | 59 | q->last_pkt = NULL; |
|
59 | q->count--; |
60 | |
60 | q->size -= q_pkt->pkt.size + sizeof(*q_pkt); |
61 | q->count--; |
61 | *pkt = q_pkt->pkt; |
62 | q->size -= q_pkt->pkt.size + sizeof(*q_pkt); |
62 | av_free(q_pkt); |
63 | *pkt = q_pkt->pkt; |
63 | ret = 1; |
64 | av_free(q_pkt); |
64 | }; |
65 | ret = 1; |
65 | 66 | }; |
|
66 | mutex_unlock(&q->lock); |
67 | |
67 | 68 | mutex_unlock(&q->lock); |
|
68 | return ret; |
69 | |
69 | } |
70 | return ret; |
70 | 71 | } |
|
71 | void blit_raw(ctx_t *ctx, void *raw, int x, int y, int w, int h, int pitch) |
72 | |
72 | { |
73 | void blit_raw(ctx_t *ctx, void *raw, int x, int y, int w, int h, int pitch) |
73 | int *dst; |
74 | { |
74 | int *src = raw; |
75 | int *dst; |
75 | int i, j; |
76 | int *src = raw; |
76 | 77 | int i, j; |
|
77 | dst = ctx->pixmap_data; |
78 | |
78 | dst+= y * ctx->pixmap_pitch/4 + x; |
79 | dst = ctx->pixmap_data; |
79 | 80 | dst+= y * ctx->pixmap_pitch/4 + x; |
|
80 | for(i=0; i < h; i++) |
81 | |
81 | { |
82 | for(i=0; i < h; i++) |
82 | for(j = 0; j < w; j++) |
83 | { |
83 | dst[j] = src[j]; |
84 | for(j = 0; j < w; j++) |
84 | dst+= ctx->pixmap_pitch/4; |
85 | dst[j] = src[j]; |
85 | src+= pitch/4; |
86 | dst+= ctx->pixmap_pitch/4; |
86 | }; |
87 | src+= pitch/4; |
87 | };>> |
88 | }; |
- | 89 | };>> |