player: use double for the position

This commit is contained in:
Thomas Guillem 2022-08-03 13:53:48 +02:00 committed by Jean-Baptiste Kempf
parent a680a82b05
commit c0de748a3b
13 changed files with 38 additions and 38 deletions

View File

@ -676,7 +676,7 @@ vlc_player_GetTime(vlc_player_t *player);
* @return a valid position in the range [0.f;1.f] or -1.f (if no media is * @return a valid position in the range [0.f;1.f] or -1.f (if no media is
* set,if playback is not yet started or in case of error) * set,if playback is not yet started or in case of error)
*/ */
VLC_API float VLC_API double
vlc_player_GetPosition(vlc_player_t *player); vlc_player_GetPosition(vlc_player_t *player);
/** /**
@ -691,7 +691,7 @@ vlc_player_GetPosition(vlc_player_t *player);
* @param whence absolute or relative * @param whence absolute or relative
*/ */
VLC_API void VLC_API void
vlc_player_SeekByPos(vlc_player_t *player, float position, vlc_player_SeekByPos(vlc_player_t *player, double position,
enum vlc_player_seek_speed speed, enum vlc_player_seek_speed speed,
enum vlc_player_whence whence); enum vlc_player_whence whence);
@ -717,7 +717,7 @@ vlc_player_SeekByTime(vlc_player_t *player, vlc_tick_t time,
* Helper to set the absolute position precisely * Helper to set the absolute position precisely
*/ */
static inline void static inline void
vlc_player_SetPosition(vlc_player_t *player, float position) vlc_player_SetPosition(vlc_player_t *player, double position)
{ {
vlc_player_SeekByPos(player, position, VLC_PLAYER_SEEK_PRECISE, vlc_player_SeekByPos(player, position, VLC_PLAYER_SEEK_PRECISE,
VLC_PLAYER_WHENCE_ABSOLUTE); VLC_PLAYER_WHENCE_ABSOLUTE);
@ -727,7 +727,7 @@ vlc_player_SetPosition(vlc_player_t *player, float position)
* Helper to set the absolute position fast * Helper to set the absolute position fast
*/ */
static inline void static inline void
vlc_player_SetPositionFast(vlc_player_t *player, float position) vlc_player_SetPositionFast(vlc_player_t *player, double position)
{ {
vlc_player_SeekByPos(player, position, VLC_PLAYER_SEEK_FAST, vlc_player_SeekByPos(player, position, VLC_PLAYER_SEEK_FAST,
VLC_PLAYER_WHENCE_ABSOLUTE); VLC_PLAYER_WHENCE_ABSOLUTE);
@ -737,7 +737,7 @@ vlc_player_SetPositionFast(vlc_player_t *player, float position)
* Helper to jump the position precisely * Helper to jump the position precisely
*/ */
static inline void static inline void
vlc_player_JumpPos(vlc_player_t *player, float jumppos) vlc_player_JumpPos(vlc_player_t *player, double jumppos)
{ {
/* No fask seek for jumps. Indeed, jumps can seek to the current position /* No fask seek for jumps. Indeed, jumps can seek to the current position
* if not precise enough or if the jump value is too small. */ * if not precise enough or if the jump value is too small. */
@ -2835,7 +2835,7 @@ struct vlc_player_cbs
* @param data opaque pointer set by vlc_player_AddListener() * @param data opaque pointer set by vlc_player_AddListener()
*/ */
void (*on_position_changed)(vlc_player_t *player, void (*on_position_changed)(vlc_player_t *player,
vlc_tick_t new_time, float new_pos, void *data); vlc_tick_t new_time, double new_pos, void *data);
/** /**
* Called when the media length has changed * Called when the media length has changed
@ -3107,7 +3107,7 @@ struct vlc_player_cbs
* @param data opaque pointer set by vlc_player_AddListener() * @param data opaque pointer set by vlc_player_AddListener()
*/ */
void (*on_atobloop_changed)(vlc_player_t *player, void (*on_atobloop_changed)(vlc_player_t *player,
enum vlc_player_abloop new_state, vlc_tick_t time, float pos, enum vlc_player_abloop new_state, vlc_tick_t time, double pos,
void *data); void *data);
/** /**
@ -3256,7 +3256,7 @@ typedef struct vlc_player_timer_id vlc_player_timer_id;
struct vlc_player_timer_point struct vlc_player_timer_point
{ {
/** Position in the range [0.0f;1.0] */ /** Position in the range [0.0f;1.0] */
float position; double position;
/** Rate of the player */ /** Rate of the player */
double rate; double rate;
/** Valid time >= VLC_TICK_0 or VLC_TICK_INVALID, subtract this time with /** Valid time >= VLC_TICK_0 or VLC_TICK_INVALID, subtract this time with
@ -3411,7 +3411,7 @@ vlc_player_RemoveTimer(vlc_player_t *player, vlc_player_timer_id *timer);
VLC_API int VLC_API int
vlc_player_timer_point_Interpolate(const struct vlc_player_timer_point *point, vlc_player_timer_point_Interpolate(const struct vlc_player_timer_point *point,
vlc_tick_t system_now, vlc_tick_t system_now,
vlc_tick_t *out_ts, float *out_pos); vlc_tick_t *out_ts, double *out_pos);
/** /**
* Get the date of the next interval * Get the date of the next interval

View File

@ -175,7 +175,7 @@ on_capabilities_changed(vlc_player_t *player, int old_caps, int new_caps, void *
} }
static void static void
on_position_changed(vlc_player_t *player, vlc_tick_t new_time, float new_pos, on_position_changed(vlc_player_t *player, vlc_tick_t new_time, double new_pos,
void *data) void *data)
{ {
(void) player; (void) player;

View File

@ -111,7 +111,7 @@ player_on_rate_changed(vlc_player_t *player, float new_rate, void *data)
static void static void
player_on_position_changed(vlc_player_t *player, player_on_position_changed(vlc_player_t *player,
vlc_tick_t new_time, float new_pos, void *data) vlc_tick_t new_time, double new_pos, void *data)
{ VLC_UNUSED(player); VLC_UNUSED(new_pos); { VLC_UNUSED(player); VLC_UNUSED(new_pos);
struct player_cli *pc = data; struct player_cli *pc = data;

View File

@ -192,7 +192,7 @@ static void cb_player_capabilities_changed(vlc_player_t *p_player, int oldCapabi
}); });
} }
static void cb_player_position_changed(vlc_player_t *p_player, vlc_tick_t time, float position, void *p_data) static void cb_player_position_changed(vlc_player_t *p_player, vlc_tick_t time, double position, void *p_data)
{ {
VLC_UNUSED(p_player); VLC_UNUSED(p_player);
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
@ -414,7 +414,7 @@ static void cb_player_program_selection_changed(vlc_player_t *p_player,
static void cb_player_atobloop_changed(vlc_player_t *p_player, static void cb_player_atobloop_changed(vlc_player_t *p_player,
enum vlc_player_abloop new_state, enum vlc_player_abloop new_state,
vlc_tick_t time, float pos, vlc_tick_t time, double pos,
void *p_data) void *p_data)
{ {
VLC_UNUSED(p_player); VLC_UNUSED(p_player);

View File

@ -694,7 +694,7 @@ static void on_player_stats_changed(vlc_player_t *, const struct input_stats_t *
}); });
} }
static void on_player_atobloop_changed(vlc_player_t *, enum vlc_player_abloop state, vlc_tick_t time, float, void *data) static void on_player_atobloop_changed(vlc_player_t *, enum vlc_player_abloop state, vlc_tick_t time, double, void *data)
{ {
PlayerControllerPrivate* that = static_cast<PlayerControllerPrivate*>(data); PlayerControllerPrivate* that = static_cast<PlayerControllerPrivate*>(data);
msg_Dbg( that->p_intf, "on_player_atobloop_changed"); msg_Dbg( that->p_intf, "on_player_atobloop_changed");

View File

@ -83,7 +83,7 @@ public:
VLCTick m_time = 0; VLCTick m_time = 0;
VLCTick m_remainingTime = 0; VLCTick m_remainingTime = 0;
float m_position = 0.f; double m_position = 0.f;
VLCTick m_length= 0; VLCTick m_length= 0;
QString m_highResolutionTime { "00:00:00:00" }; QString m_highResolutionTime { "00:00:00:00" };

View File

@ -183,10 +183,10 @@ void on_player_capabilities_changed( vlc_player_t *player,
} }
void on_player_position_changed( vlc_player_t *player, vlc_tick_t time, void on_player_position_changed( vlc_player_t *player, vlc_tick_t time,
float pos, void *data ) double pos, void *data )
{ {
(void)player;(void)time; (void)player;(void)time;
vlc_value_t val = { .f_float = pos}; vlc_value_t val = { .f_float = static_cast<float>(pos)};
VlcProc::onGenericCallback( "position", val, data ); VlcProc::onGenericCallback( "position", val, data );
} }

View File

@ -38,7 +38,7 @@ vlc_player_input_FindTrackById(struct vlc_player_input *input, vlc_es_id_t *id,
static void static void
vlc_player_input_HandleAtoBLoop(struct vlc_player_input *input, vlc_tick_t time, vlc_player_input_HandleAtoBLoop(struct vlc_player_input *input, vlc_tick_t time,
float pos) double pos)
{ {
vlc_player_t *player = input->player; vlc_player_t *player = input->player;
@ -70,11 +70,11 @@ vlc_player_input_GetTime(struct vlc_player_input *input)
return input->time; return input->time;
} }
float double
vlc_player_input_GetPos(struct vlc_player_input *input) vlc_player_input_GetPos(struct vlc_player_input *input)
{ {
vlc_player_t *player = input->player; vlc_player_t *player = input->player;
float pos; double pos;
if (input == player->input if (input == player->input
&& vlc_player_GetTimerPoint(player, vlc_tick_now(), NULL, &pos) == 0) && vlc_player_GetTimerPoint(player, vlc_tick_now(), NULL, &pos) == 0)

View File

@ -119,14 +119,14 @@ vlc_player_osd_Icon(vlc_player_t *player, short type)
void void
vlc_player_osd_Position(vlc_player_t *player, vlc_player_osd_Position(vlc_player_t *player,
struct vlc_player_input *input, vlc_tick_t time, struct vlc_player_input *input, vlc_tick_t time,
float position, enum vlc_player_whence whence) double position, enum vlc_player_whence whence)
{ {
if (input->length != VLC_TICK_INVALID) if (input->length != VLC_TICK_INVALID)
{ {
if (time == VLC_TICK_INVALID) if (time == VLC_TICK_INVALID)
time = position * input->length; time = position * input->length;
else else
position = time / (float) input->length; position = time / (double) input->length;
} }
size_t count; size_t count;

View File

@ -1365,7 +1365,7 @@ vlc_player_GetTime(vlc_player_t *player)
return vlc_player_input_GetTime(input); return vlc_player_input_GetTime(input);
} }
float double
vlc_player_GetPosition(vlc_player_t *player) vlc_player_GetPosition(vlc_player_t *player)
{ {
struct vlc_player_input *input = vlc_player_get_input_locked(player); struct vlc_player_input *input = vlc_player_get_input_locked(player);
@ -1391,13 +1391,13 @@ vlc_player_DisplayPosition(vlc_player_t *player)
if (!input) if (!input)
return; return;
vlc_player_osd_Position(player, input, vlc_player_osd_Position(player, input,
vlc_player_input_GetTime(input), vlc_player_input_GetTime(input),
vlc_player_input_GetPos(input), vlc_player_input_GetPos(input),
VLC_PLAYER_WHENCE_ABSOLUTE); VLC_PLAYER_WHENCE_ABSOLUTE);
} }
void void
vlc_player_SeekByPos(vlc_player_t *player, float position, vlc_player_SeekByPos(vlc_player_t *player, double position,
enum vlc_player_seek_speed speed, enum vlc_player_seek_speed speed,
enum vlc_player_whence whence) enum vlc_player_whence whence)
{ {

View File

@ -68,7 +68,7 @@ struct vlc_player_input
int capabilities; int capabilities;
vlc_tick_t length; vlc_tick_t length;
float position; double position;
vlc_tick_t time; vlc_tick_t time;
vlc_tick_t normal_time; vlc_tick_t normal_time;
@ -104,7 +104,7 @@ struct vlc_player_input
struct struct
{ {
vlc_tick_t time; vlc_tick_t time;
float pos; double pos;
bool set; bool set;
} abloop_state[2]; } abloop_state[2];
@ -439,7 +439,7 @@ vlc_player_input_GetSelectedTrackStringIds(struct vlc_player_input *input,
vlc_tick_t vlc_tick_t
vlc_player_input_GetTime(struct vlc_player_input *input); vlc_player_input_GetTime(struct vlc_player_input *input);
float double
vlc_player_input_GetPos(struct vlc_player_input *input); vlc_player_input_GetPos(struct vlc_player_input *input);
int int
@ -482,7 +482,7 @@ vlc_player_RemoveTimerSource(vlc_player_t *player, vlc_es_id_t *es_source);
int int
vlc_player_GetTimerPoint(vlc_player_t *player, vlc_tick_t system_now, vlc_player_GetTimerPoint(vlc_player_t *player, vlc_tick_t system_now,
vlc_tick_t *out_ts, float *out_pos); vlc_tick_t *out_ts, double *out_pos);
/* /*
* player_vout.c * player_vout.c
@ -517,7 +517,7 @@ vlc_player_osd_Icon(vlc_player_t *player, short type);
void void
vlc_player_osd_Position(vlc_player_t *player, vlc_player_osd_Position(vlc_player_t *player,
struct vlc_player_input *input, vlc_tick_t time, struct vlc_player_input *input, vlc_tick_t time,
float position, enum vlc_player_whence whence); double position, enum vlc_player_whence whence);
void void
vlc_player_osd_Volume(vlc_player_t *player, bool mute_action); vlc_player_osd_Volume(vlc_player_t *player, bool mute_action);

View File

@ -399,7 +399,7 @@ vlc_player_RemoveTimerSource(vlc_player_t *player, vlc_es_id_t *es_source)
int int
vlc_player_GetTimerPoint(vlc_player_t *player, vlc_tick_t system_now, vlc_player_GetTimerPoint(vlc_player_t *player, vlc_tick_t system_now,
vlc_tick_t *out_ts, float *out_pos) vlc_tick_t *out_ts, double *out_pos)
{ {
vlc_mutex_lock(&player->timer.lock); vlc_mutex_lock(&player->timer.lock);
if (player->timer.best_source.point.system_date == VLC_TICK_INVALID) if (player->timer.best_source.point.system_date == VLC_TICK_INVALID)
@ -474,7 +474,7 @@ vlc_player_RemoveTimer(vlc_player_t *player, vlc_player_timer_id *timer)
int int
vlc_player_timer_point_Interpolate(const struct vlc_player_timer_point *point, vlc_player_timer_point_Interpolate(const struct vlc_player_timer_point *point,
vlc_tick_t system_now, vlc_tick_t system_now,
vlc_tick_t *out_ts, float *out_pos) vlc_tick_t *out_ts, double *out_pos)
{ {
assert(point); assert(point);
assert(system_now > 0); assert(system_now > 0);
@ -485,7 +485,7 @@ vlc_player_timer_point_Interpolate(const struct vlc_player_timer_point *point,
const vlc_tick_t drift = point->system_date == VLC_TICK_MAX ? 0 const vlc_tick_t drift = point->system_date == VLC_TICK_MAX ? 0
: (system_now - point->system_date) * point->rate; : (system_now - point->system_date) * point->rate;
vlc_tick_t ts = point->ts; vlc_tick_t ts = point->ts;
float pos = point->position; double pos = point->position;
if (ts != VLC_TICK_INVALID) if (ts != VLC_TICK_INVALID)
{ {
@ -495,7 +495,7 @@ vlc_player_timer_point_Interpolate(const struct vlc_player_timer_point *point,
} }
if (point->length != VLC_TICK_INVALID) if (point->length != VLC_TICK_INVALID)
{ {
pos += drift / (float) point->length; pos += drift / (double) point->length;
if (unlikely(pos < 0.f)) if (unlikely(pos < 0.f))
return VLC_EGENERIC; return VLC_EGENERIC;
if (pos > 1.f) if (pos > 1.f)

View File

@ -45,7 +45,7 @@ struct report_capabilities
struct report_position struct report_position
{ {
vlc_tick_t time; vlc_tick_t time;
float pos; double pos;
}; };
struct report_track_list struct report_track_list
@ -331,7 +331,7 @@ player_on_capabilities_changed(vlc_player_t *player, int old_caps, int new_caps,
static void static void
player_on_position_changed(vlc_player_t *player, vlc_tick_t time, player_on_position_changed(vlc_player_t *player, vlc_tick_t time,
float pos, void *data) double pos, void *data)
{ {
struct ctx *ctx = get_ctx(player, data); struct ctx *ctx = get_ctx(player, data);
struct report_position report = { struct report_position report = {