2017年1月29日 星期日

JPEG 編碼解碼流程

網路串流影像的主流格式是 H.264, H.265 以及 VP9,不過針對特殊應用,仍有使用 JPEG的地方。本篇參考WIKI 說明,整理 JPEG 編解碼流程,以及 JFIF 格式封裝方法,方便自己遇到問題時可以當作參考。

JPEG 編碼流程

  1. 將 RGB 轉換為 YUV。
  2. 將 YUV444 轉換為 YUV422 或 YUV420。
  3. 將 Y 區域劃分成多個 8x8 子區域,每個區域使用 DCT 轉換到頻率空間。轉換之後,每個子區域的左上角會使用差分編碼,其他欄位會使用行程編碼
  4. 量化,把人眼不容易辨別的差異移除。其實現方式就是把很多更高頻率的成份捨位成為接近0,且剩下很多會變成小的正或負數。這是整個壓縮過程中的主要失真運算。
  5. entropy coding:將影像成份以Z字型(zigzag)排列,把相似頻率群組在一起(矩陣中往左上方向是越低頻率之係數,往右下較方向是較高頻率之係數),插入長度編碼的零,且接著對剩下的使用霍夫曼編碼

2017年1月28日 星期六

Git 常用命令摘要

此處參考 O'Reilly 書籍"版本控制使用Git",整理一些常用的 Git 命令,方便自己查找。

1. 取得 Repository 的資料
$ git clone https://github.com/alb423/wsdiscovery.git

2. 設定基本資訊
$ git config --global user.name "Albert Liao"
$ git config --global user.email "alb423@gmail.com"

3. 檢視目前狀態
$ git log
$ git status
$ git diff
$ git diff -S"TheSearchString"
$ git diff --cached 等同於 $ git diff --staged
$ git ls-files --stage

4. 放棄修改
移除一個已經被加入,但並未送交的檔案
$ git checkout -- . 
移除一個已經被送交的檔案
$ git rm  commited_file

5. 上傳資料
$ git add  aaa.c
$ git commit
$ git push

6. 修改上次 commit 的說明
$ git commit --amend

7. 切換至其他 branch
$ git branch
   bug/pr-1
   bug/pr-2
 *dev
   master
$ git checkout bug/pr-1

8. 合併,將 alternate 的資料合併至 master
$ git checkout master
$ git status
$ git merge alternate
$ git log --graph --pretty=oneline --abbrev-commit 
$ git diff --ours
$ git diff --theirs
$ git ls-files -u

9. Undo a git merge that hasn't been pushed yet
$ git reset --merge ORIG_HEAD
$ git reset --hard ORIG_HEAD
10. 上傳資料之前,需先更新remote資料,避免造成衝突
$ git pull --rebase
參考 http://gitready.com/advanced/2009/02/11/pull-with-rebase.html
11. 在Mac、Linux 终端显示 Git 当前所在分支


TBD




2017年1月27日 星期五

[Embedded] 如何檢視 Thread 狀態

以下參考 http://ask.xmodulo.com/view-threads-process-linux.html,整理幾個在 linux 系統下,檢視 Thread 狀態的方法。
方法一:ps
舉例: $ ps -T -p $(pidof NetworkManager)
方法二:top
舉例:$ top -H -p $(pidof NetworkManager)
方法三:htop
可參考以下幾篇部落格的介紹

履歷表寫作參考資料

此處收集一些履歷表寫作,以及轉職的參考資料。

將 H.265 的資料封裝成 MP4 檔案

此篇紀錄將 H.265 資料儲存成 mp4 檔案的過程。