Exemplo n.º 1
0
        /*
         *
         * // 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
            }
        }
Exemplo n.º 2
0
        /// <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);
            }
        }