Tuesday, September 5, 2006

(XBMC) Vobsub字幕的縮放功能

以前的XBMC有個很好用的Vobsub縮放功能,特別是對我這種使用傳統4x3螢幕電視的人來說。我還會搭配XBMC的「螢幕校準」來調整字幕位置,如此在觀看一些寬螢幕的電影時,可以讓字幕以最適當的大小,出現在最適當的位置。

但從今年五月中旬起,XBMC忽然把Vobsub的縮放功能拿掉了。由於當時XBMC正在進行大改版,因此剛開始時我並不以為意,反正我看影片時仍是以用的最順手的0503版本為主,新版本只是用來定期玩玩MC360這個Skin而已。我想某些一時消失的功能,總是會在日後慢慢恢復的。

但就在幾天前,參與gamepc兄在TvGame360的討論,他提到他用修改來源碼的方式,來放大Vobsub字幕的大小,並附上他在XBMC官網討論區的討論連結。我是有好一陣子沒上到那裡去看老外的討論了,這一看才知道,原來開發小組對調整Vobsub大小的功能,是抱著「完全沒有必要」的態度,從他們發言的語氣來看,他們是不會恢復這項功能了。

再說到gamepc兄的改法,是把想要放大的比例直接設在來源碼裡面,在compile之後,所使用的XBMC就固定會把所有Vobsub字幕放大到所設的比例。這個方式使用起來並不方便,因使用者無法隨時調整大小;最好的解決之道,仍是恢復XBMC過去那種以GUI介面來設定大小的方式。

既然gamepc兄已經起了個頭,我這兩天也就朝這個方向加以改進了一下,主要是找出GUI介面中負責這項功能的檔案,並找出在修改前的程式碼,把這個功能給加了回去。重新compile之後,目前這個功能又恢復舊觀,且使用正常。

我動到了兩個檔案,第一是「xbmc/cores/VideoRenderers/XBoxRenderer.cpp」,把第233行的「float EnlargeFactor = (float)g_settings.m_ResInfo[res].iWidth / 720.0f; //g_guiSettings.GetInt("Subtitles.EnlargePercentage") / 100.0f;」改成「float EnlargeFactor = (float)g_guiSettings.GetInt("Subtitles.EnlargePercentage") / 100.0f;」,其實這就是原先的設定,XBMC小組現在是把Vobsub字幕的大小調整交給螢幕解析度去判定,也就是前面的那一段,而原先的設定XBMC開發小組也並沒有刪掉,只是以雙斜線將其變成註記的非執行列。

第二個就是恢復GUI的控制,修改的檔是:「xbmc/GUISettings.ccp」,在約第379行加入:「AddInt(8, "Subtitles.EnlargePercentage", 492, 100, 30, 10, 200, SPIN_CONTROL_INT_PLUS, MASK_PERCENT);」修改後存檔,重新compile,就大功告成了。

圖我就不擷了,反正就是和以前一樣,在「系統設定-->我的影片-->字幕設定」裡,又出現了舊版才有的「Vobsubs字幕比例」這個選項而已。

0 comments: