Time of Update: 2018-12-03
\ffmpeg-0.6\libavutil\common.h(160) : warning C4244: “return”: 從“int64_t”轉換到“int32_t”,可能遺失資料avcodec.h(1035) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支援預設 intavcodec.h(1035) : error C2143: 語法錯誤 : 缺少“;”(在“*”的前面)\avcodec.h(1035) : error C4430: 缺少類型說明符
Time of Update: 2018-12-03
1) 在socket有自動重連機制的時候,如果在一個線程中實現socket錯誤或斷線自動重連時,注意將socket設定為非阻塞的,不然當程式退出時,線程可能阻塞在connect函數,造成程式不能及時退出; 原理上是這樣的:1.建立socket2.將該socket設定為非阻塞模式3.調用connect()4.使用select()檢查該socket描述符是否可寫(注意,是可寫)5.根據select()返回的結果判斷connect()結果; 設定非阻塞的方法如下:BOOL
Time of Update: 2018-12-03
RGB轉jpeg的方法:先對映像進行預先處理,然後DCT變換,量化,然後進行編碼,huffman編碼或其它編碼,就可以轉換成jpg了。下面主要講解使用opencv儲存jpg映像,或使用IJG庫儲存jpg映像,使用opencv儲存jpg映像的函數如下: CVAPI(int) cvSaveImage( const char* filename, const CvArr* image, const int* params CV_DEFAULT(0
Time of Update: 2018-12-03
socket tcp串連常規流程:伺服器端:socket-->bind-->listen-->accept->recv(send)-->closesocket用戶端:sokcet->connect->send(recv)-->closesocket可以參考:http://atu82.bokee.com/4667655.htmlUdp socket
Time of Update: 2018-12-03
Façade模式:簡單來說,就是在我們實現一個軟體時,可能定義了很多類,實現了很多功能,但是對於使用者來說,很多sdk,他都不需要,它只需要一個init函數,就能使用sdk,比如,某款工業相機,提供了複雜的功能去控制和使用相機,但是客戶還是希望,你只要給我一個init函數,然後我就能讀你相機傳輸過來的映像就可以了,這就是Facade設計模式,也像我們數位相機的快門一樣,數位相機有很多功能,但是我們只要按快門就能拍照,這個快門就是提供的一個Facade模式。 Facade面板模式,是一種結構型
Time of Update: 2018-12-03
問題如下: 一個線程用於顯示映像,在這個線程中調用了回呼函數,該回呼函數使用了MFC的Picture顯示映像,在顯示映像時使用invalidate 重新整理視窗,而該回呼函數裡面又用了狀態列,用於顯示映像的資訊,即調用了狀態列的SetText函數,這時發生死結了,調試發現死結在重新整理狀態列的SetText函數,該函數不能執行。
Time of Update: 2018-12-03
常規情況下:伺服器的socket描述府一定需要綁定 把特定的地址和連接埠號碼綁定到伺服器socket描述符上,不過用戶端的socket一般不需要綁定,因為一般c/s通訊過程都是伺服器端偵聽 用戶端串連,所以用戶端串連的時候必須知道伺服器的地址,串連上 ,也就可以通訊,所以沒有必要綁定用戶端的地址。但是用戶端串連的地址必須是伺服器的地址和連接埠。至於伺服器accept 以後 返回的是新的描述符 ,進行send,recv
Time of Update: 2018-12-03
Factory模式的2個主要功能:1)定義建立對象的介面,封裝了對象的建立;2)使得具體化類的工作延遲到子類中; 舉例如下:vs2008編譯通過:#pragma onceclass Product{public: Product(void); virtual ~Product(void)=0;};class ConcreateProduct:public
Time of Update: 2018-12-03
Decorator模式:在物件導向的設計和開發過程中,可能會經常遇到以下的情況;我們需要為一個已經定義好的類添加新的職責,通過情況我們會給定義一個新類繼承自訂好的類,通過繼承的方式解決這樣的情況會帶來系統的複雜性,因為繼承的深度會變得很深。而Decorator提供了一種給類增加職責的方法,不是通過繼承實現,而是通過組合。Decorator裝飾模式是一種結構型模式,它主要是解決:”過度地使用了繼承來擴充項物件的功能”,由於繼承為類型引入的靜態特質,使得這種擴充方式缺乏靈活性;並且隨著子類的增多(
Time of Update: 2018-12-03
observer 模式要解決的問題是:建立一(Subject)對多(Observer)的依賴關係,並且當Subject變化時,依賴這個subject的多個Observer也能夠同步改變,比如我們在使用execel畫圖,做統計分析的時候,我們可以提供 以柱狀圖或 線條圖,或百分比統計圖等方法,這些圖都依賴同一組資料,當資料變化時,希望這些圖型也跟著變化,這就是observer設計模式所要討論的問題。
Time of Update: 2018-12-03
上層和驅動通訊用DeviceIoControl函數,這是一個Win32 API,在SDK中定義。這個函數都會產生一個IRP_MJ_DEVICE_CONTROL包,如果驅動中註冊過相應的常式,那麼這個包就會引發該常式的工作。如果是驅動和驅動間的通訊,那麼用IoBuildDeviceControlRequest函數,該函數在DDK中定義,會產生一個IRP_INTERNAL_DEVICE_CONTROL包,並引發相應的常式。這兩個IRP包中都有一個非常重要的結構叫IOCTL(io control
Time of Update: 2018-12-03
1)ddk 和wdk ddk是基於wdm驅動模型的,而wdk是基於WDF驅動模型的,wdm驅動模型和wdf驅動模型的最大的區別是:1)wdf驅動架構對WDM進行了一次封裝,WDF架構就好像C++中的基類一樣,且這個基類中的model,IO model ,pnp和電源管理模型;且提供了一些與作業系統相關的處理函數,這些函數好像C++中的虛函數一樣,WDF驅動中能夠對這些函數進行override;特別是Pnp管理和電源管理!基本上都由WDF架構做了,而WDF的功能驅動幾乎不要對它進行特殊的處理;
Time of Update: 2018-12-03
設定使用者緩衝區:pcap_setuserbuffer源碼如下: intpcap_setuserbuffer(pcap_t *p, int size) { unsigned char *new_buff; if (!p->adapter) { sprintf(p->errbuf,"Impossible to set user buffer while reading from a file or on a TurboCap port");
Time of Update: 2018-12-03
設定讀逾時: PacketSetReadTimeout(p->adapter, p->md.timeout);BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout){ BOOLEAN Result; TRACE_ENTER("PacketSetReadTimeout"); AdapterObject->ReadTimeOut =
Time of Update: 2018-12-03
1)ES流(Elementary Stream): 也叫基本碼流,包含視頻、音頻或資料的連續碼流.2)PES流(Packet Elementary Stream): 也叫打包的基本碼流, 是將基本的碼流ES流根據需要分成長度不等的資料包, 並加上包頭就形成了打包的基本碼流PES流.3)TS流(Transport Stream): 也叫傳輸串流, 是由固定長度為188位元組的包組成, 含有獨立時基的一個或多個program, 一個program又可以包含多個視頻、音頻、和文字資訊的ES流;
Time of Update: 2018-12-03
Factory模式的兩個最重要的功能:1)定義建立對象的介面,封裝了對象的建立2)使得具體化類的工作延遲到了子類中。為了提高內聚(Cohesion)和松耦合(Coupling),我們經常會抽象出一些類的公用介面以形成抽象基類或者介面。這樣我們可以通過聲明一個指向基類的指標來指向實際的子類實現,達到了多態的目的。這裡很容易出現的一個問題n多的子類繼承自抽象基類,我們不得不在每次要用到子類的地方就編寫諸如new
Time of Update: 2018-12-03
在vs2008 下,MFC程式的picture控制項上ddraw顯示yuv映像,目前因為ddraw預設是顯示映像原始大小的,即picture控制項中只能顯示一部分映像,還有一部分顯示不出來,為瞭解決這個問題,對yuv映像進行縮放,當滑鼠雙擊picture控制項時,彈出另外一個對話方塊,在這個對話方塊上進行映像縮放; 1)根據映像的解析度及映像的size,彈出的對話方塊必須加入捲軸,不然有映像看不到;2)為了不影響縮放的效能,映像不能縮放
Time of Update: 2018-12-03
(一)針對介面編程,還不針對實現編程; 類繼承是一個通過複用父類功能而擴充應用功能的基本機制,通過抽象類別繼承,可以實現多態,當繼承被正確使用時,所有從抽象類別匯出的類將共用該抽象類別的介面,子類僅添加或重定義操作,而沒有隱藏父類的操作,所有的子類都能響應抽象類別介面中的請求,從而子類的類型都是抽象類別的子類型。 只根據抽象類別中定義的介面來操縱對象有以下兩個好處: 1)客戶無須知道他們使用對象的特定類型,只需對象有客戶期望的介面;
Time of Update: 2018-12-03
應用程式如何和核心驅動互動Event;/*! \brief Allocates the read event associated with the capture instance, passes it down to the kernel driver and stores it in an _ADAPTER structure. \param AdapterObject Handle to the adapter. \return If the function
Time of Update: 2018-12-03
在我們做軟體架構的時候,設計要支援變化,這一點相當重要,往往我們在設計軟體的時候,沒有充分考慮這一點,造成軟體做好後,當需求稍微變化的時候,軟體就是修改,甚至要推倒重來,這樣的軟體的穩定性和可擴充性都是比較差的;一個不考慮系統變化的設計在將來就有可能需要重新設計,這些變化有可能是類的重新定義和實現,重新設計的結果是很悲劇的,往往會錯過商機,最終項目會以失敗而告終。舉例:上位機和下位機通訊時,需要考慮:1)在通訊協定上,充分考慮可能的變化,設計的結構體一定要有保留位元組;2)在設計協議時,一定要有