当前位置: 首页>>代码示例>>C++>>正文


C++ VideoFrame::setHoldTime方法代码示例

本文整理汇总了C++中VideoFrame::setHoldTime方法的典型用法代码示例。如果您正苦于以下问题:C++ VideoFrame::setHoldTime方法的具体用法?C++ VideoFrame::setHoldTime怎么用?C++ VideoFrame::setHoldTime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VideoFrame的用法示例。


在下文中一共展示了VideoFrame::setHoldTime方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: VideoFrame

VideoFrame *SimpleV4L2::readFrame()
{
	struct v4l2_buffer buf;
	unsigned int i;
	
	VideoFrame *frame = new VideoFrame();
	frame->setPixelFormat(QVideoFrame::Format_RGB32);
	frame->setCaptureTime(QTime::currentTime());
	frame->setBufferType(VideoFrame::BUFFER_POINTER);
	frame->setHoldTime(1000/30);
	frame->setSize(m_imageSize);
		
	if(!m_startedCapturing)
		return frame;
	
/*	struct timeval tv_start, tv_end;
	
	if (gettimeofday(&tv_start, 0) < 0) {
		errno_exit("Error getting time");
	}*/
	
	//QByteArray array;
		
	switch (m_io) {
	
	case IO_METHOD_READ:
		if (-1 == read (m_fd, m_buffers[0].start, m_buffers[0].length)) {
			switch (errno) {
			case EAGAIN:
				return frame;

			case EIO:
				/* Could ignore EIO, see spec. */

				/* fall through */

			default:
				errno_exit ("read");
			}
		}

		//array.append((char*)m_buffers[0].start, m_buffers[0].length);
		//frame->setByteArray(array);
		
		//frame->pointer = (uchar*)malloc(sizeof(uchar) * m_buffers[0].length);
		memcpy(frame->allocPointer(m_buffers[0].length), m_buffers[0].start, m_buffers[0].length);
	
		break;

	case IO_METHOD_MMAP:
		CLEAR (buf);

		buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
		buf.memory = V4L2_MEMORY_MMAP;

		if (-1 == xioctl (m_fd, VIDIOC_DQBUF, &buf)) {
			switch (errno) {
			case EAGAIN:
				return frame;

			case EIO:
				/* Could ignore EIO, see spec. */

				/* fall through */

			default:
				errno_exit ("VIDIOC_DQBUF");
			}
		}

		assert (buf.index < m_numBuffers);

// 		array.append((char*)m_buffers[buf.index].start, m_buffers[buf.index].length);
// 		frame->setByteArray(array);

		//frame->pointer = (uchar*)malloc(sizeof(uchar) * m_buffers[buf.index].length);
		{
			uchar *pointer = frame->allocPointer(m_buffers[buf.index].length);
			//qDebug() << "SimpleV4L2::readFrame: Read "<<m_buffers[buf.index].length<<" bytes into pointer "<<pointer;
			memcpy(pointer, m_buffers[buf.index].start, m_buffers[buf.index].length);
		}
		
		
		if (-1 == xioctl (m_fd, VIDIOC_QBUF, &buf))
			errno_exit ("VIDIOC_QBUF");

		break;

	case IO_METHOD_USERPTR:
		CLEAR (buf);

		buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
		buf.memory = V4L2_MEMORY_USERPTR;

		if (-1 == xioctl (m_fd, VIDIOC_DQBUF, &buf)) {
			switch (errno) {
			case EAGAIN:
				return frame;

			case EIO:
//.........这里部分代码省略.........
开发者ID:TritonSailor,项目名称:livepro,代码行数:101,代码来源:SimpleV4L2.cpp


注:本文中的VideoFrame::setHoldTime方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。