草庐IT

ffmpeg-static

全部标签

c++ - G++ 4.6 -std=gnu++0x : Static Local Variable Constructor Call Timing and Thread Safety

voida(){...}voidb(){...}structX{X(){b();}};voidf(){a();staticXx;...}假设在进入main之后,f被多个线程(可能竞争)多次调用。(当然,唯一对a和b的调用是上面看到的那些)以上代码在-std=gnu++0x模式下用gccg++4.6编译时:Q1。是否保证至少调用一次a()并在调用b()之前返回?也就是说,在第一次调用f()时,x的构造函数是否会同时调用一个自动持续时间局部变量(非静态)(而不是在全局静态初始化时间)?Q2。是否保证b()只会被调用一次?即使两个线程第一次同时在不同的核上执行f?如果是,GCC生成的代码通过

c++ - 使用 ffmpeg 和分离的 AVCodecContext 解码 h264 rtsp

我需要一些解码rtsp视频流的帮助。我从AXISIP摄像机获得它。我为此使用ffmpeg库。需要单独创建AVCodecContext,而不是从AVFormatContext->streams[...]->codec;所以我创建了AVCodec、AVCOdecContext并尝试初始化它们。AVCodec*codec=avcodec_find_decoder(codec_id);if(!codec){qDebug()}AVCodecContext*context=avcodec_alloc_context3(codec);if(!context){qDebug()}avcodec_ope

c++ - FFMPEG Seeking 带来音频伪像

我正在使用ffmpeg实现音频解码器。虽然读取音频甚至搜索已经有效,但我想不出一种在搜索后清除缓冲区的方法,因此当应用程序在搜索后立即开始读取音频时,我没有任何伪影。avcodec_flush_buffers似乎对内部缓冲区没有任何影响。所有解码器(mp3、aac、wma等)都会出现此问题,但PCM/WAV(由于音频未压缩,因此不使用内部缓冲区来保存要解码的数据)。代码片段很简单:av_seek_frame(audioFilePack->avContext,audioFilePack->stream,posInTimeFrame,AVSEEK_FLAG_ANY);avcodec_flu

c++ - 关于多线程环境下static const变量的使用

我正在尝试了解潜在的场景以及它是否可能成为问题。所以我有一个当前线程安全的静态函数。函数是这样的:staticthread_safe_func(){...process}现在在此函数中,我添加以下内容:staticthread_safe_func(){staticconstClass::NonThreadSafeClassName()*array[16]={Class::NonThreadSafeClassName(),Class::NonThreadSafeClassName(),Class::NonThreadSafeClassName(),Class::NonThreadSafe

c++ - 错误 : invalid use of member in static member function

我有两个类,这是其中一个的标题:#ifndefWRAPPER_HPP#defineWRAPPER_HPP#includeusingnamespacestd;classWrapper{private://SDL_Surface*screen;public:staticSDL_Surface*screen;staticvoidset_screen(SDL_Surface*_screen);staticvoidset_pixel(intx,inty,Uint8color);staticvoidclear_screen(intr,intg,intb);staticSDL_Surface*loa

c++ - avcodec_open2 方法中的 ffmpeg 内存泄漏

我开发了一个处理实时视频流的应用程序。问题是它应该作为服务运行,随着时间的推移,我注意到一些内存增加了。当我使用valgrind检查应用程序时-它没有发现任何与泄漏相关的问题。所以我用谷歌配置文件工具检查了它。这是运行大约6小时后的结果(从最新的转储中减去第一个转储):30.035.7%35.7%30.035.7%av_malloc28.934.4%70.2%28.934.4%av_reallocp24.529.2%99.4%24.529.2%x264_malloc当我检查图表上的内存时,我发现这些分配与avcodec_open2相关。客户端代码为:`g_EncoderMutex.lo

c++ - 如果函数被称为 constexpr,则有条件地 static_assert

我知道有人提议使用constexpr()运算符,但这还没有在gcc/clang中实现。我也知道有一个使用机器代码编辑等技巧的实现:http://saadahmad.ca/detecting-evaluation-context-inside-constexpr-functions/我想知道是否有一个有点受限的解决方案:structF{constexprF(intv){ifconstexpr(constexpr()){static_assert(v>0);}else{assert(v>0);}}};//...constexprFf{0};//shouldtriggeracompile-t

c++ - 在 VS2008 和 GCC 中编译 static const int = X 的最佳代码

我在编写需要在VisualStudio2008和GCC4.6中编译(并且还需要编译回GCC3.4)的C++代码时遇到了一个问题:staticconstint类成员。Otherquestionshavecoveredstaticconstint类成员所需的规则。特别是,标准和GCC要求变量在一个且仅一个目标文件中有定义。但是,VisualStudio在编译包含.cpp文件中的定义的代码(在Debug模式下)时会产生LNK2005错误。我试图在其中做出决定的一些方法是:使用.cpp文件中的值而不是header对其进行初始化。使用预处理器删除MSVC的定义。将其替换为枚举。用宏替换它。最后两

c++ - 铿锵错误 : ambiguous conversion for static_cast

我有以下代码:typedefintAliasB;typedefunsignedshortAliasA;classAlias{public:explicitAlias(intsomeInt){}};//(*)!!belowbreakstheconversionpathviaAliasA!!//typedefAliasAliasA;classC{public:C(){}};classB{public:B(){}B(constAliasB&value){}operatorAliasB()const{return-1000;}Ccombine(constB&someB){returnC();}

c++ - OpenCV/FFMpeg图像捕捉问题

我正在尝试从IP摄像机实时捕捉图像。该流在VLC中运行良好,但OpenCV的cvQueryFrame()似乎将传入的图像弄乱并损坏到无法识别的程度。同样,从文件中捕获工作正常,但不是实时流。以防万一,我使用的是rtsp连接URL;我也用两种不同的相机型号(不同品牌)尝试过,但问题仍然存在。此外,(我假设)编解码器正在输出以下几种错误:MB错误:1746和隐藏6000DC、6000AC、6000MV错误。我能做什么?更新:序列中的第一个错误总是cannotparallelizedeblockingtype1,decodingsuchframesinsequentialorder更新2:好