原创 聲壓、音量﹑功率﹑分貝﹑波長、以及一些常人蔘數.

聲壓與分貝關係 聲壓擴大一倍,分貝值增加6dB 音量與分貝關係 音量擴大一倍,分貝值增加20dB 功率與分貝關係 功率擴大一倍,分貝值增加3dB 常人蔘數 正常人口腔一般發出的聲壓達到100dB左右 在安靜環境中,人

原创 有趣的算法-尾遞歸

尾遞歸 如果一個函數中所有遞歸形式的調用都出現在函數的末尾,我們稱這個遞歸函數式尾遞歸的. 當遞歸調用是整個函數中最後執行的語句且它的返回值不屬於表達式的一部分時,這個遞歸調用就是尾遞歸. 尾遞歸的特點 在迴歸過

原创 C語言-簡單創建線程之pthread.h

背景 在Java調用Native函數時,爲了不阻塞主線程,在native代碼中另起線程處理耗時操作. 必要的庫 #include <pthread.h> 關鍵的函數 int pthread_create(pthread_t

原创 Jni Byte數組傳遞異常

異常 背景 : 爲了做個YUV格式的轉換 報錯提醒: JNI : pin count on array [對象地址] ([B) is now [數字] 當達到一定的程度,程序就Crash掉了 報錯如下 11-04 10:55:

原创 關於Java Tcp Socket InputStream read()得不到-1

問題 服務端Socket,accept()到一個socket對象後,取出其InputStream sis對象,sis.read()一直取不到-1 解決 在客戶端Socket,當OutputStream sos = socket.g

原创 彙編學習--編譯彙編代碼

環境搭建: 系統 Ubuntu18.04 CPU i5 x86架構 GCC 7.4.0 第一個彙編程序 代碼: #first.s .code64 .section .bss .comm output,100 .section .

原创 多媒體處理工具方法之尋找StartCode

尋找StartCode 在打包,處理數據的時候,很多時候需要尋找startcode,來尋找Nal單元.以下代碼只支持[0x00 0x00 0x00 0x01]的起始碼.還有地方有待優化,以後再補充. public static L

原创 Android硬編解碼並播放

Android 採集過程注意 Camera.addCallbackBuffer(byte[] data)其中data的大小要緊密與採集數據的格式相關. 如採集到的數據格式yuv422i,那麼data的大小應該爲width * h

原创 如何暫停其他應用正在播放狀態

通話應用 場景:當系統播放錄音時,你的應用需要對音頻或視頻模塊進行調用,如何讓非本應用以外的其他應用停止播放狀態. AudioManager 1. 獲取AudioManager實例am. 2. 設置當前模式爲MODE

原创 旋轉矩陣算法性能問題

背景 最近需要對Android攝像頭採集出來的的NV21數據,做個順時針90度的旋轉,流暢352x288,與標清640x480算法都還能滿足,但是高清1280x720的時候,算法A明顯落後算法B.現在沒時間研究,只能記錄下來,希望

原创 H264打包RTP包流程準備

Android平臺 通過MediaCodec編碼後 1 拿出 H264 Frame. 一般幀的結構如下圖 其中00 00 00 01或00 00 01是每個NAL Unit的起始碼,以上圖片是從編碼器裏拿出來的一個完整的幀,這

原创 多線程之Thread.interrupt()方法使用

不可中斷的阻塞方法 輸入和輸出流類會阻塞等待I/O完成.但是它們不會拋出InterruptedException, 而且在被中斷的情況下也不會提前返回. 對於套接字 I/O.如果一個線程關閉套接字,則該套接字上的阻塞I/O操作將

原创 Vim 實現複製多行

環境如圖 需求 需要剪切16-22行的代碼 操作 按Esc鍵,進入命令行模式 輸入:16,22 d(即對16至22行進行剪切d操作) 然後移動光標到需要黏貼的行,在命令行模式下按p鍵進行黏貼 點贊 收藏

原创 Android 使用原生打印Native print

Android 使用原生打印Native print 在相關模塊Android.mk文件中加入LOCAL_LDLIBS += -llog 強調一定要記住是LOCAL_LDLIBS +=,這個坑打錯了,坑了一箇中午 在C文件中

原创 YUV格式學習

YUV格式有兩大類 planar 對於planar的YUV格式,先存儲所有像素點的Y,緊接着存儲所有像素點的U,最後是所有像素點的V 例如 I420格式: YYYYYYYY UU VV packed