僅僅介紹上邊緣塊需要用到上面的像素(不存在)(例如垂直模式),左邊緣快需要用到左邊的像素(不存在)(例如水平模式)的情況。H.264 I幀邊緣塊的處理I幀的第一個左上的邊緣塊,採用幀內預測,左邊和上邊沒有像素,所以這時的就認為左邊和上邊像素都為128(255/2),其中上邊緣塊做垂直預測時,因為都沒有上邊緣像素都採用值128,而左邊緣時,由於沒有左邊緣像素,所以在進行水平預測模式的時候,都採用128.記住一點的就是,I幀的塊預測,都是基於周圍已經左邊和上邊已重建好的塊進行的再次預測的。
多播路由是一個很好的技術,在Internet上實現了對資料的“廣播”,不同於廣播的是,由於廣播風暴的問題,路由器是禁止廣播資料跨路由傳送的。而多播則很好的解決了這個問題。現在M$軟體如:Netmeeting,WMS就廣泛運用了多播這種技術。這裡討論的是怎麼樣把你的Linux架設成一個多播路由器(一般的網關、路由器是不支援多播資料包通過的)。1、傳輸協議
encode_one_macroblock()函數中的運動估計分為兩大塊,對於宏塊級的三種模式,分塊後直接對patition依次調用PartitionMotionSearch()函數;而對於亞宏塊級的(含8x8, 8x4,4x8,4x4)模式,首先將宏塊拆分為4個8×8子宏塊,針對每個8×8子宏塊調用PartitionMotionSearch()函數。void PartitionMotionSearch (int blocktype, //塊模式
使用TCP通訊端時,當無網路連接時,還會繼續send,繼續recv阻塞,知道TCP自己協議機制判斷中斷連線時才會停止發送和接收,時間需要幾分鐘之久。解決的辦法是,自己設定接收逾時時間,當逾時後重新發送,或者從新初始化socket然後在重新建立socket重新connect。代碼如下: int iSendTimeout, iRecvTimeOut; iClientSock = socket(AF_INET, SOCK_STREAM,
本文以H264視頻流為例,講解解碼流資料的步驟。為突出重點,本文只專註於討論解碼視頻流資料,不涉及其它(如開發環境的配置等)。如果您需要這方面的資訊,請和我聯絡。準備變數 定義AVCodecContext。如果您使用類,可以定義成類成員。我這裡定義成全域變數。static AVCodecContext * g_pCodecCtx = NULL;定義一個AVFrame,AVFrame描述一個多媒體幀。解碼後的資料將被放在其中。static AVFrame * g_pavfFrame = NULL;
分類: 視頻編解碼技術 2010-07-15 10:29 283人閱讀 評論(0)收藏 舉報ffmpeg裡提供了很多的encoder,decoder,詳見avcodec.h裡的枚舉變數CodecID。 宏定義#define REGISTER_ENCODER(X,x) { / extern AVCodec x##_encoder; / if(##X##_ENCODER) avcodec_register(&x##_encoder);
1. 聯合說明和聯合變數定義 聯合也是一種新的資料類型, 它是一種特殊形式的變數。 聯合說明和聯合變數定義與結構十分相似。其形式為: union 聯合名{ 資料類型 成員名; 資料類型 成員名; ... } 聯合變數名; 聯合表示幾個變數公用一個記憶體位置, 在不同的時間儲存不同的資料類型 和不同長度的變數。 下例表示說明一個聯合a_bc: union a_bc{ int i; char mm; }; 再用已說明的聯合可定義聯合變數。
用FFMPEG SDK進行視頻轉碼壓縮的時候,轉碼成功後去看視頻的內容,發現音視頻是不同步的。這個的確是一個惱火的事情。我在用FFMPEG SDK做h264格式的FLV檔案編碼Filter的時候就碰到了這個問題。 經過研究發現,FFMPEG SDK寫入視頻的時候有兩個地方用來控制寫入的時間戳記,一個是AvPacket, 一個是AvFrame。
appro的ipnc中只實現了英文的osd疊加,就連小小的ascii碼錶都沒有覆蓋全,而且該swosd架構灰常淩亂。其實無非就是兩個功能,一是疊加文字,而是疊加圖片,由於考慮到相容不同的解析度的視頻流,所以處理的分支相對校對。圖片的疊加暫不實現,用途最多的是中文的疊加,實現中文osd疊加的方法也非常簡單,如下:1、瞭解中文字型檔的分布,通過漢字的內碼計算出該漢字在字型檔中的位置。2、同上,瞭解ascii字型檔的分布,通過字母的ascii碼值計算對應的字元在字型檔中的位置(這個相對簡單,漢字的也不
Select在Socket編程中還是比較重要的,可是對於初學Socket的人來說都不太愛用Select寫程式,他們只是習慣寫諸如connect、accept、recv或recvfrom這樣的阻塞程式(所謂阻塞方式block,顧名思義,就是進程或是線程執行到這些函數時必須等待某個事件的發生,如果事件沒有發生,進程或線程就被阻塞,函數不能立即返回)。可是使用Select就可以完成非阻塞(所謂非阻塞方式non-block,就是進程或線程執行此函數時不必非要等待事件的發生,一旦執行肯定返回,以傳回值的不
(轉)利用ffmpeg來進行視頻解碼的完整範例程式碼(H.264)Decode() { FILE * inpf; int nWrite; int i,p; int nalLen; unsigned char* Buf; int got_picture, consumed_bytes; unsigned char *DisplayBuf; DisplayBuf=(unsigned char *)malloc(60000); char outfile[] = "test.pgm"; //1.開
DMA方式具有如下特點: 1、 外部裝置的輸入輸出請求直接發給主儲存器。 主儲存空間既可以被CPU訪問,也可以被外圍裝置訪問。因此,在主儲存空間中通常要有一個儲存管理組件來為各種訪問主儲存空間的申請排隊,一般電腦系統把外圍裝置的訪問申請安排在最高優先順序。 2、
inittab改了已經在fedora15中,你vim它就可以看到更改說明,就是說都改到/etc/systemd/system/default.target這裡了,就是預設的設定。如果你要改變預設值就把對應的runlevel移動過去覆蓋了。To 3 字元[root@15 system]# rm -rf /etc/systemd/system/default.target[root@15 system]# ln -s /lib/systemd/system/runlevel3.target
1 Kconfig和Makefile毫不誇張地說,Kconfig和Makefile是我們瀏覽核心代碼時最為依仗的兩個檔案。基本上,Linux 核心中每一個目錄下邊都會有一個Kconfig檔案和一個Makefile檔案。Kconfig和Makefile就好似一個城市的地圖,地圖引導我們去 認識一個城市,而Kconfig和Makefile則可以讓我們瞭解一個核心目錄下面的結構。在希望研究核心的某個子系統、某個驅動或其他某個部分時,都 有必要首先仔細閱讀一下相關目錄下的Kconfig和Makefile
一、DVS (Digital Video Server)網路視頻伺服器的簡稱。 DVS(網路視頻伺服器)的原理 網路視頻伺服器主要實現類比視音頻訊號的IP 化。經數字化的視音頻訊號MPEG-4 視頻壓縮演算法和G.729/ADPCM 音頻壓縮演算法進行壓縮編碼,然後通過IP 網將低碼率的視音頻編碼資料以IP 包的形式傳送給多個遠端PC
QQLive新版官網首頁頂部有個焦點圖,巨幅圖片以漸隱漸現的效果動畫切換。這裡沒有使用Flash來實現,而是直接使用Javascript來控制。 【圖片沒有了,去http://live.qq.com上面看吧,就是那個每隔5秒切換一次的大圖】 用js實現這個效果並不困難,我的方案是每隔指定時間讓透明度+0.1,直到1。當然,IE下需要換成0~100範圍。但是這裡出現了一個問題,由於圖片比較大,在IE核心的瀏覽器裡切換的時候,圖片部分位置會出現“壞點”(很像顯示器上的壞點): 經過實驗,只要圖片
分類: LINUX1) PCM裝置的控制代碼.2) 指定同時可供回放或截獲的PCM流的方向3) 提供一些關於我們想要使用的設定選項的資訊,比如緩衝區大小,採樣率,PCM資料格式等4) 檢查硬體是否支援設定選項. 4.1) 初始化PCM變數 4.2) 分配hwparams結構 4.3) 開啟PCM裝置 4.4) 以音效卡的全部設定選項空間來初始化hwparams結構 4.5) 指定訪問類型,採樣格式,採樣率,聲道號碼,周期數目以及周期大小 a) 訪問類型
Array沒有indexOf方法,這樣在一個數組中尋找某個元素的索引時比較麻煩,為了調用方便,於是通過prototype原型擴充了Array.prototype.indexOf(),這樣用起來就比較方便了。Array.prototype.indexOf = function(item) {for (var i = 0; i < this.length; i++) {if (this[i] == item)return i;}return -1;} 用的時候直接var arr=[1,2,3
首先需要對虛繼承進行瞭解:(前一篇文章有講解) 下面的圖對一般繼承和虛繼承很好的解釋。一般的繼承為Bottom構造時先構造left和right,並且同時為left和right構造各自的Top,這樣Bottom中有兩個Top。而虛繼承Bottom構造時屏蔽了left和right對Top的構造,而是使用自己對Top的構造。下面以一個案例進行分析:為繼承關係:A中有成員a
一、何謂場?每個電視幀都是通過掃描螢幕兩次而產生的,第二個掃描的線條剛好填滿第一次掃描所留下的縫隙。每個掃描即稱為一個場。因此 25 幀/秒的電視畫面實際上為 50 場/秒 (若為 NTSC 則分別為 30 & 60 - 因為我是中國人,因此我採用 PAL