原创 FFmpeg學習2:解碼數據結構及函數總結

在上一篇文章中,對FFmpeg的視頻解碼過程做了一個總結。由於才接觸FFmpeg,還是挺陌生的,這裏就解碼過程再做一個總結。 本文的總結分爲以下兩個部分: 數據讀取,主要關注在解碼過程中所用到的FFmpeg中的結構體。 解碼過

原创 SIFT特徵詳解

1.SIFT概述 SIFT的全稱是Scale Invariant Feature Transform,尺度不變特徵變換,由加拿大教授David G.Lowe提出的。SIFT特徵對旋轉、尺度縮放、亮度變化等保持不變性,是一種非常穩定

原创 FFmpeg學習1:視頻解碼

在視頻解碼前,先了解以下幾個基本的概念: * 編解碼器(CODEC):能夠進行視頻和音頻壓縮(CO)與解壓縮(DEC),是視頻編解碼的核心部分。 * 容器/多媒體文件(Container/File):沒有了解視頻的編解碼之前,

原创 FFmpeg學習5:多線程播放視音頻

在前面的學習中,視頻和音頻的播放是分開進行的。這主要是爲了學習的方便,經過一段時間的學習,對FFmpeg的也有了一定的瞭解,本文就介紹了 如何使用多線程同時播放音頻和視頻(未實現同步),並對前面的學習的代碼進行了重構,便於後面的

原创 FFmpeg學習3:播放音頻

參考dranger tutorial,本文將介紹如何使用FFmpeg解碼音頻數據,並使用SDL將解碼後的數據輸出。 本文主要包含以下幾方面的內容: * 關於播放音頻的需要的一些基礎知識介紹 * 使用SDL2播放音頻 * 數

原创 SSE指令集學習:Compiler Intrinsic

大多數的函數是在庫中,Intrinsic Function卻內嵌在編譯器中(built in to the compiler)。 1. Intrinsic Function Intrinsic Function作爲內聯函數,直接在

原创 SSE指令集優化學習:雙線性插值

對SSE的學習總算邁出了第一步,用2天時間對雙線性插值的代碼進行了優化,現將實現的過程梳理以下,算是對這段學習的一個總結。 1. 什麼是SSE 說到SSE,首先要弄清楚的一個概念是SIMD(單指令多數據流,Single Instr

原创 FFmpeg數據結構:AVPacket解析

本文主要從以下幾個方面對AVPacket做解析: * AVPacket在FFmpeg中的作用 * 字段說明 * AVPacket中的內存管理 * AVPacket相關函數的說明 * 結合AVPacket隊列說明下AVPa

原创 Visual studio 通用開發環境配置:SDL,FFMPEG爲例

引言 每一個C++庫的使用都是從開發環境的配置開始的,其實每個庫的配置過程都是大同小異,總結下來有下面幾個步驟: 1. 下載庫文件,這裏假定是已經預先編譯完成的。 2. 配置庫文件的包含目錄(include)和庫目錄(lib)

原创 RIFF和WAVE音頻文件格式

RIFF file format RIFF全稱爲資源互換文件格式(Resources Interchange File Format),是Windows下大部分多媒體文件遵循的一種文件結構。RIFF文件所包含的數據類型由該文件的擴

原创 FFmpeg學習6:視音頻同步

在上一篇文章中,視頻和音頻是各自獨立播放的,並不同步。本文主要描述瞭如何以音頻的播放時長爲基準,將視頻同步到音頻上以實現視音頻的同步播放的。主要有以下幾個方面的內容 * 視音頻同步的簡單介紹 * DTS 和 PTS * 計

原创 FFmpeg學習4:音頻格式轉換

前段時間,在學習試用FFmpeg播放音頻的時候總是有雜音,網上的很多教程是基於之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音頻是不支持平面格式的,所以通過FFmpeg解碼出

原创 C++ 面試(1)指針

指針是C++中一類頗具特色的數據類型,允許直接操作內存地址,實現內存的動態分配。指針問題通常包括指針常量,常量指針,數組指針,指針數組,函數指針,指針傳值等。 指針和引用的區別 非空區別。在任何情況下都不能使用指向空值的引用。因

原创 C++標準庫實現WAV文件讀寫

在上一篇文章RIFF和WAVE音頻文件格式中對WAV的文件格式做了介紹,本文將使用標準C++庫實現對數據爲PCM格式的WAV文件的讀寫操作,只使用標準C++庫函數,不依賴於其他的庫。 WAV文件結構 WAV是符合RIFF標準的多媒

原创 DIB位圖(Bitmap)的讀取和保存

設備無關位圖(Device Independent Bitmap)是可以保存在磁盤的位圖文件,可以從磁盤讀取到內存或者從內存保存到磁盤上。它的文件結構是標準化的,可以在Windows/Linux/Unix等平臺上顯示相同的效果。本