锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美成人激情视频免费观看,欧美系列亚洲系列,国产日韩欧美在线一区http://m.shnenglu.com/bangle/鐢峰効褰撹嚜寮?/description>zh-cnSun, 16 Nov 2025 07:52:59 GMTSun, 16 Nov 2025 07:52:59 GMT60UML鍩虹鐭ヨ瘑http://m.shnenglu.com/bangle/archive/2011/04/27/145141.html榛戣壊澶╀嬌榛戣壊澶╀嬌Wed, 27 Apr 2011 06:24:00 GMThttp://m.shnenglu.com/bangle/archive/2011/04/27/145141.htmlhttp://m.shnenglu.com/bangle/comments/145141.htmlhttp://m.shnenglu.com/bangle/archive/2011/04/27/145141.html#Feedback0http://m.shnenglu.com/bangle/comments/commentRss/145141.htmlhttp://m.shnenglu.com/bangle/services/trackbacks/145141.html闃呰鍏ㄦ枃

]]>
lamda鐨勭畝鍗曞疄鐜?/title><link>http://m.shnenglu.com/bangle/archive/2011/03/22/142527.html</link><dc:creator>榛戣壊澶╀嬌</dc:creator><author>榛戣壊澶╀嬌</author><pubDate>Tue, 22 Mar 2011 15:47:00 GMT</pubDate><guid>http://m.shnenglu.com/bangle/archive/2011/03/22/142527.html</guid><wfw:comment>http://m.shnenglu.com/bangle/comments/142527.html</wfw:comment><comments>http://m.shnenglu.com/bangle/archive/2011/03/22/142527.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bangle/comments/commentRss/142527.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bangle/services/trackbacks/142527.html</trackback:ping><description><![CDATA[鎵璋揕ambda錛岀畝鍗曠殑璇存槸蹇熺殑灝忓嚱鏁扮敓鎴?<br>鍦⊿TL鐨勭畻娉曚腑寰堝鍦版柟闇瑕佹彁渚涗竴涓嚱鏁板璞℃垨浠垮嚱鏁板for_each<br> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">for_each(v.begin(), v.end(), op());    </span><span style="color: #008000;">//</span><span style="color: #008000;">鍘熸牸寮忓姝?br></span></div> 濡傛灉闇瑕佷笉鐢ㄧ殑綆楁硶灝遍渶瑕佷簺涓嶅悓鐨勫嚱鏁板璞★紝浣嗘槸寮曠敤浜嗕竾鑳界殑lambda鍚庢晥鏋滃氨涓嶅悓浜?鏁堟灉濡備笅<br> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #000000;">for_each(v.begin(), v.end(), _1</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">);    </span><span style="color: #008000;">//</span><span style="color: #008000;">_1=2鏄竴涓豢鍑芥暟,閫氳繃閲嶈澆=瀹炵幇<br></span></div> 闇瑕佺殑鎿嶄綔涓鐩簡鐒訛紝綆鍗曞垎鏋愪笅for_each絎笁涓弬鏁伴渶瑕佺殑鏄竴涓嚱鏁版垨浠垮嚱鏁幫紝鎵浠1=2蹇呯劧浜х敓鐨勬槸涓涓豢鍑芥暟,澶ц嚧鍙互鎺ㄥ嚭鏄噸杞戒簡=瀹炵幇鐨勪駭鐢熶豢鍑芥暟錛岄偅涔堢湡姝g殑鎿嶄綔榪橀渶瑕佷竴涓皝瑁咃紝鍗抽渶瑕佷袱涓被瀹炵幇錛岀涓涓被澶ц嚧濡備笅<br> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #0000ff;">struct</span><span style="color: #000000;"> place_holder<br>{<br>    </span><span style="color: #008000;">//</span><span style="color: #008000;">閲嶈澆闇瑕佺殑綆楁硶鎿嶄綔</span><span style="color: #008000;"><br></span><span style="color: #000000;">    template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename R</span><span style="color: #000000;">></span><span style="color: #000000;"><br>    op</span><span style="color: #000000;"><</span><span style="color: #000000;">R</span><span style="color: #000000;">></span><span style="color: #000000;"> </span><span style="color: #0000ff;">operator</span><span style="color: #000000;">=</span><span style="color: #000000;">(R i)<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> op</span><span style="color: #000000;"><</span><span style="color: #000000;">R</span><span style="color: #000000;">></span><span style="color: #000000;">(i);<br>    }<br>};</span></div> 妯℃澘浣垮緱榪欎釜緇撴瀯鍙互浼犲叆浠諱綍綾誨瀷鐨勫弬鏁幫紝閫氳繃閲嶈澆=鎿嶄綔鍐呴儴榪斿洖浜嗕竴涓豢鍑芥暟錛屽叿浣撶殑鎿嶄綔鐢變竴涓嬬殑浠垮嚱鏁板疄鐜?br> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #008000;">//</span><span style="color: #008000;">浠垮嚱鏁幫紝鍗抽噸杞戒簡()鎿嶄綔鐨勭被</span><span style="color: #008000;"><br></span><span style="color: #000000;">template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename T</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> op<br>{<br>    op(T i): _i(i) {}<br>    T </span><span style="color: #0000ff;">operator</span><span style="color: #000000;">()(T </span><span style="color: #000000;">&</span><span style="color: #000000;">i)<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> _i;<br>    }<br>    T _i;<br>};</span></div> 榪欎釜浠垮嚱鏁板皢浼犲叆鐨勫紩鐢ㄥ弬鏁拌繘琛屼簡璧嬪兼搷浣滐紝瀹炵幇浜嗘渶緇堢殑鎿嶄綔.<br>浠ヤ笂鐨勪唬鐮佸疄鐜?鎿嶄綔濡傛灉闇瑕佸叾浠栨搷浣滃垯閲嶈澆鐩稿簲鐨勬搷浣滀緥濡?=<br>渚濇綾繪帹鍗犱綅綾誨疄鐜?=騫墮氳繃浠垮嚱鏁板彲浠ュ疄鐜?=鐨勬搷浣滀互涓嬫槸瀹屾垚鐨勪唬鐮?br> <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><span style="color: #008000;">//</span><span style="color: #008000;"> lambda.cpp : 瀹氫箟鎺у埗鍙板簲鐢ㄧ▼搴忕殑鍏ュ彛鐐廣?br></span><span style="color: #008000;">//<br></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;">"</span><span style="color: #000000;">stdafx.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">vector</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">algorithm</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> std;<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">浠垮嚱鏁幫紝鍗抽噸杞戒簡()鎿嶄綔鐨勭被</span><span style="color: #008000;"><br></span><span style="color: #000000;">template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename T</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> op<br>{<br>    op(T i): _i(i) {}<br>    T </span><span style="color: #0000ff;">operator</span><span style="color: #000000;">()(T </span><span style="color: #000000;">&</span><span style="color: #000000;">i)<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> _i;<br>    }<br>    T _i;<br>};<br>template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename T</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> op1<br>{<br>    op1(T i):_i(i){}<br>    T </span><span style="color: #0000ff;">operator</span><span style="color: #000000;">()(T </span><span style="color: #000000;">&</span><span style="color: #000000;">i)<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> i </span><span style="color: #000000;">+</span><span style="color: #000000;"> _i;<br>    }<br>    T _i;<br>};<br><br></span><span style="color: #008000;">//</span><span style="color: #008000;">鍗犱綅絎?/span><span style="color: #008000;"><br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> place_holder<br>{<br>    </span><span style="color: #008000;">//</span><span style="color: #008000;">閲嶈澆闇瑕佺殑綆楁硶鎿嶄綔</span><span style="color: #008000;"><br></span><span style="color: #000000;">    template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename R</span><span style="color: #000000;">></span><span style="color: #000000;"><br>    op</span><span style="color: #000000;"><</span><span style="color: #000000;">R</span><span style="color: #000000;">></span><span style="color: #000000;"> </span><span style="color: #0000ff;">operator</span><span style="color: #000000;">=</span><span style="color: #000000;">(R i)<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> op</span><span style="color: #000000;"><</span><span style="color: #000000;">R</span><span style="color: #000000;">></span><span style="color: #000000;">(i);<br>    }<br>    template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename R</span><span style="color: #000000;">></span><span style="color: #000000;"><br>    op1</span><span style="color: #000000;"><</span><span style="color: #000000;">R</span><span style="color: #000000;">></span><span style="color: #000000;"> </span><span style="color: #0000ff;">operator</span><span style="color: #000000;">+=</span><span style="color: #000000;">(R i)<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> op1</span><span style="color: #000000;"><</span><span style="color: #000000;">R</span><span style="color: #000000;">></span><span style="color: #000000;">(i);<br>    }<br>};<br><br>place_holder _1;<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> _tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> argc, _TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;"> argv[])<br>{<br>    vector</span><span style="color: #000000;"><</span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;"> v;<br>    v.push_back(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>    v.push_back(</span><span style="color: #000000;">2</span><span style="color: #000000;">);<br>    v.push_back(</span><span style="color: #000000;">3</span><span style="color: #000000;">);<br><br>    </span><span style="color: #008000;">//</span><span style="color: #008000;">for_each(v.begin(), v.end(), op());    </span><span style="color: #008000;">//</span><span style="color: #008000;">鍘熸牸寮忓姝?/span><span style="color: #008000;"><br></span><span style="color: #000000;">    for_each(v.begin(), v.end(), _1</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">);    </span><span style="color: #008000;">//</span><span style="color: #008000;">_1=2鏄竴涓豢鍑芥暟,閫氳繃閲嶈澆=瀹炵幇</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}</span></div> <br><br> <img src ="http://m.shnenglu.com/bangle/aggbug/142527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bangle/" target="_blank">榛戣壊澶╀嬌</a> 2011-03-22 23:47 <a href="http://m.shnenglu.com/bangle/archive/2011/03/22/142527.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>bind鍑芥暟鐨勭畝鍗曞疄鐜?/title><link>http://m.shnenglu.com/bangle/archive/2011/03/22/142526.html</link><dc:creator>榛戣壊澶╀嬌</dc:creator><author>榛戣壊澶╀嬌</author><pubDate>Tue, 22 Mar 2011 15:46:00 GMT</pubDate><guid>http://m.shnenglu.com/bangle/archive/2011/03/22/142526.html</guid><wfw:comment>http://m.shnenglu.com/bangle/comments/142526.html</wfw:comment><comments>http://m.shnenglu.com/bangle/archive/2011/03/22/142526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bangle/comments/commentRss/142526.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bangle/services/trackbacks/142526.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include </span><span style="color: #000000;">"</span><span style="color: #000000;">stdafx.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">algorithm</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">iostream</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">vector</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> std;<br><br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;"> Person<br>{<br>    Person(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;">&</span><span style="color: #000000;"> name)<br>        : name_(name)<br>    {}<br><br>    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> Name()<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> name_;<br>    }<br><br>    </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> SetName(</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> name)<br>    {<br>        name_ </span><span style="color: #000000;">=</span><span style="color: #000000;"> name;<br>    }<br><br>    </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> name_;<br>};<br><br>template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename R, typename T, typename Arg</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">class</span><span style="color: #000000;"> simple_binder<br>{<br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>    </span><span style="color: #0000ff;">explicit</span><span style="color: #000000;"> simple_binder(R (T::</span><span style="color: #000000;">*</span><span style="color: #000000;">pfn)(Arg), </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> Arg</span><span style="color: #000000;">&</span><span style="color: #000000;"> arg)<br>        : pfn_(pfn)<br>        , arg_(arg)<br>    {}<br><br>    R </span><span style="color: #0000ff;">operator</span><span style="color: #000000;">()(T</span><span style="color: #000000;">&</span><span style="color: #000000;"> t)<br>    {<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> (t.</span><span style="color: #000000;">*</span><span style="color: #000000;">pfn_)(arg_);<br>    }<br></span><span style="color: #0000ff;">private</span><span style="color: #000000;">:<br>    R (T::</span><span style="color: #000000;">*</span><span style="color: #000000;">pfn_)(Arg);<br>    Arg arg_;<br>};<br><br>template </span><span style="color: #000000;"><</span><span style="color: #000000;">typename R, typename T, typename Arg</span><span style="color: #000000;">></span><span style="color: #000000;"><br>simple_binder</span><span style="color: #000000;"><</span><span style="color: #000000;">R, T, Arg</span><span style="color: #000000;">></span><span style="color: #000000;"><br>simple_bind( R (T::</span><span style="color: #000000;">*</span><span style="color: #000000;">pfn)(Arg), </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> Arg</span><span style="color: #000000;">&</span><span style="color: #000000;"> arg)<br>{<br>    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> simple_binder</span><span style="color: #000000;"><</span><span style="color: #000000;">R, T, Arg</span><span style="color: #000000;">></span><span style="color: #000000;">(pfn, arg);<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br>{<br>    Person person(</span><span style="color: #000000;">"</span><span style="color: #000000;">Ralph</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><br>    </span><span style="color: #008000;">//</span><span style="color: #008000;">smimple_bind鐢熸垚涓涓豢鍑芥暟綾伙紝榪欎釜綾繪瀯閫犳椂璧嬪間簡arg<br>    </span><span style="color: #008000;">//</span><span style="color: #008000;">閬囧埌(person)鏃訛紝璋冪敤榪欎釜浠垮嚱鏁扮被閲嶈澆鐨?)鎿嶄綔鍗?br>    </span><span style="color: #008000;">//</span><span style="color: #008000;">t.*pfn(arg)<br>    </span><span style="color: #008000;">//</span><span style="color: #008000;">鍙堝洖褰掍負涓涓嚱鏁幫紝涓嶈繃鍙傛暟鍙互鑷繁鎺у埗浜?濞冨搱鍝?/span><span style="color: #008000;"><br></span><span style="color: #000000;">    simple_bind(</span><span style="color: #000000;">&</span><span style="color: #000000;">Person::SetName, </span><span style="color: #0000ff;">string</span><span style="color: #000000;">(</span><span style="color: #000000;">"</span><span style="color: #000000;">Martin</span><span style="color: #000000;">"</span><span style="color: #000000;">))(person);<br>    cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> person.Name() </span><span style="color: #000000;"><<</span><span style="color: #000000;"> endl;<br>}</span></div> <br><img src ="http://m.shnenglu.com/bangle/aggbug/142526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bangle/" target="_blank">榛戣壊澶╀嬌</a> 2011-03-22 23:46 <a href="http://m.shnenglu.com/bangle/archive/2011/03/22/142526.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>RGB銆乊UY2銆乊UYV銆乊VYU銆乁YVY涓嶢YUV錛堣漿錛?/title><link>http://m.shnenglu.com/bangle/archive/2009/07/07/89475.html</link><dc:creator>榛戣壊澶╀嬌</dc:creator><author>榛戣壊澶╀嬌</author><pubDate>Tue, 07 Jul 2009 10:19:00 GMT</pubDate><guid>http://m.shnenglu.com/bangle/archive/2009/07/07/89475.html</guid><wfw:comment>http://m.shnenglu.com/bangle/comments/89475.html</wfw:comment><comments>http://m.shnenglu.com/bangle/archive/2009/07/07/89475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bangle/comments/commentRss/89475.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bangle/services/trackbacks/89475.html</trackback:ping><description><![CDATA[<p>璁$畻鏈哄僵鑹叉樉紺哄櫒鏄劇ず鑹插僵鐨勫師鐞嗕笌褰╄壊鐢佃鏈轟竴鏍鳳紝閮芥槸閲囩敤R錛圧ed錛夈丟錛圙reen錛夈丅錛圔lue錛夌浉鍔犳販鑹茬殑鍘熺悊錛氶氳繃鍙戝皠鍑轟笁縐嶄笉鍚屽己搴︾殑鐢靛瓙鏉燂紝浣垮睆騫曞唴渚ц鐩栫殑綰€佺豢銆佽摑紓峰厜鏉愭枡鍙戝厜鑰屼駭鐢熻壊褰┿傝繖縐嶈壊褰╃殑琛ㄧず鏂規硶縐頒負RGB鑹插僵絀洪棿琛ㄧず錛堝畠涔熸槸澶氬獟浣撹綆楁満鎶鏈腑鐢ㄥ緱鏈澶氱殑涓縐嶈壊褰╃┖闂磋〃紺烘柟娉曪級銆?br>鏍規嵁涓夊熀鑹插師鐞嗭紝浠繪剰涓縐嶈壊鍏塅閮藉彲浠ョ敤涓嶅悓鍒嗛噺鐨凴銆丟銆丅涓夎壊鐩稿姞娣峰悎鑰屾垚銆?br><br>F = r [ R ] + g [ G ] + b [ B ]<br><br>鍏朵腑錛宺銆乬銆乥鍒嗗埆涓轟笁鍩鴻壊鍙備笌娣峰悎鐨勭郴鏁般傚綋涓夊熀鑹插垎閲忛兘涓?錛堟渶寮憋級鏃舵販鍚堜負榛戣壊鍏夛紱鑰屽綋涓夊熀鑹插垎閲忛兘涓簁錛堟渶寮猴級鏃舵販鍚堜負鐧借壊鍏夈傝皟鏁磖銆乬銆乥涓変釜緋繪暟鐨勫鹼紝鍙互娣峰悎鍑轟粙浜庨粦鑹插厜鍜岀櫧鑹插厜涔嬮棿鐨勫悇縐嶅悇鏍風殑鑹插厜銆?br>閭d箞YUV鍙堜粠浣曡屾潵鍛紵鍦ㄧ幇浠e僵鑹茬數瑙嗙郴緇熶腑錛岄氬父閲囩敤涓夌褰╄壊鎽勫儚鏈烘垨褰╄壊CCD鎽勫儚鏈鴻繘琛屾憚鍍忥紝鐒跺悗鎶婃憚寰楃殑褰╄壊鍥懼儚淇″彿緇忓垎鑹層佸垎鍒斁澶ф牎姝e悗寰楀埌RGB錛屽啀緇忚繃鐭╅樀鍙樻崲鐢佃礬寰楀埌浜害淇″彿Y鍜屼袱涓壊宸俊鍙稲錛峐錛堝嵆U錛夈丅錛峐錛堝嵆V錛夛紝鏈鍚庡彂閫佺灝嗕寒搴﹀拰鑹插樊涓変釜淇″彿鍒嗗埆榪涜緙栫爜錛岀敤鍚屼竴淇¢亾鍙戦佸嚭鍘匯傝繖縐嶈壊褰╃殑琛ㄧず鏂規硶灝辨槸鎵璋撶殑YUV鑹插僵絀洪棿琛ㄧず銆?br>閲囩敤YUV鑹插僵絀洪棿鐨勯噸瑕佹ф槸瀹冪殑浜害淇″彿Y鍜岃壊搴︿俊鍙稶銆乂鏄垎紱葷殑銆傚鏋滃彧鏈塝淇″彿鍒嗛噺鑰屾病鏈塙銆乂鍒嗛噺錛岄偅涔堣繖鏍瘋〃紺虹殑鍥懼儚灝辨槸榛戠櫧鐏板害鍥懼儚銆傚僵鑹茬數瑙嗛噰鐢╕UV絀洪棿姝f槸涓轟簡鐢ㄤ寒搴︿俊鍙穀瑙e喅褰╄壊鐢佃鏈轟笌榛戠櫧鐢佃鏈虹殑鍏煎闂錛屼嬌榛戠櫧鐢佃鏈轟篃鑳芥帴鏀跺僵鑹茬數瑙嗕俊鍙楓?br>YUV涓嶳GB鐩鎬簰杞崲鐨勫叕寮忓涓嬶紙RGB鍙栧艱寖鍥村潎涓?-255錛夛細<br><br>Y = 0.299R + 0.587G + 0.114B<br>U = -0.147R - 0.289G + 0.436B<br>V = 0.615R - 0.515G - 0.100B<br><br>R = Y + 1.14V<br>G = Y - 0.39U - 0.58V<br>B = Y + 2.03U<br><br>鍦―irectShow涓紝甯歌鐨凴GB鏍煎紡鏈塕GB1銆丷GB4銆丷GB8銆丷GB565銆丷GB555銆丷GB24銆丷GB32銆丄RGB32絳夛紱甯歌鐨刌UV鏍煎紡鏈塝UY2銆乊UYV銆乊VYU銆乁YVY銆丄YUV銆乊41P銆乊411銆乊211銆両F09銆両YUV銆乊V12銆乊VU9銆?YUV411銆乊UV420絳夈備綔涓鴻棰戝獟浣撶被鍨嬬殑杈呭姪璇存槑綾誨瀷錛圫ubtype錛夛紝瀹冧滑瀵瑰簲鐨凣UID瑙佽〃2.3銆?br><br>琛?.3 甯歌鐨凴GB鍜孻UV鏍煎紡<br><br>GUID    鏍煎紡鎻忚堪<br>MEDIASUBTYPE_RGB1    2鑹詫紝姣忎釜鍍忕礌鐢?浣嶈〃紺猴紝闇瑕佽皟鑹叉澘<br>MEDIASUBTYPE_RGB4    16鑹詫紝姣忎釜鍍忕礌鐢?浣嶈〃紺猴紝闇瑕佽皟鑹叉澘<br>MEDIASUBTYPE_RGB8    256鑹詫紝姣忎釜鍍忕礌鐢?浣嶈〃紺猴紝闇瑕佽皟鑹叉澘<br>MEDIASUBTYPE_RGB565    姣忎釜鍍忕礌鐢?6浣嶈〃紺猴紝RGB鍒嗛噺鍒嗗埆浣跨敤5浣嶃?浣嶃?浣?br>MEDIASUBTYPE_RGB555    姣忎釜鍍忕礌鐢?6浣嶈〃紺猴紝RGB鍒嗛噺閮戒嬌鐢?浣嶏紙鍓╀笅鐨?浣嶄笉鐢級<br>MEDIASUBTYPE_RGB24    姣忎釜鍍忕礌鐢?4浣嶈〃紺猴紝RGB鍒嗛噺鍚勪嬌鐢?浣?br>MEDIASUBTYPE_RGB32    姣忎釜鍍忕礌鐢?2浣嶈〃紺猴紝RGB鍒嗛噺鍚勪嬌鐢?浣嶏紙鍓╀笅鐨?浣嶄笉鐢級<br>MEDIASUBTYPE_ARGB32    姣忎釜鍍忕礌鐢?2浣嶈〃紺猴紝RGB鍒嗛噺鍚勪嬌鐢?浣嶏紙鍓╀笅鐨?浣嶇敤浜庤〃紺篈lpha閫氶亾鍊鹼級<br>MEDIASUBTYPE_YUY2    YUY2鏍煎紡錛屼互4:2:2鏂瑰紡鎵撳寘<br>MEDIASUBTYPE_YUYV    YUYV鏍煎紡錛堝疄闄呮牸寮忎笌YUY2鐩稿悓錛?br>MEDIASUBTYPE_YVYU    YVYU鏍煎紡錛屼互4:2:2鏂瑰紡鎵撳寘<br>MEDIASUBTYPE_UYVY    UYVY鏍煎紡錛屼互4:2:2鏂瑰紡鎵撳寘<br>MEDIASUBTYPE_AYUV    甯lpha閫氶亾鐨?:4:4 YUV鏍煎紡<br>MEDIASUBTYPE_Y41P    Y41P鏍煎紡錛屼互4:1:1鏂瑰紡鎵撳寘<br>MEDIASUBTYPE_Y411    Y411鏍煎紡錛堝疄闄呮牸寮忎笌Y41P鐩稿悓錛?br>MEDIASUBTYPE_Y211    Y211鏍煎紡<br>MEDIASUBTYPE_IF09    IF09鏍煎紡<br>MEDIASUBTYPE_IYUV    IYUV鏍煎紡<br>MEDIASUBTYPE_YV12    YV12鏍煎紡<br>MEDIASUBTYPE_YVU9    YVU9鏍煎紡<br><br>涓嬮潰鍒嗗埆浠嬬粛鍚勭RGB鏍煎紡銆?br><br>¨RGB1銆丷GB4銆丷GB8閮芥槸璋冭壊鏉跨被鍨嬬殑RGB鏍煎紡錛屽湪鎻忚堪榪欎簺濯掍綋綾誨瀷鐨勬牸寮忕粏鑺傛椂錛岄氬父浼氬湪BITMAPINFOHEADER鏁版嵁緇撴瀯鍚庨潰璺熺潃涓涓皟鑹叉澘錛堝畾涔変竴緋誨垪棰滆壊錛夈傚畠浠殑鍥懼儚鏁版嵁騫朵笉鏄湡姝g殑棰滆壊鍊鹼紝鑰屾槸褰撳墠鍍忕礌棰滆壊鍊煎湪璋冭壊鏉夸腑鐨勭儲寮曘備互RGB1錛?鑹蹭綅鍥撅級涓轟緥錛屾瘮濡傚畠鐨勮皟鑹叉澘涓畾涔夌殑涓ょ棰滆壊鍊間緷嬈′負0x000000錛堥粦鑹詫級鍜?xFFFFFF錛堢櫧鑹詫級錛岄偅涔堝浘鍍忔暟鎹?01101010111…錛堟瘡涓儚绱犵敤1浣嶈〃紺猴級琛ㄧず瀵瑰簲鍚勫儚绱犵殑棰滆壊涓猴細榛戦粦鐧界櫧榛戠櫧榛戠櫧榛戠櫧鐧界櫧…銆?br><br>¨ RGB565浣跨敤16浣嶈〃紺轟竴涓儚绱狅紝榪?6浣嶄腑鐨?浣嶇敤浜嶳錛?浣嶇敤浜嶨錛?浣嶇敤浜嶣銆傜▼搴忎腑閫氬父浣跨敤涓涓瓧錛圵ORD錛屼竴涓瓧絳変簬涓や釜瀛楄妭錛夋潵鎿嶄綔涓涓儚绱犮傚綋璇誨嚭涓涓儚绱犲悗錛岃繖涓瓧鐨勫悇涓綅鎰忎箟濡備笅錛?br>楂樺瓧鑺?nbsp;             浣庡瓧鑺?br>R R R R R G G G     G G G B B B B B<br>鍙互緇勫悎浣跨敤灞忚斀瀛楀拰縐諱綅鎿嶄綔鏉ュ緱鍒癛GB鍚勫垎閲忕殑鍊鹼細<br><br>#define RGB565_MASK_RED    0xF800<br>#define RGB565_MASK_GREEN  0x07E0<br>#define RGB565_MASK_BLUE   0x001F<br>R = (wPixel & RGB565_MASK_RED) >> 11;   // 鍙栧艱寖鍥?-31<br>G = (wPixel & RGB565_MASK_GREEN) >> 5;  // 鍙栧艱寖鍥?-63<br>B =  wPixel & RGB565_MASK_BLUE;         // 鍙栧艱寖鍥?-31<br><br>¨ RGB555鏄彟涓縐?6浣嶇殑RGB鏍煎紡錛孯GB鍒嗛噺閮界敤5浣嶈〃紺猴紙鍓╀笅鐨?浣嶄笉鐢級銆備嬌鐢ㄤ竴涓瓧璇誨嚭涓涓儚绱犲悗錛岃繖涓瓧鐨勫悇涓綅鎰忎箟濡備笅錛?br>楂樺瓧鑺?nbsp;            浣庡瓧鑺?br>X R R R R G G       G G G B B B B B       錛圶琛ㄧず涓嶇敤錛屽彲浠ュ拷鐣ワ級<br>鍙互緇勫悎浣跨敤灞忚斀瀛楀拰縐諱綅鎿嶄綔鏉ュ緱鍒癛GB鍚勫垎閲忕殑鍊鹼細<br><br>#define RGB555_MASK_RED    0x7C00<br>#define RGB555_MASK_GREEN  0x03E0<br>#define RGB555_MASK_BLUE   0x001F<br>R = (wPixel & RGB555_MASK_RED) >> 10;   // 鍙栧艱寖鍥?-31<br>G = (wPixel & RGB555_MASK_GREEN) >> 5;  // 鍙栧艱寖鍥?-31<br>B =  wPixel & RGB555_MASK_BLUE;         // 鍙栧艱寖鍥?-31<br><br>¨ RGB24浣跨敤24浣嶆潵琛ㄧず涓涓儚绱狅紝RGB鍒嗛噺閮界敤8浣嶈〃紺猴紝鍙栧艱寖鍥翠負0-255銆傛敞鎰忓湪鍐呭瓨涓璕GB鍚勫垎閲忕殑鎺掑垪欏哄簭涓猴細BGR BGR BGR…銆傞氬父鍙互浣跨敤RGBTRIPLE鏁版嵁緇撴瀯鏉ユ搷浣滀竴涓儚绱狅紝瀹冪殑瀹氫箟涓猴細<br><br>typedef struct tagRGBTRIPLE { <br>BYTE rgbtBlue;    // 钃濊壊鍒嗛噺<br>BYTE rgbtGreen;   // 緇胯壊鍒嗛噺<br>BYTE rgbtRed;     // 綰㈣壊鍒嗛噺<br>} RGBTRIPLE;<br><br>¨ RGB32浣跨敤32浣嶆潵琛ㄧず涓涓儚绱狅紝RGB鍒嗛噺鍚勭敤鍘?浣嶏紝鍓╀笅鐨?浣嶇敤浣淎lpha閫氶亾鎴栬呬笉鐢ㄣ傦紙ARGB32灝辨槸甯lpha閫氶亾鐨?RGB32銆傦級娉ㄦ剰鍦ㄥ唴瀛樹腑RGB鍚勫垎閲忕殑鎺掑垪欏哄簭涓猴細BGRA BGRABGRA…銆傞氬父鍙互浣跨敤RGBQUAD鏁版嵁緇撴瀯鏉ユ搷浣滀竴涓儚绱狅紝瀹冪殑瀹氫箟涓猴細<br><br>typedef struct tagRGBQUAD {<br>BYTE    rgbBlue;      // 钃濊壊鍒嗛噺<br>BYTE    rgbGreen;     // 緇胯壊鍒嗛噺<br>BYTE    rgbRed;       // 綰㈣壊鍒嗛噺<br>BYTE    rgbReserved;  // 淇濈暀瀛楄妭錛堢敤浣淎lpha閫氶亾鎴栧拷鐣ワ級<br>} RGBQUAD;<br><br>涓嬮潰浠嬬粛鍚勭YUV鏍煎紡銆俌UV鏍煎紡閫氬父鏈変袱澶х被錛氭墦鍖咃紙packed錛夋牸寮忓拰騫抽潰錛坧lanar錛夋牸寮忋傚墠鑰呭皢YUV鍒嗛噺瀛樻斁鍦ㄥ悓涓涓暟緇勪腑錛岄氬父鏄嚑涓浉閭葷殑鍍忕礌緇勬垚涓涓畯鍍忕礌錛坢acro-pixel錛夛紱鑰屽悗鑰呬嬌鐢ㄤ笁涓暟緇勫垎寮瀛樻斁YUV涓変釜鍒嗛噺錛屽氨鍍忔槸涓涓笁緇村鉤闈竴鏍楓傝〃2.3涓殑YUY2鍒?Y211閮芥槸鎵撳寘鏍煎紡錛岃孖F09鍒癥VU9閮芥槸騫抽潰鏍煎紡銆傦紙娉ㄦ剰錛氬湪浠嬬粛鍚勭鍏蜂綋鏍煎紡鏃訛紝YUV鍚勫垎閲忛兘浼氬甫鏈変笅鏍囷紝濡俌0銆乁0銆乂0琛ㄧず絎竴涓儚绱犵殑YUV鍒嗛噺錛孻1銆乁1銆乂1琛ㄧず絎簩涓儚绱犵殑YUV鍒嗛噺錛屼互姝ょ被鎺ㄣ傦級<br><br>¨ YUY2錛堝拰YUYV錛夋牸寮忎負姣忎釜鍍忕礌淇濈暀Y鍒嗛噺錛岃孶V鍒嗛噺鍦ㄦ按騫蟲柟鍚戜笂姣忎袱涓儚绱犻噰鏍蜂竴嬈°備竴涓畯鍍忕礌涓?涓瓧鑺傦紝瀹為檯琛ㄧず2涓儚绱犮傦紙4:2:2鐨勬剰鎬濅負涓涓畯鍍忕礌涓湁4涓猋鍒嗛噺銆?涓猆鍒嗛噺鍜?涓猇鍒嗛噺銆傦級鍥懼儚鏁版嵁涓璝UV鍒嗛噺鎺掑垪欏哄簭濡備笅錛?br>Y0 U0 Y1 V0    Y2 U2 Y3 V2 …<br><br>¨ YVYU鏍煎紡璺焂UY2綾諱技錛屽彧鏄浘鍍忔暟鎹腑YUV鍒嗛噺鐨勬帓鍒楅『搴忔湁鎵涓嶅悓錛?br>Y0 V0 Y1 U0    Y2 V2 Y3 U2 …<br><br>¨ UYVY鏍煎紡璺焂UY2綾諱技錛屽彧鏄浘鍍忔暟鎹腑YUV鍒嗛噺鐨勬帓鍒楅『搴忔湁鎵涓嶅悓錛?br>U0 Y0 V0 Y1    U2 Y2 V2 Y3 …<br><br>¨ AYUV鏍煎紡甯︽湁涓涓狝lpha閫氶亾錛屽茍涓斾負姣忎釜鍍忕礌閮芥彁鍙朰UV鍒嗛噺錛屽浘鍍忔暟鎹牸寮忓涓嬶細<br>A0 Y0 U0 V0    A1 Y1 U1 V1 …<br><br>¨ Y41P錛堝拰Y411錛夋牸寮忎負姣忎釜鍍忕礌淇濈暀Y鍒嗛噺錛岃孶V鍒嗛噺鍦ㄦ按騫蟲柟鍚戜笂姣?涓儚绱犻噰鏍蜂竴嬈°備竴涓畯鍍忕礌涓?2涓瓧鑺傦紝瀹為檯琛ㄧず8涓儚绱犮傚浘鍍忔暟鎹腑YUV鍒嗛噺鎺掑垪欏哄簭濡備笅錛?br>U0 Y0 V0 Y1    U4 Y2 V4 Y3    Y4 Y5 Y6 Y8 … <br><br>¨ Y211鏍煎紡鍦ㄦ按騫蟲柟鍚戜笂Y鍒嗛噺姣?涓儚绱犻噰鏍蜂竴嬈★紝鑰孶V鍒嗛噺姣?涓儚绱犻噰鏍蜂竴嬈°備竴涓畯鍍忕礌涓?涓瓧鑺傦紝瀹為檯琛ㄧず4涓儚绱犮傚浘鍍忔暟鎹腑YUV鍒嗛噺鎺掑垪欏哄簭濡備笅錛?br>Y0 U0 Y2 V0    Y4 U4 Y6 V4 …<br><br>¨ YVU9鏍煎紡涓烘瘡涓儚绱犻兘鎻愬彇Y鍒嗛噺錛岃屽湪UV鍒嗛噺鐨勬彁鍙栨椂錛岄鍏堝皢鍥懼儚鍒嗘垚鑻ュ共涓? x 4鐨勫畯鍧楋紝鐒跺悗姣忎釜瀹忓潡鎻愬彇涓涓猆鍒嗛噺鍜屼竴涓猇鍒嗛噺銆傚浘鍍忔暟鎹瓨鍌ㄦ椂錛岄鍏堟槸鏁村箙鍥懼儚鐨刌鍒嗛噺鏁扮粍錛岀劧鍚庡氨璺熺潃U鍒嗛噺鏁扮粍錛屼互鍙奦鍒嗛噺鏁扮粍銆侷F09鏍煎紡涓嶻VU9綾諱技銆?br><br>¨ IYUV鏍煎紡涓烘瘡涓儚绱犻兘鎻愬彇Y鍒嗛噺錛岃屽湪UV鍒嗛噺鐨勬彁鍙栨椂錛岄鍏堝皢鍥懼儚鍒嗘垚鑻ュ共涓? x 2鐨勫畯鍧楋紝鐒跺悗姣忎釜瀹忓潡鎻愬彇涓涓猆鍒嗛噺鍜屼竴涓猇鍒嗛噺銆俌V12鏍煎紡涓嶪YUV綾諱技銆?br><br>¨YUV411銆乊UV420鏍煎紡澶氳浜嶥V鏁版嵁涓紝鍓嶈呯敤浜嶯TSC鍒訛紝鍚庤呯敤浜嶱AL鍒躲俌UV411涓烘瘡涓儚绱犻兘鎻愬彇Y鍒嗛噺錛岃孶V鍒嗛噺鍦ㄦ按騫蟲柟鍚戜笂姣?涓儚绱犻噰鏍蜂竴嬈°俌UV420騫墮潪V鍒嗛噺閲囨牱涓?錛岃屾槸璺焂UV411鐩告瘮錛屽湪姘村鉤鏂瑰悜涓婃彁楂樹竴鍊嶈壊宸噰鏍烽鐜囷紝鍦ㄥ瀭鐩存柟鍚戜笂浠/V闂撮殧鐨勬柟寮忓噺灝忎竴鍗婅壊宸噰鏍楓?br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">YUV杞琔YVY鏍煎紡</span><span style="COLOR: #008000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> YUVtoUYVY(uint8_t </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">y_plane, uint8_t </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">u_plane, uint8_t </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">v_plane, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> y_stride, <br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>                      </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> uv_stride, OUT uint8_t </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pDstBuf, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> width, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> height)<br><img id=Codehighlighter1_164_490_Open_Image onclick="this.style.display='none'; Codehighlighter1_164_490_Open_Text.style.display='none'; Codehighlighter1_164_490_Closed_Image.style.display='inline'; Codehighlighter1_164_490_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_164_490_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_164_490_Closed_Text.style.display='none'; Codehighlighter1_164_490_Open_Image.style.display='inline'; Codehighlighter1_164_490_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_164_490_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_164_490_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_214_488_Open_Image onclick="this.style.display='none'; Codehighlighter1_214_488_Open_Text.style.display='none'; Codehighlighter1_214_488_Closed_Image.style.display='inline'; Codehighlighter1_214_488_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_214_488_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_214_488_Closed_Text.style.display='none'; Codehighlighter1_214_488_Open_Image.style.display='inline'; Codehighlighter1_214_488_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> row </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; row </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> height; row </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> row </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span id=Codehighlighter1_214_488_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_214_488_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_262_485_Open_Image onclick="this.style.display='none'; Codehighlighter1_262_485_Open_Text.style.display='none'; Codehighlighter1_262_485_Closed_Image.style.display='inline'; Codehighlighter1_262_485_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_262_485_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_262_485_Closed_Text.style.display='none'; Codehighlighter1_262_485_Open_Image.style.display='inline'; Codehighlighter1_262_485_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> col </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; col </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> width; col</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">col </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">) </span><span id=Codehighlighter1_262_485_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_262_485_Open_Text><span style="COLOR: #000000">{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            pDstBuf[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> u_plane[row</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> uv_stride </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> col</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            pDstBuf[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> y_plane[row </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> y_stride </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> col];<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            pDstBuf[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> v_plane[row</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> uv_stride </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> col</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            pDstBuf[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> y_plane[row </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> y_stride </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> col </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>            pDstBuf </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <img src ="http://m.shnenglu.com/bangle/aggbug/89475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bangle/" target="_blank">榛戣壊澶╀嬌</a> 2009-07-07 18:19 <a href="http://m.shnenglu.com/bangle/archive/2009/07/07/89475.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>RTPSession緲昏瘧(杞?http://m.shnenglu.com/bangle/archive/2009/06/26/88565.html榛戣壊澶╀嬌榛戣壊澶╀嬌Fri, 26 Jun 2009 05:13:00 GMThttp://m.shnenglu.com/bangle/archive/2009/06/26/88565.htmlhttp://m.shnenglu.com/bangle/comments/88565.htmlhttp://m.shnenglu.com/bangle/archive/2009/06/26/88565.html#Feedback0http://m.shnenglu.com/bangle/comments/commentRss/88565.htmlhttp://m.shnenglu.com/bangle/services/trackbacks/88565.htmlRTPSession
      瀵逛簬澶у鏁扮殑RTP搴旂敤紼嬪簭錛孯TPSession綾誨彲鑳芥槸JRTPLIB鍞竴浣跨敤鐨勭被銆傚畠鑳藉畬鍏ㄥ鐞哛TCP閮ㄤ喚鐨勬暟鎹寘錛屾墍浠ョ敤鎴峰彲浠ユ妸綺懼姏闆嗕腑鍦ㄧ湡姝g殑鏁版嵁鏀跺彂銆?br>      瑕佺煡閬揜TPSession綾誨湪澶氱嚎紼嬩笅騫朵笉鏄畨鍏ㄧ殑錛屽洜姝わ紝鐢ㄦ埛瑕侀氳繃鏌愪簺閿佸悓姝ユ満鍒舵潵淇濊瘉涓嶄細鍑虹幇鍦ㄤ笉鍚岀嚎紼嬪綋涓皟鐢ㄥ悓涓涓猂TPSession瀹炰緥銆?br>      RTPSession綾繪湁濡備笅鐨勬帴鍙c?br>
      • RTPSession(RTPTransmitter::TransmissionProtocol proto = RTPTransmitter::IPv4UDPProto)
      浣跨敤proto綾誨瀷浼犺緭灞傚垱寤轟竴涓狿RTSession瀹炰緥銆傚鏋減roto浣跨敤鐢ㄦ埛鑷畾涔夛紙user-defined錛変紶杈撳眰錛屽垯鐩稿簲鐨凬ewUserDefinedTransmitter()鍑芥暟蹇呴』瀹炵幇銆?span style="COLOR: rgb(255,153,0)">ps:榪欓噷榛樿灝辮浜嗭紝榛樿灝辨槸IPV4緗戠粶銆?/span>

      • int Create(const RTPSessionParams &sessparams, const RTPTransmissionParams*transparams = 0)
      浣跨敤RTPSession鍙傛暟sessparams鍜孯TPTransmission鍙傛暟transparams 鐪熸鍒涘緩涓涓猂TP浼氳瘽銆傚鏋渢ransparams 涓篘ULL錛屽垯浣跨敤榛樿鐨勫弬鏁般?span style="COLOR: rgb(255,153,0)">ps:RTPSessionParams 鎴戜滑鍙兘瑕佽寰楁瘮杈冨錛孯TPTransmissionParams鍙傛暟灝卞彧瑕佽緗叾涓殑绔彛灝辮浜嗭紝绔彛涓瀹氳璁懼錛屼笉鐒惰繘琛岀粍鎾椂錛岃繖涓繘紼嬪皢涓嶆帴鏀舵暟鎹傝緗柟寮忓彲浠ョ湅example.cpp銆?br>
      • void Destroy()
      紱誨紑涓涓細璇濅絾涓嶅悜鍏跺畠緇勬垚鍛樺彂閫丅YE鍖呫?span style="COLOR: rgb(255,153,0)">ps:鎴戜笉鎺ㄨ崘鐢ㄨ繖涓嚱鏁伴櫎闈炴槸閿欒澶勭悊錛屾甯哥寮鎴戜滑搴旇鐢˙yeDestroy()銆?br>      
      • void BYEDestroy(const RTPTime &maxwaittime, const void *reason,size t reasonlength)
      鍙戦佷竴涓狟YE鍖呭茍涓旂寮浼氳瘽銆傚湪鍙戦丅YE鍖呭墠絳夊緟maxwaittime錛屽鏋滆秴鏃訛紝浼氫笉鍙戦丅YE鍖呯洿鎺ョ寮錛孊YE鍖呬細鍖呭惈浣犵殑紱誨紑鍘熷洜reason銆傜浉搴旂殑reasonlength琛ㄧずreason闀垮害銆?span style="COLOR: rgb(255,153,0)">ps:鍥犱負BYE鍖呮槸涓涓猂TCP鍖咃紝RTCP涓嶆槸瑕佸彂灝卞彂鐨勶紝瀹冪殑鍙戦佹椂闂存槸涓轟簡騫寵 甯﹀閫氳繃璁$畻寰楀嚭鏉ョ殑錛岄偅灝卞緢鏈夊彲鑳藉埌浜嗚鍙戠殑鏃跺欎互緇忚秴榪囦簡maxwaittime鏃墮棿浜嗭紝浣滆呭彲鑳借涓鐩翠繚鐣欎釜榪欎細璇濊繖涔堜箙娌℃剰涔夈傚綋鐒訛紝鎴戝父甯告妸maxwaittime璁懼緱寰堝ぇ銆?br>
      • bool IsActive()
      鐪嬬湅榪欎釜RTPSession瀹炰緥鏄惁浠ョ粡閫氳繃Create寤虹珛浜嗙湡瀹炵殑浼氳瘽銆?br>
      • uint32 t GetLocalSSRC()
      榪斿洖鎴戜滑鐨凷SRC銆?span style="COLOR: rgb(255,153,0)">ps:鑷充簬浠涔堟槸SSRC錛屽幓鐪嬬湅RFC3550鍚с傛垜璇磋繃JRTPLIB鍙槸RTP鍗忚鐨勫寘瑁咃紝騫舵病鏈夊仛浠諱綍搴旂敤鐨勪簨鎯呫?/span>

      • int AddDestination(const RTPAddress &addr)
      娣誨姞涓涓彂閫佺洰鏍囥?span style="COLOR: rgb(255,153,0)">ps: 褰撶劧錛屽鏋滄垜浠嬌鐢ㄧ粍鎾紝榪欓噷鍙敤璋冪敤涓嬈★紝鎶婃垜浠殑緇勬挱鍦板潃鍐欒繘鍘匯傝繖鏍鳳紝榪欑粍鐨勫叏閮ㄤ漢閮借兘鏀跺埌浣犲彂鐨勫寘銆備絾鏄粍鎾彲鍥犵壒緗戠殑涓婅緗緢鐑︺傝屼笖鐢ㄧ粍鎾祴璇曚篃寰堢儲錛堢粍鎾繀欏籅IND涓涓鍙o紝濡傛灉浣犳兂鍦ㄥ悓涓鍙版満鍣ㄤ笂榪愯涓や釜杞歡瀹炰緥鏉ユ病璇曪紝浣犲氨浼氬彂鐜板悓涓涓鍙IND涓ゆ錛屽綋鐒訛紝鍚庨潰閭f浼氬け璐ワ紝涔熷氨鏄嫻嬭瘯涓嶄簡錛岃嫻嬶紵鎵句袱鍙版満鍣紝鎴栫敤铏氭嫙鏈?img src="http://www.cnitblog.com/CuteSoft_Client/CuteEditor/images/emdgust.gif" align=absMiddle border=0>錛夛紝濡傛灉緇勬挱涓嶆弧瓚籌紝鎴戜滑灝辮鎶婄粍鎾彉鍦ㄥ崟鎾紝榪欐椂灝辮榪斿璋冪敤榪欎釜鍑芥暟鎶婂叾瀹冪粍鎴愬憳鐨処P閮藉姞榪涙潵浜嗐傚叿浣撳彲浠ョ湅鐪媏xample3.cpp銆?br>
      • int DeleteDestination(const RTPAddress &addr)
      浠庡彂閫佸湴鍧鍒楄〃涓垹闄や竴涓嬪湴鍧銆?br>
      • void ClearDestinations()
      娓呴櫎鍙戦佸湴鍧鍒楄〃銆?br>
      • bool SupportsMulticasting()
      榪斿洖JRTPLIB鏄惁鏀寔緇勬挱銆俻s:榪欓噷鎸嘕RTPLIB鏈韓錛屼笉鏄綘鐨勭湡瀹炵綉緇溿傜紪璇慗RTPLIB搴撴椂鍙兘鎸囧畾銆?br>.
      • int JoinMulticastGroup(const RTPAddress &addr)
      鍔犲叆涓涓粍鎾粍addr銆?br>
      • int LeaveMulticastGroup(const RTPAddress &addr)
       紱誨紑涓涓粍鎾粍addr銆?br>
      • void LeaveAllMulticastGroups()
      紱誨紑鎵鏈夌粍鎾粍銆?span style="COLOR: rgb(255,153,0)">ps:鎴戜滑鍙互鍚屾椂鍔犲叆澶氫釜緇勬挱緇勩?

      • int SendPacket(const void *data, size t len)
      • int SendPacket(const void *data, size t len, uint8 t pt, bool mark,uint32 t timestampinc)
      • int SendPacketEx(const void *data, size t len, uint16 t hdrextID,const void *hdrextdata, size t numhdrextwords)
      • int SendPacketEx(const void *data, size t len, uint8 t pt, boolmark, uint32 t timestampinc, uint16 t hdrextID, const void *hdrextdata,size t numhdrextwords)
      涓婇潰鐨?涓嚱鏁伴兘鏄彂閫佹暟鎹寘鐨勶紝鎴戞兂濡傛灉浣犳病鏈夌湅RTP鍗忚錛屾垜璇翠簡浣犱篃鏅曘傚鏋滀綘RTP鍗忚鐪嬩簡錛屽啀鐪嬬湅RTPSession.h鐨勬敞璇嗭紝浣犲氨鎳備簡銆?/span>

      • int SetDefaultPayloadType(uint8 t pt)
      璁懼畾榛樿鐨凴TP PayloadType涓篜T銆?span style="COLOR: rgb(255,153,0)">ps:鍜屼笂闈㈢殑絎竴涓拰絎笁涓彂閫佸嚱鏁伴厤濂椼傝嚦浜庡簲璇ヨ涓粈涔堟暟錛屽鏋滀綘鐪婤AIDU涓婁貢涓冨叓緋熺殑鏂囩珷錛屽綋鐒剁殑涔辮灝卞彲鑳戒簡銆傚叾瀹炲簲璇ユ寜RFC3551錛屾牴鎹綘瑕佷紶杈撶殑濯掍綋綾誨瀷鏉ヨ銆?/span>

      • int SetDefaultMark(bool m)
      榪欒RTP鏁版嵁鍖呯殑Mark鏍囪瘑銆?span style="COLOR: rgb(255,153,0)">ps:璁句負浠涔堝煎ソ錛熻繖涓紝鍛靛懙錛岃繛RFC3550涔熶笉鑳界‘瀹氫簡銆傝鐪嬪叿浣撶殑RTP Payload瑙勮寖錛孧PEG鐨勶紝H263鐨勯兘涓嶄竴鏍楓?br>      MPEG2 
   www.ietf.org/rfc/rfc2250.txt 
      MPEG4    
