if (is_active) {
card->capture->set_frame_callback(bind(&Mixer::bm_frame, this, card_index, _1, _2, _3, _4, _5, _6, _7));
if (card->frame_allocator == nullptr) {
- card->frame_allocator.reset(new PBOFrameAllocator(pixel_format, 8 << 20, global_flags.width, global_flags.height, card_index, mjpeg_encoder.get())); // 8 MB.
+ card->frame_allocator.reset(new PBOFrameAllocator(pixel_format, FRAME_SIZE, global_flags.width, global_flags.height, card_index, mjpeg_encoder.get()));
} else {
// The format could have changed, but we cannot reset the allocator
// and create a new one from scratch, since there may be allocated
// any old ones as they come back. This takes the mutex while
// allocating, but nothing should really be sending frames in there
// right now anyway (start_bm_capture() has not been called yet).
- card->frame_allocator->reconfigure(pixel_format, 8 << 20, global_flags.width, global_flags.height, card_index, mjpeg_encoder.get());
+ card->frame_allocator->reconfigure(pixel_format, FRAME_SIZE, global_flags.width, global_flags.height, card_index, mjpeg_encoder.get());
}
card->capture->set_video_frame_allocator(card->frame_allocator.get());
if (card->surface == nullptr) {
addr.sin6_family = AF_INET6;
addr.sin6_port = htons(global_flags.srt_port);
- int err = srt_bind(sock, (sockaddr *)&addr, sizeof(addr));
+ int zero = 0;
+ int err = srt_setsockopt(sock, /*level=*/0, SRTO_IPV6ONLY, &zero, sizeof(zero));
+ if (err != 0) {
+ fprintf(stderr, "srt_setsockopt(SRTO_IPV6ONLY): %s\n", srt_getlasterror_str());
+ abort();
+ }
+ err = srt_bind(sock, (sockaddr *)&addr, sizeof(addr));
if (err != 0) {
fprintf(stderr, "srt_bind: %s\n", srt_getlasterror_str());
abort();