diff --git a/src/Video/VideoAV1Stream.cs b/src/Video/VideoAV1Stream.cs index 5ac443c..ea89f8c 100644 --- a/src/Video/VideoAV1Stream.cs +++ b/src/Video/VideoAV1Stream.cs @@ -17,7 +17,7 @@ namespace MoonWorks.Video public uint yStride; public uint uvStride; - public bool FrameDataUpdated { get; private set; } + public bool FrameDataUpdated { get; set; } bool IsDisposed; @@ -44,18 +44,29 @@ namespace MoonWorks.Video { lock (this) { - if (Dav1dfile.df_readvideo( - Handle, - 1, - out yDataHandle, - out uDataHandle, - out vDataHandle, - out yDataLength, - out uvDataLength, - out yStride, - out uvStride) == 1 - ) { - FrameDataUpdated = true; + if (!Ended) + { + if (Dav1dfile.df_readvideo( + Handle, + 1, + out var yDataHandle, + out var uDataHandle, + out var vDataHandle, + out var yDataLength, + out var uvDataLength, + out var yStride, + out var uvStride) == 1 + ) { + this.yDataHandle = yDataHandle; + this.uDataHandle = uDataHandle; + this.vDataHandle = vDataHandle; + this.yDataLength = yDataLength; + this.uvDataLength = uvDataLength; + this.yStride = yStride; + this.uvStride = uvStride; + + FrameDataUpdated = true; + } } } } diff --git a/src/Video/VideoPlayer.cs b/src/Video/VideoPlayer.cs index 7c33532..0c9f3e8 100644 --- a/src/Video/VideoPlayer.cs +++ b/src/Video/VideoPlayer.cs @@ -170,6 +170,7 @@ namespace MoonWorks.Video if (CurrentStream.FrameDataUpdated) { UpdateRenderTexture(); + CurrentStream.FrameDataUpdated = false; } currentFrame = thisFrame;