www.rfc-editor.org/rfc/rfc3016.txt 
      H263        www.ietf.org/rfc/rfc2190.txt
 

      • int SetDefaultTimestampIncrement(uint32 t timestampinc)
      璁劇疆榛樿鐨勬椂闂存埑鐨勫閲忋?span style="COLOR: rgb(255,153,0)">ps:涔熸槸鍜屼笂鐨勭涓鍜岀涓変釜鍑芥暟閰嶅鐨勩傛瘡鍙戜竴涓猂TP鏁版嵁鍖卼imestamp灝變細鑷姩澧炲姞

      • int IncrementTimestamp(uint32 t inc)
      榪欎釜鍑芥暟鐢ㄦ潵鎵嬪伐澧炲姞Timestamp銆傛湁鏃舵垜榪欏緢濂界敤錛屼緥濡傦紝涓涓猂TP鏁版嵁鍖呭洜涓哄彧鍚湁闈欓煶鏁版嵁錛屾垜浠病鏈夊彂閫侊紝榪欐槸鎴戜滑灝卞簲鎵嬪伐澧炲姞Timestamp浠ヤ究鍙戜笅涓涓猂TP鏁版嵁鍖呮椂瀹冪殑Timestamp鏄紜殑銆?br>
      • int IncrementTimestampDefault()
      榪欎釜鍑芥暟鐢ㄤ簬澧炲姞鐢盨etDefaultTimestampIncrement璁懼畾鐨勫箋傛湁鏃跺欒繖寰堟湁鐢紝渚嬪錛屼竴涓猂TP鏁版嵁鍖呭洜涓哄彧鍚湁闈欓煶鏁版嵁錛屾垜浠病鏈夊彂閫併傝繖鏃訛紝榪欎釜鍑芥暟灝變細琚皟鐢ㄧ敤鏉ヨ緗甌imestamp浠ヤ究涓嬩竴涓猂TP鍖呯殑Timestamp鏄紜殑銆?br>
      • int SetPreTransmissionDelay(const RTPTime &delay)
      This function allows you to inform the library about the delay between
