/* * * // Windowに直接描画するとき * // SetFilter(SMPEG.SMPEGfilter_bilinear()); * // とかすればスムーズに拡大・縮小されるのかと思いきや、そうでもない。 * // 微妙な違いはあるのだが、拡大とかする前の段階での処理のようで、 * // 見比べてみないと分からない程度。 * // よって、とりあえずデフォルトのままにしておく。 * * private void SetFilter(IntPtr filter) * { * IntPtr f = SMPEG.SMPEG_filter(mpeg, filter); * // 古いフィルタの後始末 * SMPEG.SMPEG_Filter fs = (SMPEG.SMPEG_Filter)Marshal.PtrToStructure(f, typeof(SMPEG.SMPEG_Filter)); * fs.destroy(f); * } * * //*/ /// <summary> /// play中のムービーを停止させる /// </summary> public void Stop() { lock (lockObject) { #if RELEASE_ON_STOP if (fileName != null) { // Release()で一端filenameはnullになるので、終わってから再設定する。(´ω`) string tmp = fileName; Release(); fileName = tmp; } #else Debug.Assert(Loaded); if (IsPlaying) { if (!paused) { InnerStop(); } paused = false; SMPEG.SMPEG_rewind(mpeg); // 巻き戻す } #endif } }
/// <summary> /// 再生開始 /// </summary> public YanesdkResult Play() { lock (lockObject) { #if RELEASE_ON_STOP if (IsPlaying) { if (!paused) { InnerStop(); } paused = false; SMPEG.SMPEG_rewind(mpeg); // 巻き戻す } else { if (!Loaded && fileName != null) { YanesdkResult result = Load(fileName); if (result != YanesdkResult.NoError) { return(result); } } } #else Stop(); #endif readyToDraw = false; // 描画しなおされるまでは描画準備状態とする InnerPlay(); return(YanesdkResult.NoError); } }