#include "decklink_capture.h"
+#include "defs.h"
#include <DeckLinkAPI.h>
#include <DeckLinkAPIConfiguration.h>
#include <DeckLinkAPIDiscovery.h>
#include <DeckLinkAPIModes.h>
+#include <DeckLinkAPITypes.h>
+#include <LinuxCOM.h>
#include <assert.h>
+#include <errno.h>
+#include <sched.h>
+#include <string>
#ifdef __SSE2__
#include <immintrin.h>
#endif
assert(stride == width * 2);
}
- current_video_frame = video_frame_allocator->create_frame(width, height, stride);
+ if (width * stride > FRAME_SIZE) {
+ // TODO: If we had an OpenGL context here, calling create_frame()
+ // would be completely fine.
+ fprintf(stderr, "Card %u: Captured frame %d x %d (stride %d) would be larger than supported frame size (%d > %d), skipping.\n",
+ card_index, width, height, stride, width * stride, FRAME_SIZE);
+ } else {
+ current_video_frame = video_frame_allocator->create_frame(width, height, stride);
+ }
if (current_video_frame.data != nullptr) {
const uint8_t *src;
video_frame->GetBytes((void **)&src);