View Issue Details

IDProjectCategoryView StatusLast Update
0004541The Dark ModGUIpublic18.06.2017 03:53
Reporterstgatilov Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Product VersionSVN 
Summary0004541: Glimpse of old frames when cinematic is restarted
DescriptionSometimes when you play cinematic, a few erratic frames are shown at the very beginning. They go away very soon, and video continues playing from the beginning.
This does not happen on the first playing, but when you play the same cinematic second time, the issue is visible: a few frames from where you stopped the video the previous time are shown.
Steps To Reproduce1. Install "New Job" mission (or other one with cinematic briefing).
2. Start "New mission" to see the TDM video.
3. Immediately hit Escape twice and click on "New Mission" again.
If you are quick enough, you'll catch a glimpse of TDM logo at the very beginning of video playback (the second time) .

The more reliable way of seeing this is to look into log_cinematics.txt (generated only when cvar r_cinematic_log is set). The problem appears if ImageForTime is called before ResetTime when you start playing video. If the video was played before, then it would display the frame which must had been displayed at this moment if you did not stop cinematic the first time.
TagsNo tags attached.

Relationships

related to 0004518 resolvedstgatilov Briefing video starts decoding in background 
related to 0004535 resolvedstgatilov Showing video for its full duration 

Activities

stgatilov

stgatilov

12.06.2017 08:01

administrator   ~0008901

This problem can be fixed by calling resetCinematics in GUI scripts everytime when video is stopped.
Calling resetCinematics later (when the video is restarted) is questionable solution, because it is hard to ensure that GUI event would be handled before renderer's backend updates cinematic material.
stgatilov

stgatilov

18.06.2017 03:52

administrator   ~0008913

Last edited: 18.06.2017 03:53

I think I was wrong.
If we simply call resetCinematics when the video is interrupted, then after we resume it, it would call ImageForTime immediately, and the same issue would still appear.
Suppose that we play S seconds of video, interrupt it, then start playing the video again after T seconds. With current behavior a frame for time S+T would be displayed, and if we call resetCinematics in interrupt time, then a frame for time T would be displayed.

Currently I do not see how to solve this problem without dirty hacks (like adding new GUI command closeCinematics and adding yet another "reset" method to idCinematic). So I guess I'll simply leave it=(
The best solution to the problem would be: ensure that when video is started , ImageForTime is called AFTER ResetTime.

Issue History

Date Modified Username Field Change
12.06.2017 07:58 stgatilov New Issue
12.06.2017 07:59 stgatilov Relationship added related to 0004518
12.06.2017 07:59 stgatilov Relationship added related to 0004535
12.06.2017 08:01 stgatilov Note Added: 0008901
18.06.2017 03:52 stgatilov Note Added: 0008913
18.06.2017 03:53 stgatilov Note Edited: 0008913