sampling the first sample of a packet and sending the packet. This delay is
taken into account when calculating the relation between RTP timestamp
and wallclock time, used for inter-media synchronization.

      • RTPTransmissionInfo *GetTransmissionInfo()
      This function returns an instance of a subclass of RTPTransmissionInfo
which will give some additional information about the transmitter (a list
of local IP addresses for example). The user has to delete the returned
instance when it is no longer needed.
      
      • int Poll()
      If you’re not using the poll thread, this function must be called regularly
to process incoming data and to send RTCP data when necessary.
61

      • int WaitForIncomingData(const RTPTime &delay,bool *dataavailable= 0)
      Waits at most a time delay until incoming data has been detected. Only
works when you’re not using the poll thread. If dataavailable is not NULL,
it should be set to true if data was actually read and to false otherwise.

      • int AbortWait()
      If the previous function has been called, this one aborts the waiting. Only
works when you’re not using the poll thread.

      • RTPTime GetRTCPDelay()
      Returns the time interval after which an RTCP compound packet may have
to be sent. Only works when you’re not using the poll thread.

      • int BeginDataAccess()
      涓嬮潰鐨勫嚱鏁幫紙鐩村埌EndDataAccess錛夎鍦˙eginDataAccess 鍜孍ndDataAccess涔嬮棿琚皟鐢紝BeginDataAccess紜繚杞(poll錛夌嚎紼嬩笉浼氬湪榪欐湡闂磋闂畇ource table 銆侲ndDataAccess 璋冪敤瀹屾垚鍚庯紝杞(poll錛夌嚎紼嬩細寰楀埌閿佽岀戶緇闂?span style="COLOR: rgb(255,153,0)">ps:棣栧厛錛屼綘閲岀殑source table涓殑姣忎竴涓猻ource琛ㄧず鍙備笌浼氳涓殑姣忎竴涓弬涓庤呯殑姣忎竴涓嫭绔嬬殑濯掍綋嫻併傛垜浠細鍦ㄤ笅闈㈢敤鍒頒粬浠紝浣嗗悓鏃訛紝poll綰跨▼涔熶細杞瀹冧滑浠ユ紜鐞嗗拰RTCP鏈夊叧鐨勫唴瀹廣?br>  

      • bool GotoFirstSource()
      寮濮嬮掑綊鍙備笌鑰呯殑絎竴涓祦錛屽鏋滄壘鍒頒簡錛屽氨榪斿洖tree,鍚﹀垯榪斿洖false銆?span style="COLOR: rgb(255,153,0)">ps錛氭垜浠氳繃榪欎釜鍑芥暟鍜屼笅闈㈢殑GotoNextSource閬嶅巻source table涓殑姣忎竴涓猻ource銆?br>      
      • bool GotoNextSource()
      璁劇疆褰撳墠鐨勬簮錛坰ource錛変負source table涓殑涓嬩竴涓簮銆傚鏋滃凡緇忓埌灝鵑儴浜嗗氨榪斿洖false.
     
      • bool GotoPreviousSource()
      璁劇疆褰撳墠鐨勬簮錛坰ource錛変負source table涓笂涓涓簮銆傚鏋滃凡緇忓埌澶撮儴浜嗗氨榪斿洖false.


      • bool GotoFirstSourceWithData()
      寮濮嬮掑綊鍙備笌鑰呬腑絎竴涓湁RTP鏁版嵁鐨勬祦錛屽鏋滄壘鍒頒簡錛屽氨榪斿洖tree,鍚﹀垯榪斿洖false銆?span style="COLOR: rgb(255,153,0)">PS錛氬湪鎺ユ敹鏁版嵁鏄垜浠父鐢ㄧ殑鏄繖濂楀嚱鏁幫紝鍥犱負濡傛灉娌℃湁鏁版嵁瑕佹潵閮芥病鐢ㄣ?br>
      • bool GotoNextSourceWithData()
      璁劇疆褰撳墠鐨勬簮錛坰ource錛変負source table涓湁RTP鏁版嵁鐨勪笅涓涓簮銆傚鏋滃凡緇忓埌灝鵑儴浜嗗氨榪斿洖false.

      • bool GotoPreviousSourceWithData()
      璁劇疆褰撳墠鐨勬簮錛坰ource錛変負source table涓湁RTP鏁版嵁鐨勪笂涓涓簮銆傚鏋滃凡緇忓埌澶撮儴浜嗗氨榪斿洖false.

      • RTPSourceData *GetCurrentSourceInfo()
      榪斿洖褰撳墠鍙備笌鑰呯殑褰撳墠婧愶紙source)鐨凴TPSourceData 瀹炲垪銆?span style="COLOR: rgb(255,153,0)">ps錛氳繑鍥炵殑榪欎釜RTPSourceData 灝辨槸鏈繘紼嬩粠鏈熷畠鍙備笌鑰呯殑RTCP鏁版嵁鍖呬腑鏀墮泦寰楀埌鐨勪俊鎭紝瀵規垜浠潵璇村叾瀹炲緢鏈夌敤錛屽彧鏄綔鑰呯殑渚嬬▼娌℃湁鐢ㄤ笂錛屽浗鍐呯殑緗戠粶涔熸病鏈夋彁鍒般傚湪RFC3550涓湁鍏砇TCP鐨勪笢瑗塊兘鍦ㄨ繖浜嗭紝鐪嬭繃RFC3550鐨勪漢閮界煡鍒幫紝閲屽ご璋堝緱鏈澶氱殑灝辨槸RTCP銆傝繖涓被鎴戜滑浠ュ悗浼氫笓闂ㄨ銆?br>      
      
      • RTPSourceData *GetSourceInfo(uint32 t ssrc)
      榪斿洖鐢眘src鎸囧畾鐨凴TPSourceData 錛屾垨閮絅ULL錛堝綋榪欎釜鏉$洰涓嶅瓨鍦級銆?span style="COLOR: rgb(255,153,0)">ps錛氳繖涓嚱鏁頒篃寰堟湁鐢ㄣ傚洜涓篏etCurrentSourceInfo鍙湁鍦℅otoFirstSource絳変笂涓嬫枃褰撲腑鎵嶈兘鐢ㄣ傚鏋滄垜浠槸鍦≧TPSource瀛愮被鐨勬垚鍛樺嚱鏁頒腑錛屾垜浠病鏈夎繖涓笂涓嬫枃錛屽氨鍙兘鐢ㄨ繖涓嚱鏁般?/span>
 
      • RTPPacket *GetNextPacket()
      寰楀埌褰撳墠鍙備笌鑰呭綋鍓嶅獟浣撴祦鐨勪笅涓涓猂TP鏁版嵁鍖呫?br>
      • int EndDataAccess()
      璇風湅BeginDataAccess

      • int SetReceiveMode(RTPTransmitter::ReceiveMode m)
      Sets the receive mode to m, which can be one of the following:
      – RTPTransmitter::AcceptAll
            All incoming data is accepted, no matter where it originated from.
      – RTPTransmitter::AcceptSome
            Only data coming from specific sources will be accepted.
      – RTPTransmitter::IgnoreSome
            All incoming data is accepted, except for data coming from a specificset of sources.
        Note that when the receive mode is changed, the list of addressed to be ignored or accepted will be cleared.

      • int AddToIgnoreList(const RTPAddress &addr)
      Adds addr to the list of addresses to ignore.

      • int DeleteFromIgnoreList(const RTPAddress &addr)
      Deletes addr from the list of addresses to ignore.

      • void ClearIgnoreList()
      Clears the list of addresses to ignore.

      • int AddToAcceptList(const RTPAddress &addr)
      Adds addr to the list of addresses to accept.

      • int DeleteFromAcceptList(const RTPAddress &addr)
      Deletes addr from the list of addresses to accept.

      • void ClearAcceptList()
      Clears the list of addresses to accept.

      • int SetMaximumPacketSize(size t s)
      Sets the maximum allowed packet size to s.

      • int SetSessionBandwidth(double bw)
      Sets the session bandwidth to bw, which is specified in bytes per second.

      • int SetTimestampUnit(double u)
      Sets our own timestamp unit to u. The timestamp unit is defined as a time
interval divided by the number of samples in that interval: for 8000Hz
audio this would be 1.0/8000.0.

      • void SetNameInterval(int count)
      鍦ㄥ鐞唖ource table涓殑sourcese鍚庯紝RTCP packet builder(鎴戜滑涓嶇敤鐞嗚繖涓唴閮ㄧ殑涓滆タ錛変細媯鏌ユ槸鍚︽湁鍏跺畠錛坣on-CNAME)SDES欏圭洰瑕佸彂閫併傚鏋渃ount涓洪浂鎴栬礋鏁幫紝鍒欎笉鍙戦侊紝濡傛灉count涓烘鏁幫紝鍒欏湪sources table澶勭悊count嬈″悗浼氭妸SDES name item鍔犲埌褰撳墠RTCP鍖呬腑銆?span style="COLOR: rgb(255,153,0)">ps: 鍏跺疄姣忔澶勭悊sources table閮戒細浼撮殢閮絊DES RTCP鏁版嵁鍖呯殑鍙戦侊紝鍦ㄨ繖涓暟鎹寘褰撲腑CNAME鏄繀欏葷殑錛屼絾鍏跺畠鐨勯」鐩笉鏄繀欏葷殑錛岃繖灝卞嚱鏁扮‘瀹氫簡NAME欏圭洰鍙戦佺殑棰戝害錛屽鏋滀負1錛屽垯琛ㄤ笉姣忎釜 SDES RTCP鏁版嵁鍖呴兘甯︾潃瀹冿紝濡傛灉涓?鍒欐瘡涓や釜SDES鏁版嵁鍖呭氨鍙戦佷竴嬈AME欏圭洰錛屼笅闈㈢殑SetEMailInterval銆?SetLocationInterval銆丼etPhoneInterval銆丼etToolInterval銆丼etNoteInterval閮芥槸鍚屼竴鍘熺悊銆傚叧浜庤繖涓狪TEM鐨勬弿榪幫紝璇風湅RFC3550.鑰佺増鏈殑JRTPLIB娌℃湁浣跨敤榪欏鍑芥暟錛岃屾槸鐢‥nableSendName()絳夊嚱鏁般?br>
      • void SetEMailInterval(int count)
      After all possible sources in the source table have been processed, the RTCP
packet builder will check if other (non-CNAME) SDES items need to be
sent. If count is zero or negative, nothing will happen. If count is positive,
an SDES e-mail item will be added after the sources in the source table
have been processed count times.

      • void SetLocationInterval(int count)
      After all possible sources in the source table have been processed, the RTCP
packet builder will check if other (non-CNAME) SDES items need to be
sent. If count is zero or negative, nothing will happen. If count is positive,
an SDES location item will be added after the sources in the source table
have been processed count times.

      • void SetPhoneInterval(int count)
      After all possible sources in the source table have been processed, the RTCP
packet builder will check if other (non-CNAME) SDES items need to be
sent. If count is zero or negative, nothing will happen. If count is positive,
an SDES phone item will be added after the sources in the source table
have been processed count times.

      • void SetToolInterval(int count)
      After all possible sources in the source table have been processed, the RTCP
packet builder will check if other (non-CNAME) SDES items need to be
sent. If count is zero or negative, nothing will happen. If count is positive,
an SDES tool item will be added after the sources in the source table have
been processed count times.

      • void SetNoteInterval(int count)
      After all possible sources in the source table have been processed, the RTCP
packet builder will check if other (non-CNAME) SDES items need to be
sent. If count is zero or negative, nothing will happen. If count is positive,
an SDES note item will be added after the sources in the source table have
been processed count times.

      • int SetLocalName(const void *s, size t len)
      璁劇疆NAME SDES欏圭洰錛屼互閬嶄細璁殑鍏跺畠浜哄憳鐪嬪埌浣犵殑鍚嶇О銆備笅鍚屻?br>     
      • int SetLocalEMail(const void *s, size t len)
      Sets the SDES e-mail item for the local participant to the value s with
length len.

      • int SetLocalLocation(const void *s, size t len)
Sets the SDES location item for the local participant to the value s with
length len.

      • int SetLocalPhone(const void *s, size t len)
      Sets the SDES phone item for the local participant to the value s with
length len.

      • int SetLocalTool(const void *s, size t len)
      Sets the SDES tool item for the local participant to the value s with length
len.
      
      • int SetLocalNote(const void *s, size t len)
Sets the SDES note item for the local participant to the value s with length
len.
In case you specified in the constructor that you want to use your own transmission
component, you should override the following function:
      • RTPTransmitter *NewUserDefinedTransmitter()
      The RTPTransmitter instance returned by this function will then be used to send
and receive RTP and RTCP packets. Note that when the session is destroyed,
this RTPTransmitter instance will be destroyed with a delete call.
By inheriting your own class from RTPSession and overriding one or more of the
functions below, certain events can be detected:

      • void OnRTPPacket(RTPPacket *pack, const RTPTime &receivetime, const  RTPAddress *senderaddress)
      濡傛灉鏈塕TPPacket鏁版嵁鍖呮潵鍒幫紝浼氳皟鐢ㄨ繖涓嚱鏁板鐞嗐?span style="COLOR: rgb(255,153,0)">ps:榪欎釜鍑芥暟鍦ㄦ垜浠戶鎵縍TPSession綾繪椂寰堝彲鑳介噸杞斤紝榪欐槸鑾峰彇RTP鏁版嵁鍖呴櫎浜嗕笂闈㈡墍璇寸殑鏂規硶浠ュ鐨勫彟澶栦竴縐嶆柟娉曪紝榪欎釜鏂規硶姣旇緝閫傚悎寮傛鐨勬儏鍐點傞粯璁よ繖涓槸涓涓┖铏氬嚱鏁般傞櫎浜嗚繖涓嚱鏁頒互澶栵紝涓嬮潰鐨勫嚑涓嚱鏁頒簡浼氱粡甯擱噸杞姐?/span>

      • void OnRTCPCompoundPacket(RTCPCompoundPacket *pack, const RTPTime &receivetime, const RTPAddress *senderaddress)
      Is called when an incoming RTCP packet is about to be processed.

      • void OnSSRCCollision(RTPSourceData *srcdat, const RTPAddress *senderaddress, bool isrtp)
      Is called when an SSRC collision was detected. The instance srcdat is the
one present in the table, the address senderaddress is the one that collided
with one of the addresses and isrtp indicates against which address
of srcdat the check failed.
      
      • void OnCNAMECollision(RTPSourceData *srcdat, const RTPAddress *senderaddress, const uint8 t *cname, size t cnamelength)
      Is called when another CNAME was received than the one already present for source srcdat.

      • void OnNewSource(RTPSourceData *srcdat)
      褰撴湁涓涓柊鐨勬潯鐩姞鍒皊ource table鏃訛紝璋冪敤榪欎釜鍑芥暟銆?span style="COLOR: rgb(255,153,0)">ps: 榪欎篃鏄竴涓瘮杈冮噸瑕佺殑鍑芥暟錛屽洜涓鴻繖鎰忓懗鐫寰堟湁鍙兘鏈変竴涓柊鐨勪笌浼氳呭姞鍏ャ備絾浠ゆ垜寰堜笉楂樺叴鐨勬槸錛岃繖鏃跺欑殑RTPSourceData 閲屽ご鐨凜NAME鍜孨AME絳夊瓧孌甸兘榪樻槸鏃犳晥鐨勶紝榪欎笉鏄疪TCP鐨勮矗浠伙紝鍥犱負鍦ㄨ繖涓猄DES RTCP鏁版嵁鍖呬腑鎵鏈夌殑淇℃伅閮戒互緇忔湁浜嗭紙閫氳繃鎶撳寘璇佸疄浜嗚繖涓鐐癸級銆傛垜浠殑鍑芥暟琚皟鐢ㄥ悗錛岄渶瑕佸歡鏃朵竴浼氭墠鑳藉緱鍒版湁鍏寵繖涓猄ource鐨凜NAME鍜孨AME 絳夌浉鍏崇殑淇℃伅銆傚綋鐒訛紝濡傛灉浣犱笉鎯寵蔣浠舵鎺夛紝涓嶈兘鍦ㄨ繖涓嚱鏁頒綋鍐呬互闃誨鐨勬柟寮忓歡鏃躲?br>
      • void OnRemoveSource(RTPSourceData *srcdat)
      褰撴湁涓涓潯鐩粠source table涓Щ闄ゆ椂璋冪敤榪欎釜鍑芥暟銆?span style="COLOR: rgb(255,153,0)">ps錛氳繖閫氬父鎰忓懗鐫鏈変竴涓笌浼氳呯寮浜嗭紝鍜孫nNewSource涓嶄竴鏍鳳紝榪欐椂鐨凜NAME鍜孨AME絳夐兘鏄湁鏁堢殑銆傜敤榪欎釜鍑芥暟瑕佹敞鎰忥紝鎴戜滑鐨?#8220;鎰忓懗鐫涓や釜瀛?#8221; 鍥犱負“鍔犲叆”鐨勫彲鑳戒笉鏄竴涓柊鐨勪笌浼氳咃紝鑰屾槸涓涓幇鏈変笌浼氳呯殑涓涓柊鐨勫獟浣撴祦銆?#8220;紱誨紑”鐨勪篃鍙兘涓嶆槸涓涓笌浼氳咃紝鑰屽彧鏄叾涓竴涓笌浼氳呯殑鍏朵腑涓涓獟浣撴祦錛岃繖涓や釜鍑芥暟鍙兘緇欐垜浠洿鏂頒笌浼氳呮彁渚涗竴涓Е鍙戞潯浠惰屽凡銆傚綋OnNewSource璋冪敤鏃訛紝鎴戜滑瑕佺湅鐪嬭繖涓狢NAME鏄笉鏄互緇忓湪鎴戜滑涓庝細鑰呭悕鍗曚腑錛屽鏋滀笉鏄紝閭e氨鏄竴涓柊涓庝細鑰呫傚悓鏃訛紝濡傛灉OnRemoveSource琚皟鐢紝鍒欐垜浠鐪嬬湅榪欎釜CNAME鐨勪笌浼氳呰繕鏈夋病鏈夊叾瀹冪殑Source錛屽鏋滄病鏈変簡錛岃繖涓笌浼氳呮墠鏄湡姝g寮銆傝繖涔堝緢楹葷儲錛燂紵閭e氨瀵逛簡錛岄偅灝辨槸鐜板湪鐨凥323鍜孲IP瑕佸仛鐨勪簨鎯咃紞錛嶄細璇濈鐞嗐?br>     
      • void OnTimeout(RTPSourceData *srcdat)
      Is called when participant srcdat is timed out.

      • void OnBYETimeout(RTPSourceData *srcdat)
      Is called when participant srcdat is timed after having sent a BYE packet.

      • void OnBYEPacket(RTPSourceData *srcdat)
      Is called when a BYE packet has been processed for source srcdat.

      • void OnAPPPacket(RTCPAPPPacket *apppacket, const RTPTime &receivetime,
const RTPAddress *senderaddress)
      In called when an RTCP APP packet apppacket has been received at time
receivetime from address senderaddress.

      • void OnUnknownPacketType(RTCPPacket *rtcppack, const RTPTime &receivetime,
const RTPAddress *senderaddress)
      Is called when an unknown RTCP packet type was detected.

      • void OnUnknownPacketFormat(RTCPPacket *rtcppack, const RTPTime &receivetime,
const RTPAddress *senderaddress)
      Is called when an unknown packet format for a known packet type was
detected.

      • void OnNoteTimeout(RTPSourceData *srcdat)
      Is called when the SDES NOTE item for source srcdat has been timed out.

      • void OnSendRTCPCompoundPacket(RTCPCompoundPacket *pack)
      Is called when an RTCP compound packet has just been sent. Useful to
inspect outgoing RTCP data.

      • void OnPollThreadError(int errcode)
      Is called when error errcode was detected in the poll thread.

      • void OnPollThreadStep()
      Is called each time the poll thread loops. This happens when incoming data
was detected or when its time to send an RTCP compound packet.

鍙戦佽呮姤鍛婏紙SR)

