protected Rectangle[] GetBlackBands()
{
Rectangle outerRectangle = this.hostingControl.ClientRectangle;
DsRect innerDsRect = new DsRect();
int hr;
if (useEVR)
{
MFVideoNormalizedRect pnrcSource = new MFVideoNormalizedRect();
MediaFoundation.Misc.MFRect prcDest = new MediaFoundation.Misc.MFRect();
hr = evrVideoDisplayControl.GetVideoPosition(pnrcSource, prcDest);
innerDsRect = DsRect.FromRectangle((Rectangle)prcDest);
}
else
{
IVMRWindowlessControl9 vmrWindowlessControl9 = this.videoRenderer as IVMRWindowlessControl9;
hr = vmrWindowlessControl9.GetVideoPosition(null, innerDsRect);
}
Rectangle innerRectangle = innerDsRect.ToRectangle();
//Trace.WriteLineIf(trace.TraceVerbose, string.Format(("\tvideoRenderer.GetVideoPosition({0})"), innerRectangle.ToString()));
//Trace.WriteLineIf(trace.TraceVerbose, string.Format(("\thostingControl.ClientRectangle({0})"), outerRectangle.ToString()));
List<Rectangle> alRectangles = new List<Rectangle>();
if (innerRectangle.Top > outerRectangle.Top)
alRectangles.Add(new Rectangle(outerRectangle.Left, outerRectangle.Top, outerRectangle.Width - 1, innerRectangle.Top - 1));
if (innerRectangle.Bottom < outerRectangle.Bottom)
alRectangles.Add(new Rectangle(outerRectangle.Left, innerRectangle.Bottom, outerRectangle.Width - 1, outerRectangle.Height - (innerRectangle.Bottom + 1)));
if (innerRectangle.Left > outerRectangle.Left)
{
Rectangle rectangleLeft = new Rectangle(outerRectangle.Left, innerRectangle.Top, innerRectangle.Left - 1, innerRectangle.Height - 1);
rectangleLeft.Intersect(outerRectangle);
alRectangles.Add(rectangleLeft);
}
if (innerRectangle.Right < outerRectangle.Right)
{
Rectangle rectangleLeft = new Rectangle(innerRectangle.Right, innerRectangle.Top, outerRectangle.Width - (innerRectangle.Right + 1), innerRectangle.Height - 1);
rectangleLeft.Intersect(outerRectangle);
alRectangles.Add(rectangleLeft);
}
return alRectangles.ToArray();
}