顯示具有 portal 標籤的文章。 顯示所有文章
顯示具有 portal 標籤的文章。 顯示所有文章

2020年10月23日 星期五

[OpenCL] Portal

2020年2月15日 星期六

[Multimedia] Portal


  • Codec
    • AOM
      • VP9/AV1
    • MPEG
      • AVC/H.264
      • HEVC/H.265
      • VVC/H.266
    • China
      • AVS
  • Muxer
    • mp4
    • mpeg2-ts
  • Tool
    • MediaInfo
      • Feature: 提供讀取 media 的 metadata, 有 CLI 與 GUI 介面
      • Install
        • (GUI)
          sudo port install MediaInfo-gui
        • (CLI)
          sudo port install mediainfo
    • FFmpeg
      • probe/codec plugin/player

2018年1月6日 星期六

[Toolchain] Portal


  • build
    • configure scripts
      • configure --prefix -android
      • configure --prefix -gnu-eabi
  • Compiler
    • naming convention
      • arch-vendor(or CPU)-kernel-system
        • e.g. arm-cortex_a8-linux-gnueabi
    • arch
      • arm, mips, x86_64, ppc(power pc), ...etc.
    • kernel
      • linux, bare-metal, ...etc.
    • system
      • glibc, eglibc, uclibc
      • oabi, eabi
      • gnueabi (glibc+eabi)
  • Binutilities
  • Reference

2017年8月16日 星期三

[Security] DRM - Digital Right Management System



  • 契機
    • 最近在看 ATSC3.0 的 standard, 其中一部分 A/360 Security 問到關於 content protection 的部分, 整個被問倒, 只好好好筆記一下如何做到 content protection. 先來看看 ATSC3.0 定義的 content protection 在哪一層. 有此圖可知, 這是 based on ISO-BMFF 的 format
  • Content Protection
    • standards
      • W3C Encrpyted Media Extension (EME)
        • What: a Javascript API to enable 
        • Who:
          • W3C defined
          • a web application exchanges decryption keys
      • MPEG Common Encrypted (CENC)
        • What: ISO-BMFF format (e.g. mp4 container) 若要使用 DRM, 則需要 CENC, 可想成此規範定義了 ISO-BMFF 支援 DRM時, 需要在那些 box 定義 DRM 相關的 parameters, namely, Protection System Specific Header Box (pssh)
        • Who: 
          • scrambling system
          • ISO-BMFF file
        • Where:
        • When:
        • Why: for DRM system
        • How:
          • only encrypts media samples, and keep metadata un-encrypted
    • DRM comparison

2017年8月2日 星期三

[Notes] Linux Devices Drivers 3Ed.


  • Books: Linux Device Drivers
  • Ch1. Introduction
    • 說明驅動程式的角色
    • 設計原則: 提供機制 (mechanism)-要提供什麼能力, 而非法則 (policy)-如何使用這些能力
    • Kernel 概論
      • Module
      • Device分類: character device, block device, network interface
  • Ch2. Module
    • Kernel preparation
    • 展示 Hello World Module
      • build - 
        • include kernel headers (/usr/src/linux-headers)
        • make file - obj-m
      • sample module file
      • #include 
        #include 
        
        MODULE_DESCRIPTION("Hello_world");
        MODULE_LICENSE("GPL");
        
        static int hello_init(void)
        {
         printk(KERN_INFO "Hello world !\n");
         return 0;
        }
        
        static void hello_exit(void)
        {
         printk(KERN_INFO "Bye !\n");
        }
        
        module_init(hello_init);
        module_exit(hello_exit);
        
      • sample Makefile
      • PWD := $(shell pwd) 
        KVERSION := $(shell uname -r)
        KERNEL_DIR = /usr/src/linux-headers-$(KVERSION)/
        
        MODULE_NAME = hello
        obj-m := $(MODULE_NAME).o
        
        all:
         make -C $(KERNEL_DIR) M=$(PWD) modules
        clean:
         make -C $(KERNEL_DIR) M=$(PWD) clean
      • 測試
      • insmod hello.ko
        dmseg
        
      • 程式架構
        • header: 重要 headers: linux/init.h, linux/module.h 含有後面要用到的 marcos
        • license
        • module_init()
        • module_exit
      • Kernel module v.s. user space application
      • insmod/modprobe/rmmod/lsmod
      • module lifecycle - facility
      • module parameter
        • module_param(parameterName, type, permission)

2017年7月15日 星期六

[Kernel] Portal


[Git] Portal


  • What is Git?
    • 分散式版本控制軟體
    • 利用 40 bytes的 hash key當作每次 commit ID
    • stages
    • 每次皆儲存完整內容, not diff
  • 名詞
    • hash
    • commit
    • repository (remote, local)
    • branch
    • HEAD
      • pointer to latest commit of current branch
    • Q: reference, rebase, cherry-pick?
    • parent -> 延伸至哪個 version
  • 行為
    • clone
    • checkout
    • commit
      • 修改 commit: 
        git commit --amend
    • push
    • pull
      • 從 remote 抓取各版 merge成新的 commit
    • fetch
      • 與 pull的差異是, 僅抓取 remote的 log, 不 merge
    • merge
      • fast forward (branch 合回 master, 且 master 未更改)
      • non-fast forward, merge into a new commit
      • rebase, branch的修改會串到 master 後面
        • Merge (From 連猴子都懂的 Git 入門指南)
          修改內容的歷史記錄會維持原狀,但是合併後的歷史紀錄會變得更複雜。
        • Rebase
          修改內容的歷史記錄會接在要合併的分支後面,合併後的歷史記錄會比較清楚簡單,但是,會比使用 merge 更容易發生衝突。
          • e.g. git checkout br3
          • git rebase master
          • 在 master 後面再串上 br3
    • stash
    • blame
      • 可以 line-by-line 秀出各 commiter
  • 教學
  • 設定
    • .gitignore
    • filemode
      • 常看到 git diff 只差在 old mode 100644 與 new mode 100755
      • 可以利用 git config core.filemode false 來隱藏這些錯誤
    • workspace config, user config, global config
  • 可搭配 Google 的 Tool repo 進階 checkout 多個 repository 對應的特定版號, 以 manifest做管理 (xml format), 或是 snapshot.xml 做管理

2012年9月19日 星期三

[Software] 開發工具

其實開發輔助工具超級多的, 像是

  1. build chain 就有 configure工具、make工具
  2. IDE (Integrated Development environment) 就更不用說了, 萬萬種, e.g. Code Blocks, Visual Studio, XCode, etc.
  3. 版本控制: 有名的有 CVS, SVN, Git
  4. Bug Tracker: BugZilla, Mantis
  5. CI: jenkins
  6. Code review: gerrit
  7. Code formatter: AStyle (setting)