草庐IT

theora_write_frame

全部标签

c++ - 为什么编译器允许你在这里 "write"一个 const 变量?

为什么你可以这样欺骗编译器:constinta=5;*((int*)&a)=5;//VC/armccdoesnotcomplain当上面是这样的“删节”时:constint*ptr2const=&a;int*ptr=ptr2const;//asexpectederrorisraisedhere*ptr=5; 最佳答案 转换是您告诉编译器“我知道我在做什么”的方式,因此它不会提示。不幸的是,在这种情况下,您将调用未定义的行为。 关于c++-为什么编译器允许你在这里"write"一个cons

c++ - OpenCV 2.4.6.1 : Error while grabbing frame from camera

这个问题在这里已经有了答案:Gettingopencverrorinc++(2个答案)关闭5年前。我正在将XCode(OSXMountainLion)与OpenCV结合使用。OpenCV通过自制软件安装(版本2.4.6.1)我的程序应该只访问相机。到目前为止,这是我的代码:usingnamespacecv;intmain(intargc,constchar*argv[]){Matframe;VideoCapturecap(CV_CAP_ANY);if(!cap.isOpened()){std::cerr>frame;if(frame.empty()){std::cerr=0){cap.

c++ - FFmpeg av_read_frame 和最大数据包大小

是否有可能检测到av_read_frame()可以读取的最大数据包(AVpacket)大小? 最佳答案 我最近也在找同样的东西。似乎av_read_frame在内部为每个编解码器/格式调用编解码器特定的read_packet函数。这反过来为每个数据包分配内存并根据编解码器/格式构成的最大限制释放它。因此,只要您有内存来支持(无效)流,您就应该没问题,并且限制特定于编解码器/格式解码器。[您可以找到在AVInputFormat中为每种格式定义的函数,如.read_packet]。 关于c+

c++ - 内存屏障 : How to ensure initialization writes are seen by worker threads?

我对使用内存屏障/栅栏进行编程还很陌生,我想知道我们如何才能保证设置写入在随后在其他CPU上运行的辅助函数中可见。例如,请考虑以下内容:intsetup,sheep;voidSetupSheep()://RunonceCPU1:setup=0;...muchlaterCPU1:sheep=9;CPU1:std::atomic_thread_fence(std::memory_order_release);CPU1:setup=1;之后运行(不是并发),很多很多次:voidManipulateSheep():CPU2:intmySetup=setup;CPU2:std::atomic_t

c++ - FFmpeg av_read_frame 返回大小但没有数据?

我已经编写了一些C代码来访问ffmpeg并将其包装在C++/CLI(.NET管理)类中。该程序获取实时视频流并提取帧并将它们转换为PNG文件。不幸的是,保存到磁盘的图像总是黑色的(在Notepad++中打开它们显示它们充满了空值)。我正在使用程序集aformat/codec-55.dll以及开发头文件和库从ffmpeg-20131120-git-e502783-win64-dev进行编译。整个项目是使用ManagedC++(Cpp/cli).NET4.0for64-bit编译的。经过一些调查,问题似乎是av_read_frame正确填充了AVPacket->size值,但AVPAcke

c++ - 同步 boost ASIO : Asynchronous write,

我有一个程序(客户端+服务器)可以正常工作:boost::asio::write(this->socket_,boost::asio::buffer(message.substr(count,length_to_send)));哪里socket_是boost::asio::ssl::stream和message是一个std::string.我想让它变得更好和非阻塞,所以我创建了一个可以替代它的函数,它的调用如下:write_async_sync(socket_,message.substr(count,length_to_send));这个函数的目的是:本质上使调用异步保持界面不变我实

c++ - boost::write_graphviz - 如何水平生成图形

我正在尝试使用BoostGraphLibrary生成一个显示水平图的.dot。创建图表时我的代码如下所示:structVertexP{std::stringtag;};structEdgeP{std::stringsymbol;};structGraphP{std::stringorientation;};typedefboost::adjacency_listGraph;GraphPproperty;property.orientation="LR";Graphgraph(property);//Thenfillthegraph我用来生成.dot文件的代码是这样的:Graphg=cr

c++ - 检查 write()/send() 是否可以无阻塞地处理整个缓冲区,否则失败(没有部分写入)

我正在使用SOCK_SEQPACKET连接,确保通过单个write()/send()调用发送整个缓冲区对我来说至关重要。我还在使用旨在通过一次调用处理完整数据block的设备驱动程序。同时,我想处理write()/send()由于缓冲区溢出而阻塞的情况,即我想反馈当前实现是否在这里遇到瓶颈。我正在使用glibc,Linux2.6。我需要实现一个接受缓冲区的方法,它要么完全发送一个缓冲区,要么指示由于阻塞导致的失败(即系统缓冲区溢出)。看起来使用send(...,MSG_DONTWAIT)/fcntl(...,O_NONBLOCK)不是解决方案,因为它们在报告EWOULDBLOCK/EA

c++ - 卡住在 __write_nocancel

所以我有一个非常重要的程序,偶尔会卡住。该程序使用Qt、开放场景图和谷歌日志记录。这种卡住发生在谷歌日志中的打印中间。该程序本身正在打印大量调试信息。我能够通过gdb-server连接到程序,这是堆栈跟踪:#00x000000397ac0e030in__write_nocancel()at../sysdeps/unix/syscall-template.S:82#10x00007f5eecb74aebingoogle::LogMessage::SendToLog()()from/lib64/libglog.so.0#20x00007f5eecb71fc7ingoogle::LogMes

c++ - Valgrind 在空析构函数上给出 "Invalid write of size 8"

我有一个声明:std::map*myMap;进入某个类A。这个映射是在A的构造函数中创建的:myMap=newstd::map;MyClass类基本上是一个结构,用于存储一些带有一些getter/setter的数据。MyClass中没有任何指针或新实例,只有一对枚举值、一个无符号整数和一个bool值。所以MyClass析构函数是空的。另一方面,在A的析构函数中我正在删除映射:A::~A(){if(myMap!=NULL){deletemyMap;myMap=NULL;}}这里Valgrind在删除行上告诉我“地址0x4c389b0是一个大小为48的block内的16个字节free'd[