#include "video_buffer.h" #include #include #include #include "util/log.h" bool sc_video_buffer_init(struct sc_video_buffer *vb, const struct sc_video_buffer_callbacks *cbs, void *cbs_userdata) { bool ok = sc_frame_buffer_init(&vb->fb); if (!ok) { return false; } assert(cbs); assert(cbs->on_new_frame); vb->cbs = cbs; vb->cbs_userdata = cbs_userdata; return true; } void sc_video_buffer_destroy(struct sc_video_buffer *vb) { sc_frame_buffer_destroy(&vb->fb); } bool sc_video_buffer_push(struct sc_video_buffer *vb, const AVFrame *frame) { bool previous_skipped; bool ok = sc_frame_buffer_push(&vb->fb, frame, &previous_skipped); if (!ok) { return false; } vb->cbs->on_new_frame(vb, previous_skipped, vb->cbs_userdata); return true; } void sc_video_buffer_consume(struct sc_video_buffer *vb, AVFrame *dst) { sc_frame_buffer_consume(&vb->fb, dst); }