#pragma once #ifdef CAMU_HAVE_FFMPEG #include #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 **); };