/// <summary> /// フレームキャプチャ完了時に呼び出されるコールバック関数 /// </summary> /// <param name="sample_time">サンプルタイム</param> /// <param name="addr">サンプルデータの先頭アドレス</param> /// <param name="length">サンプルデータ長 (bytes)</param> /// <returns> /// DSLab.HRESULT.S_OK を返します。 /// </returns> int ISampleGrabberCB.BufferCB(double sample_time, IntPtr addr, int length) { if (this.Enable) { var args = new CxSampleGrabberEventArgs(sample_time, addr, length); if (this.Notify != null) this.Notify(this, args); if (args.Cancellation) return (int)HRESULT.S_FALSE; } return (int)HRESULT.S_OK; }
/// <summary> /// フレームキャプチャ完了時に呼び出されるコールバック関数 /// </summary> /// <param name="sample_time">サンプルタイム</param> /// <param name="sample_data">サンプルデータ</param> /// <returns> /// DSLab.HRESULT.S_OK を返します。 /// </returns> int ISampleGrabberCB.SampleCB(double sample_time, IMediaSample sample_data) { if (this.Enable) { var args = new CxSampleGrabberEventArgs(sample_time, sample_data); if (this.Notify != null) this.Notify(this, args); if (args.Cancellation) return (int)HRESULT.S_FALSE; } return (int)HRESULT.S_OK; }
/// <summary> /// 同期用: サンプルグラバーの通知イベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void VideoGrabberCB_Notify(object sender, CxSampleGrabberEventArgs e) { var index = (this.BufferIndex + 1) % this.Buffer.Length; var image = e.ToImage(VideoInfoHeader); this.Buffer[index] = image; this.BufferIndex = index; }
/// <summary> /// �t���[���L���v�`���������ɌĂяo�����R�[���o�b�N�� /// </summary> /// <param name="sample_time">�T���v���^�C��</param> /// <param name="addr">�T���v���f�[�^�̐擪�A�h���X</param> /// <param name="length">�T���v���f�[�^�� (bytes)</param> /// <returns> /// DSLab.HRESULT.S_OK ��Ԃ��܂��B /// </returns> int ISampleGrabberCB.BufferCB(double sample_time, IntPtr addr, int length) { if (this.Enable) { var args = new CxSampleGrabberEventArgs(sample_time, addr, length); if (this.Notify != null) this.Notify(this, args); if (args.Cancellation) return (int)HRESULT.S_FALSE; } return (int)HRESULT.S_OK; }
/// <summary> /// �t���[���L���v�`���������ɌĂяo�����R�[���o�b�N�� /// </summary> /// <param name="sample_time">�T���v���^�C��</param> /// <param name="sample_data">�T���v���f�[�^</param> /// <returns> /// DSLab.HRESULT.S_OK ��Ԃ��܂��B /// </returns> int ISampleGrabberCB.SampleCB(double sample_time, IMediaSample sample_data) { if (this.Enable) { var args = new CxSampleGrabberEventArgs(sample_time, sample_data); if (this.Notify != null) this.Notify(this, args); if (args.Cancellation) return (int)HRESULT.S_FALSE; } return (int)HRESULT.S_OK; }