提交 45583a75 编写于 作者: F fryshorts 提交者: jp9000

linux-v4l2: Make timestamp offset local.

This replaces the var in the source struct that are handling the
timestamp offset with a local one in the capture thread.
This change is mostly to make the code more readable.
上级 c0f6733b
......@@ -59,8 +59,6 @@ struct v4l2_data {
int resolution;
int framerate;
bool sys_timing;
bool started;
uint64_t start_ts;
/* internal data */
obs_source_t *source;
......@@ -141,6 +139,7 @@ static void *v4l2_thread(void *vptr)
int r;
fd_set fds;
uint8_t *start;
uint64_t first_ts;
struct timeval tv;
struct v4l2_buffer buf;
struct obs_source_frame out;
......@@ -149,8 +148,8 @@ static void *v4l2_thread(void *vptr)
if (v4l2_start_capture(data->dev, &data->buffers) < 0)
goto exit;
first_ts = 0;
data->frames = 0;
v4l2_prep_obs_frame(data, &out, plane_offsets);
while (os_event_try(data->event) == EAGAIN) {
......@@ -183,11 +182,10 @@ static void *v4l2_thread(void *vptr)
out.timestamp = data->sys_timing ?
os_gettime_ns() : timeval2ns(buf.timestamp);
if (!data->started) {
data->start_ts = out.timestamp;
data->started = true;
}
out.timestamp -= data->start_ts;
if (!data->frames)
first_ts = out.timestamp;
out.timestamp -= first_ts;
start = (uint8_t *) data->buffers.info[buf.index].start;
for (uint_fast32_t i = 0; i < MAX_AV_PLANES; ++i)
......@@ -650,8 +648,6 @@ static void v4l2_init(struct v4l2_data *data)
{
int fps_num, fps_denom;
data->started = false;
blog(LOG_INFO, "Start capture from %s", data->device_id);
data->dev = v4l2_open(data->device_id, O_RDWR | O_NONBLOCK);
if (data->dev == -1) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册