GUACAMOLE-110: Fix guacenc framerate rounding affecting video length
This commit is contained in:
parent
701e44a0cb
commit
3a3de3e87d
@ -209,6 +209,8 @@ static int guacenc_video_flush_frame(guacenc_video* video) {
|
|||||||
int guacenc_video_advance_timeline(guacenc_video* video,
|
int guacenc_video_advance_timeline(guacenc_video* video,
|
||||||
guac_timestamp timestamp) {
|
guac_timestamp timestamp) {
|
||||||
|
|
||||||
|
guac_timestamp next_timestamp = timestamp;
|
||||||
|
|
||||||
/* Flush frames as necessary if previously updated */
|
/* Flush frames as necessary if previously updated */
|
||||||
if (video->last_timestamp != 0) {
|
if (video->last_timestamp != 0) {
|
||||||
|
|
||||||
@ -220,6 +222,10 @@ int guacenc_video_advance_timeline(guacenc_video* video,
|
|||||||
if (elapsed == 0)
|
if (elapsed == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/* Use frame time as last_timestamp */
|
||||||
|
next_timestamp = video->last_timestamp
|
||||||
|
+ elapsed * 1000 / GUACENC_VIDEO_FRAMERATE;
|
||||||
|
|
||||||
/* Flush frames to bring timeline in sync, duplicating if necessary */
|
/* Flush frames to bring timeline in sync, duplicating if necessary */
|
||||||
do {
|
do {
|
||||||
guacenc_video_flush_frame(video);
|
guacenc_video_flush_frame(video);
|
||||||
@ -228,7 +234,7 @@ int guacenc_video_advance_timeline(guacenc_video* video,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Update timestamp */
|
/* Update timestamp */
|
||||||
video->last_timestamp = timestamp;
|
video->last_timestamp = next_timestamp;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user