原创 C和C++安全編碼筆記:文件I/O

C和C++程序通常會對文件進行讀寫,並將此作爲它們正常操作的一部分。不計其數的漏洞正是由這些程序與文件系統(其操作由底層操作系統定義)交互方式的不規則性而產生的。這些漏洞最常由文件的識別問題、特權管理不善,以及競爭條件導致。 8.1 文件

原创 C和C++安全編碼筆記:併發

併發是一種系統屬性,它是指系統中幾個計算同時執行,並可能彼此交互。一個併發程序通常使用順序線程和(或)進程的一些組合來執行計算,其中每個線程和進程執行可以在邏輯上並行執行的計算。這些進程和(或)線程可以在單處理器系統上使用分時搶佔式的方式

原创 C++中獲取日期函數gmtime和localtime區別

函數gmtime和localtime的聲明如下: struct tm * gmtime (const time_t * timer); struct tm * localtime (const time_t * timer); 它們均接

原创 SSL/TLS單向認證和雙向認證介紹

爲了便於理解SSL/TLS的單向認證和雙向認證執行流程,這裏先介紹一些術語。 1. 散列函數(Hash function):又稱散列算法、哈希函數,是一種從任何一種數據中創建小的數字”指紋”的方法。散列函數把消息或數據壓縮成摘要,使得數據

原创 通過Windows DShow獲取設備名、支持的編解碼及視頻size列表實現

之前在https://blog.csdn.net/fengbingchun/article/details/102641967中介紹過通過DShow獲取Camera視頻的實現,即調用VideoCapture類。在OpenCV的VideoC

原创 Doxygen使用介紹

Doxygen的主頁爲http://doxygen.nl/,它的license爲GPL,最新發布版本爲1.8.17,源代碼存放在https://github.com/doxygen/doxygen,它支持的語言包括C、C++、Object

原创 Linux下通過v4l2獲取視頻設備名、支持的編解碼及視頻size列表實現

早些時候給出了在Windows下通過dshow獲取視頻設備信息的實現,包括獲取視頻設備名、獲取每種視頻設備支持的編解碼格式列表、每種編解碼格式支持的video size列表,見:https://blog.csdn.net/fengbing

原创 FFmpeg在Windows上設置dshow mjpeg編碼+libyuv解碼顯示測試代碼

之前在https://blog.csdn.net/fengbingchun/article/details/103444891中介紹過在Windows上通過ffmpeg dshow設置爲mjpeg編解碼方式進行實時顯示的測試代碼。這裏測試

原创 JWT(JSON Web Token)簡介及實現

JWT(JSON Web Token):是一個開放標準(RFC 7519),它定義了一種緊湊且自包含的方式,用於在各方之間作爲Json對象安全地傳輸信息。由於此信息是經過數字簽名的,因此可以被驗證和信任。可以使用HMAC SHA256或R

原创 Windows上VS2017單步調試FFmpeg源碼的方法

之前在https://blog.csdn.net/fengbingchun/article/details/90114411 介紹過如何在Windows7/10上通過MinGW方式編譯FFmpeg 4.1.3源碼生成庫的步驟,那時只能生成

原创 C++中插件使用舉例

插件並不是在構建時鏈接的,而是在運行時發現並加載的。因此,用戶可以利用你定義好的插件API來編寫自己的插件。這樣他們就能以指定方式擴展API的功能。插件庫是一個動態庫,它可以獨立於核心API編譯,在運行時根據需要顯示加載。不過插件也可以使

原创 通過libjpeg-turbo實現對jpeg圖像的解碼

之前在https://blog.csdn.net/fengbingchun/article/details/89715416中介紹過通過libjpeg-turbo接口實現將數據編碼或壓縮成jpeg數據並通過FILE的fwrite接口將其直

原创 開源庫BearSSL介紹及使用

BearSSL是用C語言實現的SSL/TLS協議,它的源碼可直接通過git clone https://www.bearssl.org/git/BearSSL 下載,它的license是MIT,最新版本爲0.6。 BearSSL的主要特性

原创 FFmpeg在Windows上通過dshow編解碼方式設置爲mjpeg並實時顯示測試代碼

Windows上默認的內置攝像頭一般支持兩種編解碼格式:rawvideo和mjpeg。在調用FFmpeg接口時默認的採用rawvideo。這裏通過DirectShow實現爲mjpeg進行編解碼。 通過命令行調用FFmpeg可執行文件: (

原创 Linux下獲取usb視頻設備vendor id和product id的8種方法

在使用usb攝像頭獲取視頻時,有時需要獲取此攝像頭供應商ID(vendor id, vid)和產品ID(product id, pid),這裏在Linux下提供獲取vid和pid的8種方法: 1. 通過v4l2中結構體v4l2_capab