Call encoder.on_done in a function
parent
d4258a0aab
commit
9285594e9d
|
@ -90,3 +90,6 @@ int encoder_push(struct encoder* self, struct nvnc_fb* fb,
|
||||||
struct rcbuf* encoder_pull(struct encoder* self, uint64_t* pts);
|
struct rcbuf* encoder_pull(struct encoder* self, uint64_t* pts);
|
||||||
|
|
||||||
void encoder_request_key_frame(struct encoder* self);
|
void encoder_request_key_frame(struct encoder* self);
|
||||||
|
|
||||||
|
void encoder_finish_frame(struct encoder* self, struct rcbuf* result,
|
||||||
|
uint64_t pts);
|
||||||
|
|
|
@ -141,3 +141,10 @@ void encoder_request_key_frame(struct encoder* self)
|
||||||
if (self->impl->request_key_frame)
|
if (self->impl->request_key_frame)
|
||||||
return self->impl->request_key_frame(self);
|
return self->impl->request_key_frame(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void encoder_finish_frame(struct encoder* self, struct rcbuf* result,
|
||||||
|
uint64_t pts)
|
||||||
|
{
|
||||||
|
if (self->on_done)
|
||||||
|
self->on_done(self, result, pts);
|
||||||
|
}
|
||||||
|
|
|
@ -76,8 +76,7 @@ static void open_h264_handle_packet(const void* data, size_t size, uint64_t pts,
|
||||||
vec_append(&self->pending, data, size);
|
vec_append(&self->pending, data, size);
|
||||||
self->pts = pts;
|
self->pts = pts;
|
||||||
|
|
||||||
if (self->parent.on_done)
|
encoder_finish_frame(&self->parent, NULL, NVNC_NO_PTS);
|
||||||
self->parent.on_done(&self->parent, NULL, NVNC_NO_PTS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int open_h264_init_pending(struct open_h264* self)
|
static int open_h264_init_pending(struct open_h264* self)
|
||||||
|
|
|
@ -173,8 +173,7 @@ static void raw_encoder_on_done(void* obj)
|
||||||
aml_unref(self->work);
|
aml_unref(self->work);
|
||||||
self->work = NULL;
|
self->work = NULL;
|
||||||
|
|
||||||
if (self->encoder.on_done)
|
encoder_finish_frame(&self->encoder, result, pts);
|
||||||
self->encoder.on_done(&self->encoder, result, pts);
|
|
||||||
|
|
||||||
rcbuf_unref(result);
|
rcbuf_unref(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -519,8 +519,7 @@ static void on_tight_finished(void* obj)
|
||||||
|
|
||||||
self->encoder.n_rects = self->n_rects;
|
self->encoder.n_rects = self->n_rects;
|
||||||
|
|
||||||
if (self->encoder.on_done)
|
encoder_finish_frame(&self->encoder, result, self->pts);
|
||||||
self->encoder.on_done(&self->encoder, result, self->pts);
|
|
||||||
|
|
||||||
self->pts = NVNC_NO_PTS;
|
self->pts = NVNC_NO_PTS;
|
||||||
rcbuf_unref(result);
|
rcbuf_unref(result);
|
||||||
|
|
|
@ -375,8 +375,7 @@ static void zrle_encoder_on_done(void* obj)
|
||||||
aml_unref(self->work);
|
aml_unref(self->work);
|
||||||
self->work = NULL;
|
self->work = NULL;
|
||||||
|
|
||||||
if (self->encoder.on_done)
|
encoder_finish_frame(&self->encoder, result, pts);
|
||||||
self->encoder.on_done(&self->encoder, result, pts);
|
|
||||||
|
|
||||||
rcbuf_unref(result);
|
rcbuf_unref(result);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue