Subversion Repositories Kolibri OS

Rev

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
};