V| P| RC| PT=SR=200| LEN|


鍙戦佽匰SRC 錛堝凡鍏寵仈錛?/font>


NTP鏃墮棿鎴籌紙楂?2浣嶏級 SR_GetNTPTimestamp ()

 

NTP鏃墮棿鎴籌紙浣?2浣嶏級


RTP鏃墮棿鎴?span class=Apple-tab-span style="WHITE-SPACE: pre"> SR_GetRTPTimestamp () 

 


鍙戦佽呭垎緇勮鏁板櫒 SR_GetPacketCount錛堬級

 


鍙戦佽呭瓧鑺傝鏁板櫒 SR_GetByteCount ()

 


...(涓嬮潰鏄繖涓彂閫佽呮墍鍙戦佺殑鎺ユ敹鑰呮姤鍛婏紝鍦ㄤ笅闈㈠拰RR涓璧瘋璁猴級

 


闄勫姞淇℃伅錛?/font>

榪欎釜婧愭槸鍚︽湁鍙戦佸彂閫佽呮姤鍛?/font>

SR_HasInfo ()

榪欎釜鍙戦佽呮姤鍛婃帴鏀剁殑鏃墮棿

SR_GetReceiveTime ()

浠ュ強浠R_Prev_寮澶寸殑錛岃幏寰楀掓暟絎簩涓彂閫佽呮姤鍛婄殑淇℃伅銆?/span>



鎺ユ敹鑰呮姤鍛婏紙RR)

