Files
Xune/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/RemoteVideoPool.cs
T

369 lines
17 KiB
C#
Raw Normal View History

2021-07-11 22:59:29 -05:00
// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Render.Protocols.Splash.Rendering.RemoteVideoPool
// Assembly: UIX.RenderApi, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1
// Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll
using Microsoft.Iris.Render.Common;
using Microsoft.Iris.Render.Protocol;
using System.Runtime.InteropServices;
namespace Microsoft.Iris.Render.Protocols.Splash.Rendering
{
2021-07-11 23:04:40 -05:00
internal class RemoteVideoPool : RemoteSurfacePool
2021-07-11 22:59:29 -05:00
{
2021-07-11 23:04:40 -05:00
private static ushort[] s_priv_ByteOrder_Msg6_NotifyVideoInputChanged;
private static ushort[] s_priv_ByteOrder_Msg7_SetContentOverscan;
private static ushort[] s_priv_ByteOrder_Msg8_NotifyVideoSizeChanged;
private static ushort[] s_priv_ByteOrder_Msg10_OnFrameReady;
private static ushort[] s_priv_ByteOrder_Msg11_OnClockStop;
private static ushort[] s_priv_ByteOrder_Msg12_OnClockStart;
private static ushort[] s_priv_ByteOrder_Msg13_OnDisconnect;
private static ushort[] s_priv_ByteOrder_Msg14_OnConnect;
protected RemoteVideoPool()
{
}
public unsafe void BuildNotifyVideoInputChanged(
out RenderPort _priv_portUse,
out Message* _priv_pmsgUse,
Size sizeContentPxl,
Size sizeAspectRatio)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg6_NotifyVideoInputChanged);
RemoteVideoPool.Msg6_NotifyVideoInputChanged* videoInputChangedPtr = (RemoteVideoPool.Msg6_NotifyVideoInputChanged*)_priv_portUse.AllocMessageBuffer(size);
videoInputChangedPtr->_priv_size = size;
videoInputChangedPtr->_priv_msgid = 6U;
videoInputChangedPtr->sizeContentPxl = sizeContentPxl;
videoInputChangedPtr->sizeAspectRatio = sizeAspectRatio;
videoInputChangedPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)videoInputChangedPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg6_NotifyVideoInputChanged, typeof(RemoteVideoPool.Msg6_NotifyVideoInputChanged), 0, 0);
_priv_pmsgUse = (Message*)videoInputChangedPtr;
}
public unsafe void SendNotifyVideoInputChanged(Size sizeContentPxl, Size sizeAspectRatio)
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildNotifyVideoInputChanged(out _priv_portUse, out _priv_pmsgUse, sizeContentPxl, sizeAspectRatio);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public unsafe void BuildSetContentOverscan(
out RenderPort _priv_portUse,
out Message* _priv_pmsgUse,
float flContentOverscan)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg7_SetContentOverscan);
RemoteVideoPool.Msg7_SetContentOverscan* setContentOverscanPtr = (RemoteVideoPool.Msg7_SetContentOverscan*)_priv_portUse.AllocMessageBuffer(size);
setContentOverscanPtr->_priv_size = size;
setContentOverscanPtr->_priv_msgid = 7U;
setContentOverscanPtr->flContentOverscan = flContentOverscan;
setContentOverscanPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)setContentOverscanPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg7_SetContentOverscan, typeof(RemoteVideoPool.Msg7_SetContentOverscan), 0, 0);
_priv_pmsgUse = (Message*)setContentOverscanPtr;
}
public unsafe void SendSetContentOverscan(float flContentOverscan)
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildSetContentOverscan(out _priv_portUse, out _priv_pmsgUse, flContentOverscan);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public unsafe void BuildNotifyVideoSizeChanged(
out RenderPort _priv_portUse,
out Message* _priv_pmsgUse,
Size sizeTargetPxl)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg8_NotifyVideoSizeChanged);
RemoteVideoPool.Msg8_NotifyVideoSizeChanged* videoSizeChangedPtr = (RemoteVideoPool.Msg8_NotifyVideoSizeChanged*)_priv_portUse.AllocMessageBuffer(size);
videoSizeChangedPtr->_priv_size = size;
videoSizeChangedPtr->_priv_msgid = 8U;
videoSizeChangedPtr->sizeTargetPxl = sizeTargetPxl;
videoSizeChangedPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)videoSizeChangedPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg8_NotifyVideoSizeChanged, typeof(RemoteVideoPool.Msg8_NotifyVideoSizeChanged), 0, 0);
_priv_pmsgUse = (Message*)videoSizeChangedPtr;
}
public unsafe void SendNotifyVideoSizeChanged(Size sizeTargetPxl)
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildNotifyVideoSizeChanged(out _priv_portUse, out _priv_pmsgUse, sizeTargetPxl);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public unsafe void BuildOnFrameReady(
out RenderPort _priv_portUse,
out Message* _priv_pmsgUse,
int idxFrame,
long nTimeStampQPC,
long nFrameCount,
Rectangle rcContent,
uint nOptions)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg10_OnFrameReady);
RemoteVideoPool.Msg10_OnFrameReady* msg10OnFrameReadyPtr = (RemoteVideoPool.Msg10_OnFrameReady*)_priv_portUse.AllocMessageBuffer(size);
msg10OnFrameReadyPtr->_priv_size = size;
msg10OnFrameReadyPtr->_priv_msgid = 10U;
msg10OnFrameReadyPtr->idxFrame = idxFrame;
msg10OnFrameReadyPtr->nTimeStampQPC = nTimeStampQPC;
msg10OnFrameReadyPtr->nFrameCount = nFrameCount;
msg10OnFrameReadyPtr->rcContent = rcContent;
msg10OnFrameReadyPtr->nOptions = nOptions;
msg10OnFrameReadyPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)msg10OnFrameReadyPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg10_OnFrameReady, typeof(RemoteVideoPool.Msg10_OnFrameReady), 0, 0);
_priv_pmsgUse = (Message*)msg10OnFrameReadyPtr;
}
public unsafe void SendOnFrameReady(
int idxFrame,
long nTimeStampQPC,
long nFrameCount,
Rectangle rcContent,
uint nOptions)
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildOnFrameReady(out _priv_portUse, out _priv_pmsgUse, idxFrame, nTimeStampQPC, nFrameCount, rcContent, nOptions);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public unsafe void BuildOnClockStop(out RenderPort _priv_portUse, out Message* _priv_pmsgUse)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg11_OnClockStop);
RemoteVideoPool.Msg11_OnClockStop* msg11OnClockStopPtr = (RemoteVideoPool.Msg11_OnClockStop*)_priv_portUse.AllocMessageBuffer(size);
msg11OnClockStopPtr->_priv_size = size;
msg11OnClockStopPtr->_priv_msgid = 11U;
msg11OnClockStopPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)msg11OnClockStopPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg11_OnClockStop, typeof(RemoteVideoPool.Msg11_OnClockStop), 0, 0);
_priv_pmsgUse = (Message*)msg11OnClockStopPtr;
}
public unsafe void SendOnClockStop()
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildOnClockStop(out _priv_portUse, out _priv_pmsgUse);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public unsafe void BuildOnClockStart(
out RenderPort _priv_portUse,
out Message* _priv_pmsgUse,
uint nClockGeneration,
uint nFrameRateNumerator,
uint nFrameRateDenominator,
Rectangle rcBasisPxl,
Size sizeAspectRatio)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg12_OnClockStart);
RemoteVideoPool.Msg12_OnClockStart* msg12OnClockStartPtr = (RemoteVideoPool.Msg12_OnClockStart*)_priv_portUse.AllocMessageBuffer(size);
msg12OnClockStartPtr->_priv_size = size;
msg12OnClockStartPtr->_priv_msgid = 12U;
msg12OnClockStartPtr->nClockGeneration = nClockGeneration;
msg12OnClockStartPtr->nFrameRateNumerator = nFrameRateNumerator;
msg12OnClockStartPtr->nFrameRateDenominator = nFrameRateDenominator;
msg12OnClockStartPtr->rcBasisPxl = rcBasisPxl;
msg12OnClockStartPtr->sizeAspectRatio = sizeAspectRatio;
msg12OnClockStartPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)msg12OnClockStartPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg12_OnClockStart, typeof(RemoteVideoPool.Msg12_OnClockStart), 0, 0);
_priv_pmsgUse = (Message*)msg12OnClockStartPtr;
}
public unsafe void SendOnClockStart(
uint nClockGeneration,
uint nFrameRateNumerator,
uint nFrameRateDenominator,
Rectangle rcBasisPxl,
Size sizeAspectRatio)
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildOnClockStart(out _priv_portUse, out _priv_pmsgUse, nClockGeneration, nFrameRateNumerator, nFrameRateDenominator, rcBasisPxl, sizeAspectRatio);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public unsafe void BuildOnDisconnect(out RenderPort _priv_portUse, out Message* _priv_pmsgUse)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg13_OnDisconnect);
RemoteVideoPool.Msg13_OnDisconnect* msg13OnDisconnectPtr = (RemoteVideoPool.Msg13_OnDisconnect*)_priv_portUse.AllocMessageBuffer(size);
msg13OnDisconnectPtr->_priv_size = size;
msg13OnDisconnectPtr->_priv_msgid = 13U;
msg13OnDisconnectPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)msg13OnDisconnectPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg13_OnDisconnect, typeof(RemoteVideoPool.Msg13_OnDisconnect), 0, 0);
_priv_pmsgUse = (Message*)msg13OnDisconnectPtr;
}
public unsafe void SendOnDisconnect()
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildOnDisconnect(out _priv_portUse, out _priv_pmsgUse);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public unsafe void BuildOnConnect(out RenderPort _priv_portUse, out Message* _priv_pmsgUse)
{
Debug2.Throw(this.IsValid, "Non-static method call requires an instance");
_priv_portUse = this.m_renderPort;
_priv_portUse.ValidateHandle(this.m_renderHandle);
uint size = (uint)sizeof(RemoteVideoPool.Msg14_OnConnect);
RemoteVideoPool.Msg14_OnConnect* msg14OnConnectPtr = (RemoteVideoPool.Msg14_OnConnect*)_priv_portUse.AllocMessageBuffer(size);
msg14OnConnectPtr->_priv_size = size;
msg14OnConnectPtr->_priv_msgid = 14U;
msg14OnConnectPtr->_priv_idObjectSubject = this.m_renderHandle;
if (_priv_portUse.ForeignByteOrder)
MarshalHelper.SwapByteOrder((byte*)msg14OnConnectPtr, ref RemoteVideoPool.s_priv_ByteOrder_Msg14_OnConnect, typeof(RemoteVideoPool.Msg14_OnConnect), 0, 0);
_priv_pmsgUse = (Message*)msg14OnConnectPtr;
}
public unsafe void SendOnConnect()
{
RenderPort _priv_portUse;
Message* _priv_pmsgUse;
this.BuildOnConnect(out _priv_portUse, out _priv_pmsgUse);
_priv_portUse.SendRemoteMessage(_priv_pmsgUse);
}
public static RemoteVideoPool CreateFromHandle(
RenderPort port,
RENDERHANDLE handle)
{
return new RemoteVideoPool(port, handle, true);
}
public static RemoteVideoPool CreateFromExternalHandle(
RenderPort port,
RENDERHANDLE handle,
IRenderHandleOwner owner)
{
port.RegisterKnownHandle(owner, handle);
return new RemoteVideoPool(port, handle, false);
}
protected RemoteVideoPool(RenderPort port, RENDERHANDLE handle, bool fFreeOnDispose)
: base(port, handle, fFreeOnDispose)
{
}
protected RemoteVideoPool(RenderPort port, IRenderHandleOwner owner)
: base(port, owner)
{
}
public override bool Equals(object other) => other is RemoteVideoPool && this.m_renderHandle == ((RemoteObject)other).m_renderHandle;
public override int GetHashCode() => base.GetHashCode();
[ComVisible(false)]
private struct Msg6_NotifyVideoInputChanged
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
public Size sizeContentPxl;
public Size sizeAspectRatio;
}
[ComVisible(false)]
private struct Msg7_SetContentOverscan
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
public float flContentOverscan;
}
[ComVisible(false)]
private struct Msg8_NotifyVideoSizeChanged
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
public Size sizeTargetPxl;
}
[ComVisible(false)]
private struct Msg10_OnFrameReady
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
public int idxFrame;
public long nTimeStampQPC;
public long nFrameCount;
public Rectangle rcContent;
public uint nOptions;
}
[ComVisible(false)]
private struct Msg11_OnClockStop
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
}
[ComVisible(false)]
private struct Msg12_OnClockStart
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
public uint nClockGeneration;
public uint nFrameRateNumerator;
public uint nFrameRateDenominator;
public Rectangle rcBasisPxl;
public Size sizeAspectRatio;
}
[ComVisible(false)]
private struct Msg13_OnDisconnect
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
}
[ComVisible(false)]
private struct Msg14_OnConnect
{
public uint _priv_size;
public uint _priv_msgid;
public RENDERHANDLE _priv_idObjectSubject;
}
2021-07-11 22:59:29 -05:00
}
}