fix some scenarios where video pointers should not be replaced

pull/50/head
cosmonaut 2023-06-13 19:18:23 -07:00
parent b65d4e391c
commit c83997609f
2 changed files with 25 additions and 13 deletions

View File

@ -17,7 +17,7 @@ namespace MoonWorks.Video
public uint yStride; public uint yStride;
public uint uvStride; public uint uvStride;
public bool FrameDataUpdated { get; private set; } public bool FrameDataUpdated { get; set; }
bool IsDisposed; bool IsDisposed;
@ -44,18 +44,29 @@ namespace MoonWorks.Video
{ {
lock (this) lock (this)
{ {
if (Dav1dfile.df_readvideo( if (!Ended)
Handle, {
1, if (Dav1dfile.df_readvideo(
out yDataHandle, Handle,
out uDataHandle, 1,
out vDataHandle, out var yDataHandle,
out yDataLength, out var uDataHandle,
out uvDataLength, out var vDataHandle,
out yStride, out var yDataLength,
out uvStride) == 1 out var uvDataLength,
) { out var yStride,
FrameDataUpdated = true; 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;
}
} }
} }
} }

View File

@ -170,6 +170,7 @@ namespace MoonWorks.Video
if (CurrentStream.FrameDataUpdated) if (CurrentStream.FrameDataUpdated)
{ {
UpdateRenderTexture(); UpdateRenderTexture();
CurrentStream.FrameDataUpdated = false;
} }
currentFrame = thisFrame; currentFrame = thisFrame;