Monado OpenXR Runtime
u_sink_force_genlock.c File Reference

An xrt_frame_sink that takes two frames, enforces gen-lock and pushes downstream in left-right order. More...

#include "util/u_misc.h"
#include "util/u_sink.h"
#include "util/u_frame.h"
#include "util/u_logging.h"
#include "util/u_trace_marker.h"
#include <stdio.h>
#include <pthread.h>
Include dependency graph for u_sink_force_genlock.c:

Data Structures

struct  u_sink_force_genlock
 An xrt_frame_sink that takes two frames in any order, and pushes downstream in left-right order once it has two frames that are close enough together. More...
 

Functions

static void * force_genlock_mainloop (void *ptr)
 
static void force_genlock_left_frame (struct xrt_frame_sink *xfs, struct xrt_frame *xf)
 
static void force_genlock_right_frame (struct xrt_frame_sink *xfs, struct xrt_frame *xf)
 
static void force_genlock_break_apart (struct xrt_frame_node *node)
 
static void force_genlock_destroy (struct xrt_frame_node *node)
 
bool u_sink_force_genlock_create (struct xrt_frame_context *xfctx, struct xrt_frame_sink *downstream_left, struct xrt_frame_sink *downstream_right, struct xrt_frame_sink **out_left_xfs, struct xrt_frame_sink **out_right_xfs)
 Enforces left-right push order on frames and forces them to be within a reasonable amount of time from each other. More...
 

Detailed Description

An xrt_frame_sink that takes two frames, enforces gen-lock and pushes downstream in left-right order.

Author
Moses Turner moses.nosp@m.@col.nosp@m.labor.nosp@m.a.co.nosp@m.m
Jakob Bornecrantz jakob.nosp@m.@col.nosp@m.labor.nosp@m.a.co.nosp@m.m

Function Documentation

◆ u_sink_force_genlock_create()

bool u_sink_force_genlock_create ( struct xrt_frame_context xfctx,
struct xrt_frame_sink downstream_left,
struct xrt_frame_sink downstream_right,
struct xrt_frame_sink **  out_left_xfs,
struct xrt_frame_sink **  out_right_xfs 
)

Enforces left-right push order on frames and forces them to be within a reasonable amount of time from each other.

References u_sink_force_genlock::left, xrt_frame_sink::push_frame, and U_TYPED_CALLOC.

Referenced by u_sink_combiner_create().