mirror of
https://github.com/mpv-player/mpv.git
synced 2026-10-28 14:29:25 +08:00
command: fix bitrate rounding error
When the (float) bitrate is returned, it is implicitely converted to an int64 value, merely discarding the fractional part. However the bitrate of a CBR track can vary a bit due to timestamp precision loss after clock conversion (this can affect MPEG-TS audio tracks). So a bitrate like 191999.999... results in 191999 when being returned - instead of 192000. To fix this, apply proper rounding, as already done for the "old" case. Hereby refactoring the "old" case to also use `llrint`.
This commit is contained in:
+2
-2
@@ -3107,7 +3107,7 @@ static int mp_property_packet_bitrate(void *ctx, struct m_property *prop,
|
||||
|
||||
// Same story, but used kilobits for some reason.
|
||||
if (old)
|
||||
return m_property_int64_ro(action, arg, rate / 1000.0 + 0.5);
|
||||
return m_property_int64_ro(action, arg, llrint(rate / 1000.0));
|
||||
|
||||
if (action == M_PROPERTY_PRINT) {
|
||||
rate /= 1000;
|
||||
@@ -3118,7 +3118,7 @@ static int mp_property_packet_bitrate(void *ctx, struct m_property *prop,
|
||||
}
|
||||
return M_PROPERTY_OK;
|
||||
}
|
||||
return m_property_int64_ro(action, arg, rate);
|
||||
return m_property_int64_ro(action, arg, llrint(rate));
|
||||
}
|
||||
|
||||
static int mp_property_cwd(void *ctx, struct m_property *prop,
|
||||
|
||||
Reference in New Issue
Block a user