V| P| RC| PT=SR=201| LEN|


 

SSRC1(絎竴涓帴鏀惰呮姤鍛婂潡鎵鍏寵仈鐨勫彂閫佽咃級 錛堝凡鍏寵仈錛?/span>

鍒嗙粍涓㈠け鐜?span class=Apple-tab-span style="WHITE-SPACE: pre">
| 涓㈠け鍒嗙粍鎬繪暟|

鎵╁睍鐨勬渶楂樺簭鍙?/div>

闂撮殧鎶栧姩

鏈鏂扮殑鍙戦佽呮姤鍛婃椂闂存埑錛圠SR)

SR鏈鏂伴棿闅旓紙DLSR)

闄勫姞淇℃伅錛?/span>
榪欎釜婧愭槸鍚︽湁鍙戦佹帴鏀惰呮姤鍛?/span>
鎺ユ敹鑰呮姤鍛婃帴鏀舵椂闂?/div>
浠ュ強浠R_Prev_寮澶寸殑錛岃幏寰楀掓暟絎簩涓帴鏀惰呮姤鍛婄殑淇℃伅銆?/span>


]]>
YUV鏍煎紡璇︾粏瑙i噴涓嶧FMPEG鐨勫叧緋?/title><link>http://m.shnenglu.com/bangle/archive/2009/06/08/87070.html</link><dc:creator>榛戣壊澶╀嬌</dc:creator><author>榛戣壊澶╀嬌</author><pubDate>Mon, 08 Jun 2009 07:23:00 GMT</pubDate><guid>http://m.shnenglu.com/bangle/archive/2009/06/08/87070.html</guid><wfw:comment>http://m.shnenglu.com/bangle/comments/87070.html</wfw:comment><comments>http://m.shnenglu.com/bangle/archive/2009/06/08/87070.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/bangle/comments/commentRss/87070.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bangle/services/trackbacks/87070.html</trackback:ping><description><![CDATA[<div class="hvzpftn" id=art width="100%"> <p align=left><strong><span>YUV</span></strong><strong><span>涓昏鐨勯噰鏍鋒牸寮?/span></strong><strong><span> </span></strong></p> <p align=left><span>涓昏鐨勯噰鏍鋒牸寮忔湁</span><span>YCbCr 4:2:0</span><span>銆?/span><span>YCbCr 4:2:2</span><span>銆?/span><span>YCbCr 4:1:1</span><span>鍜?/span><span> YCbCr 4:4:4</span><span>銆傚叾涓?/span><span>YCbCr 4:1:1 </span><span>姣旇緝甯哥敤錛屽叾鍚箟涓猴細姣忎釜鐐逛繚瀛樹竴涓?/span><span> 8bit </span><span>鐨勪寒搴﹀?/span><span>(</span><span>涔熷氨鏄?/span><span>Y</span><span>鍊?/span><span>), </span><span>姣?/span><span> 2x2 </span><span>涓偣淇濆瓨涓涓?/span><span> Cr </span><span>鍜?/span><span>Cb </span><span>鍊?/span><span>, </span><span>鍥懼儚鍦ㄨ倝鐪間腑鐨勬劅瑙変笉浼氳搗澶ぇ鐨勫彉鍖栥傛墍浠?/span><span>, </span><span>鍘熸潵鐢?/span><span> RGB(R,G,B </span><span>閮芥槸</span><span> 8bit unsigned) </span><span>妯″瀷</span><span>, 4 </span><span>涓偣闇瑕?/span><span> 8x3=24 bites</span><span>錛堝涓嬪浘絎竴涓浘錛?/span><span>. </span><span>鑰岀幇鍦ㄤ粎闇瑕?/span><span> 8+(8/4)+(8/4)=12bites, </span><span>騫沖潎姣忎釜鐐瑰崰</span><span>12bites(</span><span>濡備笅鍥劇浜屼釜鍥?/span><span>)</span><span>銆傝繖鏍峰氨鎶婂浘鍍忕殑鏁版嵁鍘嬬緝浜嗕竴鍗娿?/span><span> </span></p> <p align=left><strong><span>    </span></strong><strong><span>涓婅竟浠呯粰鍑轟簡鐞嗚涓婄殑紺轟緥錛屽湪瀹為檯鏁版嵁瀛樺偍涓槸鏈夊彲鑳芥槸涓嶅悓鐨勶紝涓嬮潰緇欏嚭鍑犵鍏蜂綋鐨勫瓨鍌ㄥ艦寮忥細</span></strong><strong><span> </span></strong></p> <p align=left><span>錛?/span><span>1</span><span>錛?/span><span>    <strong>YUV 4:4:4</strong> </span></p> <p align=left><span>YUV</span><span>涓変釜淇¢亾鐨勬娊鏍風巼鐩稿悓錛屽洜姝ゅ湪鐢熸垚鐨勫浘鍍忛噷錛屾瘡涓薄绱犵殑涓変釜鍒嗛噺淇℃伅瀹屾暣錛堟瘡涓垎閲忛氬父</span><span>8</span><span>姣旂壒錛夛紝緇忚繃</span><span>8</span><span>姣旂壒閲忓寲涔嬪悗錛屾湭緇忓帇緙╃殑姣忎釜鍍忕礌鍗犵敤</span><span>3</span><span>涓瓧鑺傘?/span><span> </span></p> <p align=left><span>涓嬮潰鐨勫洓涓儚绱犱負</span><span>: [Y<sub>0</sub> U<sub>0</sub> V<sub>0</sub>] [Y<sub>1</sub> U<sub>1</sub> V<sub>1</sub>] [Y<sub>2</sub> U<sub>2</sub> V<sub>2</sub>] [Y<sub>3</sub> U<sub>3</sub> V<sub>3</sub>] </span></p> <p align=left><span>瀛樻斁鐨勭爜嫻佷負<span>: Y<sub>0</sub> U<sub>0</sub> V<sub>0</sub> Y<sub>1</sub> U<sub>1</sub> V<sub>1</sub> Y<sub>2</sub> U<sub>2</sub> V<sub>2</sub> Y<sub>3</sub> U<sub>3</sub> V<sub>3</sub></span></span></p> <p align=left><strong><span>錛?span>2</span>錛?span>   YUV 4:2:2</span></span></strong></p> <p align=left><span>      </span><span>姣忎釜鑹插樊淇¢亾鐨勬娊鏍風巼鏄寒搴︿俊閬撶殑涓鍗婏紝鎵浠ユ按騫蟲柟鍚戠殑鑹插害鎶芥牱鐜囧彧鏄?span>4:4:4</span>鐨勪竴鍗娿傚闈炲帇緙╃殑<span>8</span>姣旂壒閲忓寲鐨勫浘鍍忔潵璇達紝姣忎釜鐢變袱涓按騫蟲柟鍚戠浉閭葷殑鍍忕礌緇勬垚鐨勫畯鍍忕礌闇瑕佸崰鐢?span>4</span>瀛楄妭鍐呭瓨銆?/span></p> <p align=left><span>涓嬮潰鐨勫洓涓儚绱犱負</span><span>: [Y<sub>0</sub> U<sub>0</sub> V<sub>0</sub>] [Y<sub>1</sub> U<sub>1</sub> V<sub>1</sub>] [Y<sub>2</sub> U<sub>2</sub> V<sub>2</sub>] [Y<sub>3</sub> U<sub>3</sub> V<sub>3</sub>] </span></p> <p align=left><span>瀛樻斁鐨勭爜嫻佷負<span>: Y<sub>0</sub> U<sub>0</sub> Y<sub>1</sub> V<sub>1</sub> Y<sub>2</sub> U<sub>2</sub> Y<sub>3</sub> V<sub>3</sub></span></span></p> <p align=left><span>鏄犲皠鍑哄儚绱犵偣涓猴細<span>[Y<sub>0</sub> U<sub>0</sub> V<sub>1</sub>] [Y<sub>1</sub> U<sub>0</sub> V<sub>1</sub>] [Y<sub>2</sub> U<sub>2</sub> V<sub>3</sub>] [Y<sub>3</sub> U<sub>2</sub> V<sub>3</sub>]<strong></strong></span></span></p> <p align=left><strong><span>錛?span>3</span>錛?span>   YUV 4:1:1</span></span></strong></p> <p align=left><span>4:1:1</span><span>鐨勮壊搴︽娊鏍鳳紝鏄湪姘村鉤鏂瑰悜涓婂鑹插害榪涜<span>4:1</span>鎶芥牱銆傚浜庝綆绔敤鎴峰拰娑堣垂綾諱駭鍝佽繖浠嶇劧鏄彲浠ユ帴鍙楃殑銆傚闈炲帇緙╃殑<span>8</span>姣旂壒閲忓寲鐨勮棰戞潵璇達紝姣忎釜鐢?span>4</span>涓按騫蟲柟鍚戠浉閭葷殑鍍忕礌緇勬垚鐨勫畯鍍忕礌闇瑕佸崰鐢?span>6</span>瀛楄妭鍐呭瓨<strong></strong></span></p> <p align=left><span>涓嬮潰鐨勫洓涓儚绱犱負</span><span>: [Y<sub>0</sub> U<sub>0</sub> V<sub>0</sub>] [Y<sub>1</sub> U<sub>1</sub> V<sub>1</sub>] [Y<sub>2</sub> U<sub>2</sub> V<sub>2</sub>] [Y<sub>3</sub> U<sub>3</sub> V<sub>3</sub>] </span></p> <p align=left><span>瀛樻斁鐨勭爜嫻佷負<span>: Y<sub>0</sub> U<sub>0</sub> Y<sub>1</sub> Y<sub>2</sub> V<sub>2</sub> Y<sub>3</sub></span></span></p> <p align=left><span>鏄犲皠鍑哄儚绱犵偣涓猴細<span>[Y<sub>0</sub> U<sub>0</sub> V<sub>2</sub>] [Y<sub>1</sub> U<sub>0</sub> V<sub>2</sub>] [Y<sub>2</sub> U<sub>0</sub> V<sub>2</sub>] [Y<sub>3</sub> U<sub>0</sub> V<sub>2</sub>]</span></span></p> <p align=left><strong><span>錛?span>4</span>錛?span>YUV4:2:0</span></span></strong></p> <p align=left><span>     4:2:0</span><span>騫朵笉鎰忓懗鐫鍙湁<span>Y,Cb</span>鑰屾病鏈?span>Cr</span>鍒嗛噺銆傚畠鎸囧緱鏄姣忚鎵弿綰挎潵璇達紝鍙湁涓縐嶈壊搴﹀垎閲忎互<span>2:1</span>鐨勬娊鏍風巼瀛樺偍銆傝繘琛岄殧琛屾壂鎻忥紝鐩擱偦鐨勬壂鎻忚瀛樺偍涓嶅悓鐨勮壊搴﹀垎閲忥紝涔熷氨鏄錛屽鏋滀竴琛屾槸<span>4:2:0</span>鐨勮瘽錛屼笅涓琛屽氨鏄?span>4:0:2</span>錛屽啀涓嬩竴琛屾槸<span>4:2:0...</span>浠ユ綾繪帹銆傚姣忎釜鑹插害鍒嗛噺鏉ヨ錛屾按騫蟲柟鍚戝拰绔栫洿鏂瑰悜鐨勬娊鏍風巼閮芥槸<span>2:1</span>錛屾墍浠ュ彲浠ヨ鑹插害鐨勬娊鏍風巼鏄?span>4:1</span>銆傚闈炲帇緙╃殑<span>8</span>姣旂壒閲忓寲鐨勮棰戞潵璇達紝姣忎釜鐢?span>2x2</span>涓?span>2</span>琛?span>2</span>鍒楃浉閭葷殑鍍忕礌緇勬垚鐨勫畯鍍忕礌闇瑕佸崰鐢?span>6</span>瀛楄妭鍐呭瓨銆?/span></p> <p align=left><span>涓嬮潰鍏釜鍍忕礌涓猴細<span>[Y<sub>0</sub> U<sub>0</sub> V<sub>0</sub>] [Y<sub>1</sub> U<sub>1</sub> V<sub>1</sub>] [Y<sub>2</sub> U<sub>2</sub> V<sub>2</sub>] [Y<sub>3</sub> U<sub>3</sub> V<sub>3</sub>]</span></span></p> <p align=left><span>                [Y<sub>5</sub> U<sub>5</sub> V<sub>5</sub>] [Y<sub>6</sub> U<sub>6</sub> V<sub>6</sub>] [Y<sub>7</sub>U<sub>7</sub> V<sub>7</sub>] [Y<sub>8</sub> U<sub>8</sub> V<sub>8</sub>]</span></p> <p align=left><span>瀛樻斁鐨勭爜嫻佷負錛?span>Y<sub>0</sub> U<sub>0</sub> Y<sub>1</sub> Y<sub>2</sub> U<sub>2</sub> Y<sub>3</sub></span></span></p> <p align=left><sub><span>                     </span></sub><span>Y<sub>5 </sub>V<sub>5</sub> Y<sub>6</sub> Y<sub>7</sub> V<sub>7</sub> Y<sub>8</sub></span></p> <p align=left><span>鏄犲皠鍑虹殑鍍忕礌鐐逛負錛?span>[Y<sub>0</sub> U<sub>0</sub> V<sub>5</sub>] [Y<sub>1</sub> U<sub>0</sub> V<sub>5</sub>] [Y<sub>2</sub> U<sub>2</sub> V<sub>7</sub>] [Y<sub>3</sub> U<sub>2</sub> V<sub>7</sub>]</span></span></p> <span>                  [Y<sub>5</sub> U<sub>0</sub> V<sub>5</sub>] [Y<sub>6</sub> U<sub>0</sub> V<sub>5</sub>] [Y<sub>7</sub>U<sub>2</sub> V<sub>7</sub>] [Y<sub>8</sub> U<sub>2</sub> V<sub>7</sub>]</span> <br><br> <p>瀵瑰簲AVPicture閲岄潰鏈塪ata[4]鍜宭inesize[4]鍏朵腑data鏄竴涓寚鍚戞寚閽堢殑鎸囬拡錛堜簩綰с佷簩緇存寚閽堬級錛屼篃灝辨槸鎸囧悜瑙嗛鏁版嵁緙撳啿鍖虹殑棣栧湴鍧錛岃宒ata[0]~data[3]鏄竴綰ф寚閽堬紝鍙互鐢ㄥ涓嬬殑鍥炬潵琛ㄧず錛?</p> <p>data -->xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>        ^                ^              ^<br>        |                |              |<br>         data[0]      data[1]         data[2]<br></p> <p>姣斿璇達紝褰損ix_fmt=PIX_FMT_YUV420P鏃訛紝data涓殑鏁版嵁鏄寜鐓UV鐨勬牸寮忓瓨鍌ㄧ殑錛屼篃灝辨槸錛?</p> <pre>data -->YYYYYYYYYYYYYYUUUUUUUUUUUUUVVVVVVVVVVVV ^ ^ ^ | | | data[0] data[1] data[2] </pre> <p>linesize鏄寚瀵瑰簲浜庢瘡涓琛岀殑澶у皬錛屼負浠涔堥渶瑕佽繖涓彉閲忥紝鏄洜涓哄湪YUV鏍煎紡鍜孯GB鏍煎紡鏃訛紝姣忚鐨勫ぇ灝忎笉涓瀹氱瓑浜庡浘鍍忕殑瀹藉害錛屽浜嶳GB鏍煎紡杈撳嚭鏃?鍙湁涓涓氶亾(bgrbgrbgr......)鍙敤錛屽嵆linesize[0],鍜宒ata[0],so RGB24 : data[0] = packet rgb//bgrbgrbgr...... </p> <pre>linesize[0] = width*3 </pre> <p>鍏朵粬鐨勫data[1][2][3]涓巐inesize[1][2][3]鏃犱換浣曟剰涔? </p> <p>鑰屽浜庯脊錛碉級鏍煎紡杈撳嚭鏃訛紝鏈変笁涓氶亾鍙敤錛屽嵆data[0][1][2],涓巐inesize[0][1][2]錛岃寉uv鏍煎紡瀵逛簬榪愬姩浼拌鏃訛紝闇瑕佸~鍏卲adding(right, bottom),鏁咃細 </p> <pre>linesize=width+padding size(16+16). ///////////////////////////////////////////////////////////////////////////////////////</pre> <pre><br>   case PIX_FMT_YUV420P:<br>   case PIX_FMT_YUVJ420P:<br>   case PIX_FMT_RGB555:<br>    if (PIC_DIRECTION_0 == m_dwFilpPicDirection)<br>    {<br>     m_pYuvFrame->data [0] += m_pYuvFrame->linesize[0] *  m_pVCodecContext->height;<br>     //鍥犱負鏄殧琛屾壂鎻廢涓嶸鍙湁楂樺害鐨勪竴鍗?br>     m_pYuvFrame->data [1] += m_pYuvFrame->linesize[1] *  m_pVCodecContext->height/2;<br>     m_pYuvFrame->data [2] += m_pYuvFrame->linesize[2] *  m_pVCodecContext->height/2;<br>     m_pYuvFrame->linesize[0] = -m_pYuvFrame->linesize[0];<br>     m_pYuvFrame->linesize[1] = -m_pYuvFrame->linesize[1];<br>     m_pYuvFrame->linesize[2] = -m_pYuvFrame->linesize[2];<br>    }<br>    <br>    break;<br>   case PIX_FMT_YUVJ422P:<br>   case PIX_FMT_YUV422P:<br>   case PIX_FMT_YUYVJ422:<br>   case PIX_FMT_YUV411P:<br>   case PIX_FMT_YUYV422:  <br>    if (PIC_DIRECTION_0 == m_dwFilpPicDirection)<br>    {<br>     m_pYuvFrame->data [0] += m_pYuvFrame->linesize[0] *  m_pVCodecContext->height;<br>     m_pYuvFrame->data [1] += m_pYuvFrame->linesize[1] *  m_pVCodecContext->height;<br>     m_pYuvFrame->data [2] += m_pYuvFrame->linesize[2] *  m_pVCodecContext->height;<br>     m_pYuvFrame->linesize[0] = -m_pYuvFrame->linesize[0];<br>     m_pYuvFrame->linesize[1] = -m_pYuvFrame->linesize[1];<br>     m_pYuvFrame->linesize[2] = -m_pYuvFrame->linesize[2];<br>    }<br>    break;<br>   }<br>鍦‵FMPEG涓漿鎹GB鏃墮『渚塊鍊掑浘鍍忕殑鏂瑰悜綆楁硶<br></pre> </div> <img src ="http://m.shnenglu.com/bangle/aggbug/87070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bangle/" target="_blank">榛戣壊澶╀嬌</a> 2009-06-08 15:23 <a href="http://m.shnenglu.com/bangle/archive/2009/06/08/87070.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>嫻偣鏁拌繍綆楁眹緙栨寚浠?/title><link>http://m.shnenglu.com/bangle/archive/2009/03/11/76200.html</link><dc:creator>榛戣壊澶╀嬌</dc:creator><author>榛戣壊澶╀嬌</author><pubDate>Wed, 11 Mar 2009 03:40:00 GMT</pubDate><guid>http://m.shnenglu.com/bangle/archive/2009/03/11/76200.html</guid><wfw:comment>http://m.shnenglu.com/bangle/comments/76200.html</wfw:comment><comments>http://m.shnenglu.com/bangle/archive/2009/03/11/76200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bangle/comments/commentRss/76200.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bangle/services/trackbacks/76200.html</trackback:ping><description><![CDATA[     鎽樿:   <a href='http://m.shnenglu.com/bangle/archive/2009/03/11/76200.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/bangle/aggbug/76200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bangle/" target="_blank">榛戣壊澶╀嬌</a> 2009-03-11 11:40 <a href="http://m.shnenglu.com/bangle/archive/2009/03/11/76200.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>2鏈?9http://m.shnenglu.com/bangle/archive/2009/02/19/74302.html榛戣壊澶╀嬌榛戣壊澶╀嬌Thu, 19 Feb 2009 07:56:00 GMThttp://m.shnenglu.com/bangle/archive/2009/02/19/74302.htmlhttp://m.shnenglu.com/bangle/comments/74302.htmlhttp://m.shnenglu.com/bangle/archive/2009/02/19/74302.html#Feedback0http://m.shnenglu.com/bangle/comments/commentRss/74302.htmlhttp://m.shnenglu.com/bangle/services/trackbacks/74302.html涓嶇粡鎵撳嚮鑰佸ぉ鐪燂紝
鑷彜鑻遍泟鍑虹偧鐙憋紝
浠庢潵瀵岃吹钀藉嚒灝橈紝
閱夌敓姊︽璋佹垚鍣紝
鐮撮┈闀挎灙欏朵咕鍧ゃ?

]]>
姹囩紪鎸囦護涓庤姳鎸囦護http://m.shnenglu.com/bangle/archive/2009/02/17/74023.html榛戣壊澶╀嬌榛戣壊澶╀嬌Tue, 17 Feb 2009 04:44:00 GMThttp://m.shnenglu.com/bangle/archive/2009/02/17/74023.htmlhttp://m.shnenglu.com/bangle/comments/74023.htmlhttp://m.shnenglu.com/bangle/archive/2009/02/17/74023.html#Feedback0http://m.shnenglu.com/bangle/comments/commentRss/74023.htmlhttp://m.shnenglu.com/bangle/services/trackbacks/74023.html闃呰鍏ㄦ枃

]]>
鎯呬漢鑺備篃鍔犵彮http://m.shnenglu.com/bangle/archive/2009/02/14/73784.html榛戣壊澶╀嬌榛戣壊澶╀嬌Sat, 14 Feb 2009 05:47:00 GMThttp://m.shnenglu.com/bangle/archive/2009/02/14/73784.htmlhttp://m.shnenglu.com/bangle/comments/73784.htmlhttp://m.shnenglu.com/bangle/archive/2009/02/14/73784.html#Feedback0http://m.shnenglu.com/bangle/comments/commentRss/73784.htmlhttp://m.shnenglu.com/bangle/services/trackbacks/73784.html闃呰鍏ㄦ枃

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99视频国产精品免费观看| 另类国产ts人妖高潮视频| 欧美在线国产精品| 一区二区三区久久网| 9l视频自拍蝌蚪9l视频成人| 久久se精品一区精品二区| 亚洲欧洲精品一区二区| 最新日韩在线视频| 一区二区日韩免费看| 亚洲午夜免费视频| 久久久www成人免费精品| 麻豆国产精品va在线观看不卡| 欧美成人午夜激情在线| 一本色道久久综合| 欧美在线视频在线播放完整版免费观看 | 久久久国产91| 中日韩美女免费视频网站在线观看| 亚洲一区www| 美女主播精品视频一二三四| 日韩天堂在线视频| 久久久精品一区二区三区| 欧美人牲a欧美精品| 国产一区二区中文| 日韩午夜精品| 久久久99国产精品免费| 亚洲看片免费| 久久亚洲高清| 国产精品一区二区男女羞羞无遮挡| 在线日本成人| 欧美一区亚洲| 在线亚洲免费视频| 另类av导航| 韩国av一区二区三区四区| 亚洲欧美成人综合| 亚洲精品乱码久久久久久日本蜜臀| 一本色道久久88综合亚洲精品ⅰ| 久久久久久高潮国产精品视| 国产精品一区二区三区成人| 日韩午夜在线电影| 欧美jizz19性欧美| 亚洲自拍偷拍网址| 欧美性色aⅴ视频一区日韩精品| 国产一区二区激情| 亚洲欧美日韩国产成人| 亚洲人成网站在线播| 六月天综合网| 亚洲国产精品成人| 免费亚洲电影在线| 性色一区二区三区| 国产九九精品| 欧美在线亚洲一区| 午夜精品久久久久影视| 国产欧美日韩在线| 欧美在线视频一区二区| 午夜久久黄色| 狠狠色狠色综合曰曰| 久久久水蜜桃av免费网站| 欧美一区二区三区免费视频| 国产日韩亚洲欧美精品| 久久久国产精品一区| 欧美在线免费视频| 狠狠网亚洲精品| 亚洲国产日韩美| 欧美在线啊v一区| 亚洲一区中文字幕在线观看| 国产精品国产一区二区| 亚洲欧美日韩成人| 亚洲一级二级在线| 国产日韩欧美夫妻视频在线观看| 欧美一区二区国产| 欧美自拍偷拍午夜视频| 伊人成人在线视频| 欧美成年人视频网站欧美| 久久综合色一综合色88| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲国产老妈| 欧美日韩免费在线观看| 亚洲欧美激情诱惑| 欧美一区二区三区精品| 亚洲国产精品热久久| 亚洲精品资源美女情侣酒店| 国产精品网站视频| 麻豆av一区二区三区久久| 欧美顶级少妇做爰| 午夜精品久久久久久久久久久 | 久久久国产精品亚洲一区 | 亚洲女优在线| 欧美一区三区三区高中清蜜桃 | 国产精品一区在线播放| 久久久夜精品| 欧美日韩免费观看一区二区三区| 亚洲欧美制服另类日韩| 久久嫩草精品久久久久| 亚洲一区二区黄| 午夜精品久久久久久久99水蜜桃 | 欧美亚洲在线视频| 日韩天堂在线观看| 欧美在线|欧美| 日韩视频一区| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区精品视频| 欧美在线黄色| 亚洲与欧洲av电影| 欧美超级免费视 在线| 久久精品最新地址| 欧美午夜视频一区二区| 欧美黄色小视频| 国产午夜精品麻豆| 日韩一级网站| 欧美aaa级| 久久国产精品高清| 欧美日韩在线播放一区二区| 噜噜噜躁狠狠躁狠狠精品视频 | 久久久久国产精品厨房| 亚洲欧美三级伦理| 欧美日韩精品免费观看视一区二区| 可以免费看不卡的av网站| 国产精品卡一卡二卡三| 99re6这里只有精品| 亚洲精品国产拍免费91在线| 久久精品免费播放| 羞羞色国产精品| 国产精品成人免费| 亚洲人午夜精品| 亚洲欧洲在线一区| 老牛影视一区二区三区| 美女主播精品视频一二三四| 国产一区二区三区在线观看视频| 亚洲一二三四区| 午夜精品福利视频| 国产精品美女www爽爽爽视频| 一本色道久久88亚洲综合88| 亚洲私人影院在线观看| 欧美日韩午夜| 一区二区三区国产精华| 亚洲欧美欧美一区二区三区| 国产精品成人v| 中文一区二区| 欧美一区二区三区在线视频| 国产视频一区二区三区在线观看| 亚欧美中日韩视频| 久久久噜噜噜久久久| 狠狠色丁香婷综合久久| 免费人成精品欧美精品| 91久久在线视频| 亚洲素人在线| 国产欧美精品一区二区三区介绍| 午夜天堂精品久久久久 | 亚洲无毛电影| 国产精品色网| 欧美一区在线直播| 欧美高清在线| 亚洲愉拍自拍另类高清精品| 国产一区二区三区四区在线观看| 久久天天躁狠狠躁夜夜av| 亚洲精品欧美一区二区三区| 羞羞答答国产精品www一本| 精品成人久久| 欧美理论视频| 欧美一级久久| 欧美激情中文不卡| 亚洲女爱视频在线| 1000部精品久久久久久久久| 欧美精品成人在线| 欧美一级二区| 亚洲精选视频在线| 久久精品国产一区二区三区| 亚洲精品免费在线观看| 国产欧美精品一区| 欧美另类视频在线| 久久精品国产v日韩v亚洲 | 免费看亚洲片| 亚洲永久免费精品| 亚洲国产精品一区二区第一页| 亚洲视频在线观看| 免费中文字幕日韩欧美| 亚洲综合电影| 亚洲福利精品| 国产精品一区二区三区免费观看 | 欧美大片va欧美在线播放| 亚洲欧美第一页| 亚洲精品久久久久久久久久久 | 久久琪琪电影院| 中文网丁香综合网| 亚洲国产欧美一区| 国产欧美综合在线| 欧美视频不卡中文| 欧美成人午夜免费视在线看片| 午夜精品久久久久久久白皮肤| 亚洲精品一区在线观看香蕉| 欧美成人亚洲成人日韩成人| 性久久久久久久久| 一区二区三区你懂的| 亚洲国产美国国产综合一区二区| 国产日韩精品一区| 国产精品高清在线观看| 欧美精品久久久久久久免费观看| 久久蜜桃精品| 久久久九九九九| 久久久xxx|