TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2009年11月9日 星期一

不 try 一下怎麼會知道呢

最近用自己定出的編碼器介面寫外掛時, 才發現原本定的介面怪怪的。
首先是 hook 的呼叫順序。由於 libav* 是先開完檔再呼叫寫入 header 的函式,因此我也讓 openResource 在 writeHeader 之前先呼叫。但是其他的編碼器並不一定是這個順序,其實有的根本就沒有分 setupEncoder 和 setupMuxer 的步驟。反正我也沒有檢查每個 hook 要做什麼事,也不可能檢查 ... 所以這倒是沒什麼關係。
第二個問題是我在抽象類別上有定義 buffer 機制,原本是希望可以減輕具象類別的負擔,沒想到現在用起來覺得有點累贅,多了不必要的介面操作。這部分需要在 0.3 修正。
最嚴重的問題是,編碼器似乎不太需要動態載入外掛,應該說不需要和操作它的圖形介面分開發佈。原本的用意是希望降低耦合度,並且讓其他的外掛也有機會使用它,但是操作用的外掛不可能不知道它要呼叫哪個編碼器,而且分開發佈導致無法使用編碼器特殊的設定,像是壓縮率等。目前看來唯一的好處是其他人也可以産生這個實體 ... so what? 難道 mp3 設定會呼叫 ogg vorbis 的編碼器嗎?總之這個外掛的介面真的有點多餘。

沒有留言:

張貼留言