summaryrefslogtreecommitdiff
path: root/src/render/queue_momo.c
blob: bc7caf8cb5008171f777f429e45fe87c9e918803 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "queue_momo.h"

static bool queue_momo_configure_subtitles(struct camu_frame_queue *queue, u32 width, u32 height,
    struct camu_codec_stream *stream)
{
    struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue;
    (void)mq;
    (void)width;
    (void)height;
    (void)stream;
    return false;
}

static void queue_momo_push(struct camu_frame_queue *queue, struct camu_codec_frame *frame, f64 pts)
{
    struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue;
    (void)mq;
    (void)pts;
    camu_codec_frame_discard(frame);
}

#ifdef CAMU_HAVE_FFMPEG
static void queue_momo_push_av_frame(struct camu_frame_queue *queue, AVFrame *frame, f64 pts)
{
    struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue;
    (void)mq;
    (void)pts;
    av_frame_free(&frame);
}
#endif

static void queue_momo_push_subtitle(struct camu_frame_queue *queue, struct camu_codec_packet *packet)
{
    struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue;
    (void)mq;
    (void)packet;
}

static void queue_momo_flush(struct camu_frame_queue *queue)
{
    (void)queue;
}

static s32 queue_momo_count(struct camu_frame_queue *queue)
{
    struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue;
    (void)mq;
    return 1;
}

static u8 queue_momo_read(struct camu_frame_queue *queue, f64 pts, void *out)
{
    struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)queue;
    (void)mq;
    (void)pts;
    (void)out;
    return CAMU_QUEUE_OK;
}

static void queue_momo_reset(struct camu_frame_queue *queue)
{
    struct camu_frame_queue_momo *tq = (struct camu_frame_queue_momo *)queue;
    (void)tq;
}

static void queue_momo_free(struct camu_frame_queue **queue)
{
    struct camu_frame_queue_momo *mq = (struct camu_frame_queue_momo *)*queue;
    al_free(mq);
    *queue = NULL;
}

struct camu_frame_queue *camu_frame_queue_momo_create(void)
{
    struct camu_frame_queue_momo *mq = al_alloc_object(struct camu_frame_queue_momo);
    mq->q.configure_subtitles = queue_momo_configure_subtitles;
    mq->q.push = queue_momo_push;
#ifdef CAMU_HAVE_FFMPEG
    mq->q.push_av_frame = queue_momo_push_av_frame;
#endif
    mq->q.push_subtitle = queue_momo_push_subtitle;
    mq->q.flush = queue_momo_flush;
    mq->q.count = queue_momo_count;
    mq->q.read = queue_momo_read;
    mq->q.reset = queue_momo_reset;
    mq->q.free = queue_momo_free;
    return (struct camu_frame_queue *)mq;
}