OSDN Git Service

動画の描画を少し高速化。
[strokestylet/CsWin10Desktop3.git] / FDK24 / メディア / 動画.cs
index b305bdf..3819189 100644 (file)
@@ -699,12 +699,20 @@ namespace FDK.メディア
                                                        byte* src = scanLine0;
                                                        byte* dest = (byte*) bitmapLock.Data.DataPointer.ToPointer();
 
-                                                       for( int y = 0; y < this.サイズdpx.Height; y++ )
+                                                       if( pitch != bitmapStride )
                                                        {
-                                                               // ARGB32 to G8B8R8X8 ではデータ変換が不要なので、一行を一気にコピー。
-                                                               動画.CopyMemory( dest, src, (int) this.サイズdpx.Width * 4 );   // ARGB=4バイト。
-                                                               src += pitch;
-                                                               dest += bitmapStride;   // bitmapStride は byte 単位
+                                                               for( int y = 0; y < this.サイズdpx.Height; y++ )
+                                                               {
+                                                                       // ARGB32 to G8B8R8X8 ではデータ変換が不要なので、一行を一気にコピー。
+                                                                       動画.CopyMemory( dest, src, (int) this.サイズdpx.Width * 4 );   // ARGB=4バイト。
+                                                                       src += pitch;
+                                                                       dest += bitmapStride;   // bitmapStride は byte 単位
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               // ARGB32 to G8B8R8X8 ではデータ変換が不要、かつ pitch と bitmapStride が等しいので、全行を一括してコピー。
+                                                               動画.CopyMemory( dest, src, (int) ( this.サイズdpx.Width * this.サイズdpx.Height * 4 ) );   // ARGB=4バイト。
                                                        }
                                                }
                                        }