<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>晦涩的系统API</title><link>http://blog.vckbase.com/zaboli/category/349.html</link><description>晦涩的系统API</description><managingEditor>玻璃小屋</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>玻璃小屋</dc:creator><title>dll中最好不要用__declspec(thread)</title><link>http://blog.vckbase.com/zaboli/archive/2010/02/10/40938.html</link><pubDate>Wed, 10 Feb 2010 02:06:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2010/02/10/40938.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40938.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2010/02/10/40938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40938.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40938.html</trackback:ping><description>如果 DLL 将任何非本地数据或对象声明为 __declspec（线程），动态加载该 DLL 时会导致保护错误。使用 LoadLibrary 加载所有 DLL 后，每当代码引用非本地 __declspec（线程）数据时，将导致系统故障。由于线程的全局变量空间是在运行时分配的，因此此空间的大小是以应用程序的需求和所有静态链接的 DLL 的需求相加为基础计算出来的。使用 LoadLibrary 时，无法扩展此空间以允许放置用 __declspec（线程）声明的线程本地变量。如果 DLL 可能是用 LoadLibrary 加载的，请在 DLL 中使用 TLS API（如 TlsAlloc）来分配 TLS。 &lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40938.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>uafxcwd.lib LIBCMTD.lib 弱外部链接(ZT)</title><link>http://blog.vckbase.com/zaboli/archive/2010/02/05/40921.html</link><pubDate>Fri, 05 Feb 2010 09:09:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2010/02/05/40921.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40921.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2010/02/05/40921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40921.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40921.html</trackback:ping><description>今天debug一程序 出现如下错误：&lt;BR&gt;&lt;BR&gt;uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)&lt;BR&gt;uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)&lt;BR&gt;uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)&lt;BR&gt;&lt;BR&gt;原因：&lt;BR&gt;&lt;BR&gt;CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库，然后再链接 CRT 库。&lt;BR&gt;&lt;BR&gt;当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时，可能会出现以下 LNK2005 错误。&lt;BR&gt;&lt;BR&gt;解决方法：&lt;BR&gt;&lt;BR&gt;强制链接器按照正确的顺序链接库！&lt;BR&gt;&lt;BR&gt;project-&amp;gt;properties-&amp;gt;Linker-&amp;gt;Ignore Specific Library 添加 uafxcwd.lib Libcmtd.lib&lt;BR&gt;&lt;BR&gt;在Additional Dependencied添加uafxcwd.lib Libcmtd.lib&lt;BR&gt;&lt;BR&gt;问题解决！&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40921.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>int Pcm16_2_Mp3()</title><link>http://blog.vckbase.com/zaboli/archive/2010/01/22/40839.html</link><pubDate>Fri, 22 Jan 2010 10:23:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2010/01/22/40839.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40839.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2010/01/22/40839.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40839.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40839.html</trackback:ping><description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;int Pcm16_2_Mp3()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iRet&amp;nbsp;= 0;&lt;BR&gt;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;&amp;nbsp;= 0;&lt;BR&gt;&amp;nbsp;lame_global_flags*&amp;nbsp;gf&amp;nbsp;&amp;nbsp;= NULL;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char&amp;nbsp;&amp;nbsp;mp3buffer[LAME_MAXMP3BUFFER];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Buffer[2][1152];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iread = 0, imp3;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NULL == (gf = lame_init())) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;/* turn off automatic writing of ID3 tag data into mp3 stream &lt;BR&gt;&amp;nbsp;* we have to call it before 'lame_init_params', because that&lt;BR&gt;&amp;nbsp;* function would spit out ID3v2 tag data.&lt;BR&gt;&amp;nbsp;*/&lt;BR&gt;&amp;nbsp;lame_set_write_id3tag_automatic(gf, 0);&lt;BR&gt;&amp;nbsp;lame_set_in_samplerate(gf,8000);&amp;nbsp;&amp;nbsp;&amp;nbsp;// 8kHz&lt;BR&gt;&amp;nbsp;lame_set_num_channels(gf,1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Mono&lt;BR&gt;&amp;nbsp;//gf-&amp;gt;pcmbitwidth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 8;&lt;BR&gt;&amp;nbsp;//gf-&amp;gt;pcm_is_unsigned_8bit&amp;nbsp;&amp;nbsp;= 1;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;/* Now that all the options are set, lame needs to analyze them and&lt;BR&gt;&amp;nbsp;* set some more internal options and check for problems&lt;BR&gt;&amp;nbsp;*/&lt;BR&gt;&amp;nbsp;i = lame_init_params(gf);&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;/* encode */&lt;BR&gt;&amp;nbsp;imp3 = lame_encode_buffer_int(gf, Buffer[0], Buffer[1], iread,mp3buffer, sizeof(mp3buffer));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;/* was our output buffer big enough? */&lt;BR&gt;&amp;nbsp;if (imp3 &amp;lt; 0) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (imp3 == -1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert(0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert(0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;return 1;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;imp3 = lame_encode_flush(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;if (imp3 &amp;lt; 0) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (imp3 == -1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert(0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert(0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;return 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;return iRet;&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40839.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>淘宝网站 IE8 显示 TB 未定义 或 YAHOO 未定义，显示 宝贝：读取中...的问题。</title><link>http://blog.vckbase.com/zaboli/archive/2010/01/18/40805.html</link><pubDate>Mon, 18 Jan 2010 02:46:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2010/01/18/40805.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40805.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2010/01/18/40805.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40805.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40805.html</trackback:ping><description>&lt;FONT color=#0000ff&gt;这个问题是由于 IE 的 Internet 安全增强选项的问题，在工具-》Internet选项 -》 安全 -》可信任站点中 加入如下网址就行了。&lt;BR&gt;http://a.tbcdn.cn&lt;BR&gt;&lt;BR&gt;这个网址是提供部分taobao js脚本的，如果不对其开放权限，是不行的。&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40805.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>speex压缩之后就不用再使用LZW压缩了。。</title><link>http://blog.vckbase.com/zaboli/archive/2009/12/28/40563.html</link><pubDate>Mon, 28 Dec 2009 06:11:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2009/12/28/40563.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40563.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2009/12/28/40563.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40563.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40563.html</trackback:ping><description>测试了一下，speex压缩之后，用lzw也起不到压缩效果了。。speex算法中已经包含了类似于 lzw的算法了？&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40563.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>(zt) speex带宽占用~</title><link>http://blog.vckbase.com/zaboli/archive/2009/12/28/40557.html</link><pubDate>Mon, 28 Dec 2009 05:27:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2009/12/28/40557.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40557.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2009/12/28/40557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40557.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40557.html</trackback:ping><description>&lt;H4 class=beTitle id=subjcns!D39D5CB681D148C0!287&gt;Speex Actual Bandwidth Calculation&lt;/H4&gt;
&lt;DIV class=bvMsg id=msgcns!D39D5CB681D148C0!287&gt;
&lt;DIV&gt;
&lt;DIV&gt;We have finally almost finished Speex coding on AR1688 DSP. This open source voice codec turned out to be much more complicated than we expected. There are 8 different bitrate with 8k sampling, from 2.15kpbs to 24.6kpbs. I am writing this article to answer a question of how much bandwidth this codec actually use during a call.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Let us calculate based on 802.3 ethernet, using SIP protocol:&lt;/DIV&gt;
&lt;DIV&gt;Ethernet CRC: 4 bytes&lt;/DIV&gt;
&lt;DIV&gt;MAC header: 14 bytes&lt;/DIV&gt;
&lt;DIV&gt;IP header: 20 bytes&lt;/DIV&gt;
&lt;DIV&gt;UDP header: 8 bytes&lt;/DIV&gt;
&lt;DIV&gt;RTP header: 12 bytes&lt;/DIV&gt;
&lt;DIV&gt;Speex data: x bytes, x depends on bitrate used and number of frames packed in an ethernet packet ("Voice Frames per TX" option in AR1688)&lt;/DIV&gt;
&lt;DIV&gt;Total: (58 + x) bytes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Speex uses 20ms as a frame, the size of compressed data in a frame with different bitrate are:&lt;/DIV&gt;
&lt;DIV&gt;2.15kbps: 6 bytes&lt;/DIV&gt;
&lt;DIV&gt;3.95kbps: 10 bytes&lt;/DIV&gt;
&lt;DIV&gt;5.95kbps: 15 bytes&lt;/DIV&gt;
&lt;DIV&gt;8kbps: 20 bytes&lt;/DIV&gt;
&lt;DIV&gt;11kbps: 28 bytes&lt;/DIV&gt;
&lt;DIV&gt;15kbps: 38 bytes&lt;/DIV&gt;
&lt;DIV&gt;18.2kbps: 46 bytes&lt;/DIV&gt;
&lt;DIV&gt;24.6kbps: 62 bytes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;When only 1 frame is included in an ethernet frame, the actually used bandwidth are:&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;2.15k: 25.6k&lt;/DIV&gt;
&lt;DIV&gt;3.95k: 27.2k&lt;/DIV&gt;
&lt;DIV&gt;5.95k: 29.2k&lt;/DIV&gt;
&lt;DIV&gt;8k: 31.2k&lt;/DIV&gt;
&lt;DIV&gt;11k: 34.4k&lt;/DIV&gt;
&lt;DIV&gt;15k: 38.4k&lt;/DIV&gt;
&lt;DIV&gt;18.2k: 41.6k&lt;/DIV&gt;
&lt;DIV&gt;24.6k: 48k&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;When 2 frames are included in an ethernet frame, the actually used bandwidth are:&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;2.15k: 14k&lt;/DIV&gt;
&lt;DIV&gt;3.95k: 15.6k&lt;/DIV&gt;
&lt;DIV&gt;5.95k: 17.6k&lt;/DIV&gt;
&lt;DIV&gt;8k: 19.6k&lt;/DIV&gt;
&lt;DIV&gt;11k: 22.8k&lt;/DIV&gt;
&lt;DIV&gt;15k: 26.8k&lt;/DIV&gt;
&lt;DIV&gt;18.2k: 30k&lt;/DIV&gt;
&lt;DIV&gt;24.6k: 36.4k&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;When 3 frames are included in an ethernet frame, the actually used bandwidth are:&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;2.15k: 10.1k&lt;/DIV&gt;
&lt;DIV&gt;3.95k: 11.7k&lt;/DIV&gt;
&lt;DIV&gt;5.95k: 13.7k&lt;/DIV&gt;
&lt;DIV&gt;8k: 15.7k&lt;/DIV&gt;
&lt;DIV&gt;11k: 18.9k&lt;/DIV&gt;
&lt;DIV&gt;15k: 22.9k&lt;/DIV&gt;
&lt;DIV&gt;18.2k: 26.1k&lt;/DIV&gt;
&lt;DIV&gt;24.6k: 32.5k&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;When 4 frames are included in an ethernet frame, the actually used bandwidth are:&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;2.15k: 8.2k&lt;/DIV&gt;
&lt;DIV&gt;3.95k: 9.8k&lt;/DIV&gt;
&lt;DIV&gt;5.95k: 11.8k&lt;/DIV&gt;
&lt;DIV&gt;8k: 13.8k&lt;/DIV&gt;
&lt;DIV&gt;11k: 17k&lt;/DIV&gt;
&lt;DIV&gt;15k: 21k&lt;/DIV&gt;
&lt;DIV&gt;18.2k: 24.2k&lt;/DIV&gt;
&lt;DIV&gt;24.6k: 30.6k&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40557.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>为啥SpeeX也是把8kHz 8bit 的raw PCM数据转成 8kHz 16bit呢？？</title><link>http://blog.vckbase.com/zaboli/archive/2009/12/23/40440.html</link><pubDate>Wed, 23 Dec 2009 05:05:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2009/12/23/40440.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40440.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2009/12/23/40440.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40440.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40440.html</trackback:ping><description>在 SpeeX的&amp;nbsp;&lt;BR&gt;/* Convert input audio bits, endians and channels */&lt;BR&gt;static int read_samples(FILE *fin,int frame_size, int bits, int channels, int lsb, short * input, char *buff, spx_int32_t *size)&lt;BR&gt;&lt;BR&gt;中有如下代码，目的是把 &amp;nbsp;&amp;nbsp;8kHz 8bit 的PCM数据转成 8kHz 16bit的PCM数据。好象mp3算法，g729算法，都没有直接转8kHz 8bit 的PCM数据的方法，都是转成 16bit，不知道为什么？转成 16bit的话，PCM数据不是多了一倍么？？对以后的压缩不会产生影响？？&lt;BR&gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp;if(bits==8)&lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Convert 8-&amp;gt;16 bits */&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=frame_size*channels-1;i&amp;gt;=0;i--)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s[i]=(in[i]&amp;lt;&amp;lt;8)^0x8000;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; } else&lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* convert to our endian format */&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=0;i&amp;lt;frame_size*channels;i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(lsb) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s[i]=le_short(s[i]); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s[i]=be_short(s[i]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40440.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>枚举 CLSID_AudioCompressorCategory 时遇到中断错误！</title><link>http://blog.vckbase.com/zaboli/archive/2009/12/16/40349.html</link><pubDate>Wed, 16 Dec 2009 06:11:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2009/12/16/40349.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40349.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2009/12/16/40349.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40349.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40349.html</trackback:ping><description>&lt;P&gt;&lt;BR&gt;HRESULT GetACMFilterByName(wchar_t* pwcFilterName)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;// Create the System Device Enumerator.&lt;BR&gt;&amp;nbsp;HRESULT hr;&lt;BR&gt;&amp;nbsp;ICreateDevEnum *pSysDevEnum = NULL;&lt;BR&gt;&amp;nbsp;JIF(CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,IID_ICreateDevEnum, (void **)&amp;amp;pSysDevEnum));&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;// Obtain a class enumerator for the video compressor category.&lt;BR&gt;&amp;nbsp;IEnumMoniker *pEnumCat = NULL;&lt;BR&gt;&lt;BR&gt;// 如果应用程序以调试模式启动的话，下面这句会错误中断。。如果直接运行，不启动调试，就可以正常不知道为什么。。。没办法了。。只有后面加一句 assert(0); 然后直接运行。。到assert(0);时用重试进入调试模式。。。&lt;BR&gt;&amp;nbsp;JIF(pSysDevEnum-&amp;gt;CreateClassEnumerator(CLSID_AudioCompressorCategory, &amp;amp;pEnumCat, 0));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;assert(0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;IPropertyBag*&amp;nbsp;pPropBag;&lt;BR&gt;&amp;nbsp;IMoniker*&amp;nbsp;&amp;nbsp;pMoniker&amp;nbsp;= NULL;&lt;BR&gt;&amp;nbsp;ULONG&amp;nbsp;&amp;nbsp;&amp;nbsp;cFetched;&lt;BR&gt;&amp;nbsp;VARIANT&amp;nbsp;&amp;nbsp;&amp;nbsp;varName;&lt;BR&gt;&amp;nbsp;IBaseFilter*&amp;nbsp;pFilter;&lt;BR&gt;&amp;nbsp;LRESULT&amp;nbsp;&amp;nbsp;&amp;nbsp;lrId;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;while(pEnumCat-&amp;gt;Next(1, &amp;amp;pMoniker, &amp;amp;cFetched) == S_OK)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;hr = pMoniker-&amp;gt;BindToStorage(0, 0, IID_IPropertyBag, (void **)&amp;amp;pPropBag);&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (SUCCEEDED(hr))&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;VariantInit(&amp;amp;varName);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;hr = pPropBag-&amp;gt;Read(L"FriendlyName", &amp;amp;varName, 0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SUCCEEDED(hr))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hr = pMoniker-&amp;gt;BindToObject(NULL, NULL, IID_IBaseFilter,(void**)&amp;amp;pFilter);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert(pFilter != 0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//EnumSoundInputPinToCommbo(pFilter,varName.bstrVal,IDC_COMBO_SOUND);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//if(SupportsPropertyPage(pFilter))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;hr = ShowFilterPropertyPage(pFilter,hDlg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;VariantClear(&amp;amp;varName);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAFE_RELEASE(pPropBag);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;SAFE_RELEASE(pMoniker);&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;SAFE_RELEASE(pEnumCat);&lt;BR&gt;&amp;nbsp;SAFE_RELEASE(pSysDevEnum);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;异常时的堆栈信息：&lt;BR&gt;&lt;BR&gt;&amp;gt;&amp;nbsp;&lt;A href="mailto:ntdll.dll!_DbgBreakPoint@0"&gt;ntdll.dll!_DbgBreakPoint@0&lt;/A&gt;() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;A href="mailto:ntdll.dll!_RtlpBreakPointHeap@4"&gt;ntdll.dll!_RtlpBreakPointHeap@4&lt;/A&gt;()&amp;nbsp; + 0x28 字节&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;A href="mailto:ntdll.dll!_RtlpValidateHeapEntry@12"&gt;ntdll.dll!_RtlpValidateHeapEntry@12&lt;/A&gt;()&amp;nbsp; + 0x514ef 字节&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;A href="mailto:ntdll.dll!_RtlDebugFreeHeap@12"&gt;ntdll.dll!_RtlDebugFreeHeap@12&lt;/A&gt;()&amp;nbsp; + 0x97 字节&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;A href="mailto:ntdll.dll!_RtlFreeHeapSlowly@12"&gt;ntdll.dll!_RtlFreeHeapSlowly@12&lt;/A&gt;()&amp;nbsp; + 0x15340 字节&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;A href="mailto:ntdll.dll!_RtlFreeHeap@12"&gt;ntdll.dll!_RtlFreeHeap@12&lt;/A&gt;()&amp;nbsp; + 0x147b9 字节&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;msms001.vwp!04947b68() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;[下面的框架可能不正确和/或缺失，没有为 msms001.vwp 加载符号]&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;msms001.vwp!04932483() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;msms001.vwp!04947539() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;msms001.vwp!0493fcf7() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048d4326() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048d7102() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048d4699() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048c5b1e() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048c4bb0() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048c46d7() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048ca646() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.dll!048ca261() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;vct3216.acm!048a2e04() &amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;A href="mailto:kernel32.dll!_IsProcessorFeaturePresent@4"&gt;kernel32.dll!_IsProcessorFeaturePresent@4&lt;/A&gt;() &amp;nbsp;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40349.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>dshow用avi mux filter 和 file writer filter 写AVI文件的问题？难道是bug?</title><link>http://blog.vckbase.com/zaboli/archive/2009/12/03/40041.html</link><pubDate>Thu, 03 Dec 2009 01:30:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2009/12/03/40041.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/40041.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2009/12/03/40041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/40041.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/40041.html</trackback:ping><description>&lt;P&gt;这几天用 自己写了个源filter，推rgb或是yv12数据给下级的filter。后来想把这些数据写到avi文件中，自然就想到了 avi mux filter + file writer filter来写了。但是遇到一个问题。但每秒帧数设置的大于等于3时，右键盘查看avi文件的属性显示的是正常的。但是当每秒帧数设置为2时，AVI文件属性确显示 14帧/秒，当设置为1时，属性显示7帧/秒，不过播放时，貌似是正常的，我的系统是win2003 sp2，后来在winxp sp2上试，也是这样(另外从暴风中查看属性帧数也不对，用一个叫做 avi mux GUI的软件查看，是正常的)。但是vista中是正常的(不管是系统的AVI文件属性，还是暴风的)。。奇怪死了。难道是系统计算属性时溢出了？？留带以后详细测试吧。。。这次凑合着用吧。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/40041.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>玻璃小屋</dc:creator><title>哎。。带preview的写2路文件的dshow录制filter 链...</title><link>http://blog.vckbase.com/zaboli/archive/2009/11/27/39961.html</link><pubDate>Fri, 27 Nov 2009 08:40:00 GMT</pubDate><guid>http://blog.vckbase.com/zaboli/archive/2009/11/27/39961.html</guid><wfw:comment>http://blog.vckbase.com/zaboli/comments/39961.html</wfw:comment><comments>http://blog.vckbase.com/zaboli/archive/2009/11/27/39961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zaboli/comments/commentRss/39961.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zaboli/services/trackbacks/39961.html</trackback:ping><description>视频预览必须用smart tee分出的preview 脚。。用infinine tee filter的话。。。会停住。。。&lt;BR&gt;&lt;A href="http://blog.vckbase.com//images/vckbase_com/zaboli/352/o_graph_2file_1preview.GIF"&gt;http://blog.vckbase.com//images/vckbase_com/zaboli/352/o_graph_2file_1preview.GIF&lt;/A&gt;&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/zaboli/aggbug/39961.html" width = "1" height = "1" /&gt;</description></item></channel></rss>