summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/render')
-rw-r--r--src/render/queue_libplacebo.c11
-rw-r--r--src/render/queue_libplacebo.h2
2 files changed, 7 insertions, 6 deletions
diff --git a/src/render/queue_libplacebo.c b/src/render/queue_libplacebo.c
index b830bb2..8ecf9ce 100644
--- a/src/render/queue_libplacebo.c
+++ b/src/render/queue_libplacebo.c
@@ -188,7 +188,7 @@ static bool map_av_frame(pl_gpu gpu, pl_tex *tex, const struct pl_source_frame *
((struct pl_source_frame *)src)->frame_data = NULL;
- if (lq->has_subtitles) {
+ if (lq->have_subtitles) {
s64 now = av_rescale_q(frame->best_effort_timestamp, stream->time_base, (AVRational){ 1, 1000 });
s32 change;
ASS_Image *ass_frame = ass_render_frame(lq->ass_renderer, lq->ass_track, now, &change);
@@ -257,10 +257,11 @@ static void discard_av_frame(const struct pl_source_frame *src)
static void queue_lp_push_av_frame(struct camu_frame_queue *queue, AVFrame *frame, f64 pts)
{
struct camu_frame_queue_lp *lq = (struct camu_frame_queue_lp *)queue;
+ AVStream *stream = lq->q.buf->stream->av.stream;
frame->opaque = lq;
pl_queue_push(lq->queue, &(struct pl_source_frame){
.pts = pts,
- .duration = lq->q.buf->avg_frame_duration,
+ .duration = frame->duration * av_q2d(stream->time_base),
.map = map_av_frame,
.unmap = unmap_av_frame,
.discard = discard_av_frame,
@@ -288,7 +289,7 @@ static bool queue_lp_configure_subtitiles(struct camu_frame_queue *queue, s32 wi
ass_set_fonts(lq->ass_renderer, NULL, NULL, ASS_FONTPROVIDER_AUTODETECT, NULL, 0);
ass_process_codec_private(lq->ass_track, (const char *)codecpar->extradata,
codecpar->extradata_size);
- lq->has_subtitles = true;
+ lq->have_subtitles = true;
return true;
}
@@ -341,7 +342,7 @@ static void queue_lp_reset(struct camu_frame_queue *queue)
static void queue_lp_free(struct camu_frame_queue **queue)
{
struct camu_frame_queue_lp *lq = (struct camu_frame_queue_lp *)*queue;
- if (lq->has_subtitles) {
+ if (lq->have_subtitles) {
ass_free_track(lq->ass_track);
ass_renderer_done(lq->ass_renderer);
}
@@ -354,7 +355,7 @@ struct camu_frame_queue *camu_frame_queue_lp_create(void)
{
struct camu_frame_queue_lp *lq = al_alloc_object(struct camu_frame_queue_lp);
al_array_init(lq->overlays);
- lq->has_subtitles = false;
+ lq->have_subtitles = false;
lq->q.push = queue_lp_push;
#ifdef CAMU_HAVE_FFMPEG
lq->q.push_av_frame = queue_lp_push_av_frame;
diff --git a/src/render/queue_libplacebo.h b/src/render/queue_libplacebo.h
index 4879cdd..4f5f644 100644
--- a/src/render/queue_libplacebo.h
+++ b/src/render/queue_libplacebo.h
@@ -22,7 +22,7 @@ struct camu_frame_queue_lp {
ASS_Library *ass;
ASS_Renderer *ass_renderer;
ASS_Track *ass_track;
- bool has_subtitles;
+ bool have_subtitles;
};
struct camu_frame_queue *camu_frame_queue_lp_create(void);