summaryrefslogtreecommitdiff
path: root/src/buffer/frame_queue.h
blob: 6626b951e916ba677060a887d627db037f878bbb (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
#pragma once

#ifdef CAMU_HAVE_FFMPEG
#include <libavutil/frame.h>
#endif

#include "../codec/codec.h"
#include "../buffer/video.h"

enum {
    CAMU_QUEUE_OK = 0,
    CAMU_QUEUE_MORE,
    CAMU_QUEUE_EOF,
    CAMU_QUEUE_ERR
};

struct camu_frame_queue {
    struct camu_video_buffer *buf;
    bool (*configure_subtitles)(struct camu_frame_queue *, u32, u32, struct camu_codec_stream *);
    void (*push)(struct camu_frame_queue *, struct camu_codec_frame *, f64, u32 *);
#ifdef CAMU_HAVE_FFMPEG
    void (*push_av_frame)(struct camu_frame_queue *, AVFrame *, f64, u32 *);
#endif
    void (*push_subtitle)(struct camu_frame_queue *, struct camu_codec_packet *);
    void (*flush)(struct camu_frame_queue *, u32 *);
    u8 (*read)(struct camu_frame_queue *, f64, void *, u32 *);
    void (*reset)(struct camu_frame_queue *);
    void (*free)(struct camu_frame_queue **);
};