原创 Ubuntu修改提示符

修改提示符的顏色和內容: 1、打開.bashrc文件         vi    ~/.bashrc 2、找到    if [ "$color_prompt" = yes ];then         在這之前加上color_pr

原创 Udp 併發問題分析與總結

一、tcp併發與udp併發的區別        無論是epoll還是select,在觀察有無數據就緒時,都是針對多個文件描述符。如果只有一個文件描述符,那麼進程只要觀察那一個文件描述符即可。在網絡編程中,一個Socket對應一個文件描

原创 getopt函數

getopt函數         用來解析命令行選項參數   #include <unistd.h> int getopt(int argc, char *const argv[], const char *optstring); e

原创 基於單幅圖像的快速去霧算法實現

  基於圖像復原的去霧方法中,最有代表性的是暗通道去霧算法,但是暗通道去霧算法的處理時間比較長,不能達到實時處理。在閱讀了大量文獻及其參考文獻,找到能夠實時處理的去霧算法,是清華大學寫的文章:基於單幅圖像的快速去霧算法,作者:劉倩,陳茂華

原创 圖像去霧技術綜述

  研究圖像去霧技術有一段時間,閱讀很多文獻以及實現了很多算法。因此將個人對圖像去霧技術的理解寫成這篇文章,避免自己忘記,以及跟廣大網友交流學習。 1、概述   圖像去霧的研究算法有很多,但是主要分爲兩類:基於圖像增強的去霧算法和基於圖像

原创 linux內核數據結構之等待隊列

Linux內核的等待隊列是以雙循環鏈表爲基礎數據結構,與進程調度機制緊密結合,能夠用於實現核心的異步事件通知機制。 在這個鏈表中,有兩種數據結構:等待隊列頭(wait_queue_head_t)和等待隊列項(wait_queue_

原创 ffplay源碼剖析(3.2.4 + sdl2)(2):初始化與解複用

接上一篇繼續閱讀ffplay源碼,前一篇從總體上了解了ffplay的整個框架:解複用,解碼,顯示播放。這一篇就講第一個解複用。 int main(int argc, char **argv) { int flags; V

原创 glob和snprintf

glob函數         用於linux文件系統中路徑名稱的模式匹配。 #include<glob.h>int glob(const char *pattern, int flages, int (*errfunc)(const

原创 ffplay源碼剖析(3.2.4 + sdl2)(3):解碼

上一篇講到ffplay的初始化和解複用,在解複用過程中創建了三個解碼線程:音頻、視頻和字幕解碼線程。同時將解複用的數據包分別添加到了音頻包隊列audioq、視頻包隊列videoq和字幕包隊列subtitleq中。今天要講的是從這三個包隊列

原创 linux內核鏈表實現

linux內核鏈表實現   內核實現的是雙向循環鏈表,提供了鏈表操作的基本功能。 (1)初始化鏈表頭結點 #define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIS

原创 第六章:高級字符驅動程序操作

1、ioctl ​除了讀取和寫入設備之外,大部分驅動程序還需要另外一種能力,即通過設備驅動程序執行各種類型的硬件控制。 在用戶空間,ioctl系統調用有如下原型: int ioctl(int fd, unsigned long

原创 第五章:併發與競態

兩個或多個進程讀寫某些共享數據,而最後的結果取決於進程運行的精確時序,就成爲競爭條件(race condition)。 竟態通常作爲對資源的共享訪問結果而產生的。當兩個或多個進程需要訪問相同的數據結構(或硬件資源)時,混合的可能性就永遠

原创 FFmpeg中AVPacket和AVFrame關係

        最近在研究ffplay3.2.4的源碼,ffplay中有兩個隊列一個PacketQueue, 一個FrameQueue,對這兩個隊列之間的關係不是很清楚。於是對這兩個結構仔細研究一下。 1、數據結構含義 AVPacket

原创 ecryptfs加密

首先安裝 ecryptfs-utils。(sudo apt-get install ecryptfs-utils) 載入ecryptfs模塊。(sudo modprobe ecryptfs) 掛載ecryptfs文件系統 sudo

原创 dlopen 介紹

dlopen 介紹 #include <dlfcn.h>void *dlopen(const char *filename, int flag);char *dlerror(void);void *dlsym(void *handl