0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 12:02:23 +02:00
mpv/video/out/present_sync.h
Dudemanguy 4aa3866400 present_sync: remove unneeded clear_values function
This was specifically special logic for drm. Before present_sync, it
would also clear out all of its vsync values like this. The old drm code
would save a bunch of samples which would confuse vo.c when unpausing
since it got old, bogus values. Since we make sure to match successive
vsync samples with the swapchain depth and that present sync samples
also match the swapchain depth, this is unneeded.
2023-11-07 00:52:46 +00:00

58 lines
1.8 KiB
C

/*
* This file is part of mpv video player.
*
* mpv is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MP_PRESENT_SYNC_H
#define MP_PRESENT_SYNC_H
#include <stdbool.h>
#include <stdint.h>
#include "vo.h"
/* Generic helpers for obtaining presentation feedback from
* backend APIs. This requires ust/msc values. */
struct mp_present_entry {
int64_t ust;
int64_t msc;
int64_t vsync_duration;
int64_t skipped_vsyncs;
int64_t queue_display_time;
struct {
struct mp_present_entry *next, *prev;
} list_node;
};
struct mp_present {
struct mp_present_entry *head, *tail;
struct mp_vo_opts *opts;
};
struct mp_present *mp_present_initialize(void *talloc_ctx, struct mp_vo_opts *opts, int entries);
// Used during the get_vsync call to deliver the presentation statistics to the VO.
void present_sync_get_info(struct mp_present *present, struct vo_vsync_info *info);
// Called after every buffer swap to update presentation statistics.
void present_sync_swap(struct mp_present *present);
// Called anytime the backend delivers new ust/msc values.
void present_sync_update_values(struct mp_present *present, int64_t ust,
int64_t msc);
#endif /* MP_PRESENT_SYNC_H */