Пример #1
0
 unsafe void OnpDisplay(void *opaque, void *picture)
 {
     lock (m_lock)
     {
         try
         {
             m_frameRate++;
             if (m_callback != null)
             {
                 PlanarFrame pf = GetFrame();
                 m_callback(pf);
             }
         }
         catch (Exception ex)
         {
             if (m_excHandler != null)
             {
                 m_excHandler(ex);
             }
             else
             {
                 throw;
             }
         }
     }
 }
Пример #2
0
        unsafe void OnpDisplay(void *opaque, void *picture)
        {
            lock (m_lock)
            {
                try
                {
                    m_frameRate++;
                    for (int i = 0; i < m_pixelData.Sizes.Length; i++)
                    {
                        m_planes[i] = new IntPtr(m_pixelData.Data[i]);
                    }

                    if (m_callback != null)
                    {
                        PlanarFrame pf = GetFrame();
                        m_callback(pf);
                    }
                }
                catch (Exception ex)
                {
                    if (m_excHandler != null)
                    {
                        m_excHandler(ex);
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
        }
Пример #3
0
        private void OnNewFrameCallbackEx(PlanarFrame frame)
        {
            Monitor.Enter(_lockStateModif);
            try
            {
                /*
                 * data.Data = frame.Planes[0];
                 * data.DataSize = frame.Lenghts[0];
                 * data.PTS = frameCounter++ * MicroSecondsBetweenFrame;
                 *
                 * InputMedia.AddFrame(data); // DTS ramane pe default ( -1 )
                 *
                 * for (int i = 0; i < frame.Planes.Length; frame.Planes[i++] = IntPtr.Zero) ;*/

                //if (/*m_inputMedia.PendingFramesCount == 10 && */!Player.IsPlaying) { Player.Play(); }

                data = new FrameData()
                {
                    Data = frame.Planes[0], DataSize = frame.Lenghts[0], DTS = -1, PTS = frameCounter++ *MicroSecondsBetweenFrame
                };
                InputMedia.AddFrame(data);
                //data.
                //InputMedia.AddFrame(new FrameData() { Data = frame.Planes[1], DataSize = frame.Lenghts[1], DTS = -1, PTS = frameCounter++ * MicroSecondsBetweenFrame });
                //InputMedia.AddFrame(new FrameData() { Data = frame.Planes[2], DataSize = frame.Lenghts[2], DTS = -1, PTS = frameCounter++ * MicroSecondsBetweenFrame });
            }
            finally
            {
                Monitor.Exit(_lockStateModif);
            }
        }
        private void OnNewFrame(PlanarFrame frame)
        {
            Marshal.Copy(frame.Planes[0], m_ptr_buffer, 0, m_format.Width * m_format.Height);
            Marshal.Copy(frame.Planes[2], m_ptr_buffer, m_format.Width * m_format.Height, m_format.Width * m_format.Height / 4);
            Marshal.Copy(frame.Planes[1], m_ptr_buffer, m_format.Width * m_format.Height + m_format.Width * m_format.Height / 4, m_format.Width * m_format.Height / 4);

            IntPtr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(m_ptr_buffer, 0);

            this.d3dSource.Render(ptr);
        }
Пример #5
0
        private void OnNewFrameCallback(PlanarFrame frame)
        {
            data.Data     = frame.Planes[0];
            data.DataSize = frame.Lenghts[0];
            data.PTS      = frameCounter++ *MicroSecondsBetweenFrame;
            m_inputMedia.AddFrame(data);

            if (/*m_inputMedia.PendingFramesCount == 10 && */ !m_renderPlayer.IsPlaying)
            {
                m_renderPlayer.Play();
            }
        }
Пример #6
0
        unsafe void OnpDisplay(void *opaque, void *picture)
        {
            lock (m_lock)
            {
                m_frameRate++;
                for (int i = 0; i < m_pixelData.Sizes.Length; i++)
                {
                    m_planes[i] = new IntPtr(m_pixelData.Data[i]);
                }

                if (m_callback != null)
                {
                    PlanarFrame pf = GetFrame();
                    m_callback(pf);
                }
            }
        }
Пример #7
0
        private unsafe void OnNewFrameCallback(PlanarFrame frame)
        {
            if (m_firstFrameTS == 0)
                m_firstFrameTS = m_factory.Clock;

            data.Data = frame.Planes[0];
            data.DataSize = frame.Lenghts[0];
            data.PTS = m_factory.Clock - m_firstFrameTS;

            m_inputMedia.AddFrame(VIDEO_ID, data);

            if (/*m_inputMedia.PendingFramesCount == 10 &&*/ !m_renderPlayer.IsPlaying)
            {
                m_renderPlayer.Open(m_inputMedia);
                m_renderPlayer.Mute = false;
                m_renderPlayer.Volume = 100;
                m_renderPlayer.Play();
            }
        }