顯示具有 TV related 標籤的文章。 顯示所有文章
顯示具有 TV related 標籤的文章。 顯示所有文章

星期五, 2月 15, 2008

AlphaBlend related info

http://en.wikipedia.org/wiki/Alpha_compositing

Alpha-Blending 技术简介 <原文出處:http://dev.gameres.com/Program/Visual/2D/AlphaBlending.htm>


  现在的游戏,不管是 2D 还是 3D 的,为了追求透明光影效果,通常都会使用到 Alpha-Blending 技术。下面,我们将谈论什么是 Alpha-Blending 技术并简单介绍 Alpha-Blending 技术的具体算法。

  所谓 Alpha-Blending,其实就是按照“Alpha”混合向量的值来混合源像素和目标像素。为了便于理解,我们就从两个像素间的 Alpha-Blending 过程谈起吧。

  第一步,先把源像素和目标像素的 RGB 三个颜色分量分离,然后把源像素的三个颜色分量分别乘上 Alpha 的值,并把目标像素的三个颜色分量分别乘上 Alpha 的反值,接下来把结果按对应颜色分量相加,再对最后求得的每个分量结果除以 Alpha 的最大值(通常这一步都是用移位来完成,这亦是 Alpha 的最大值为何总是二的幂的原因),最后把三个颜色分量重新合成为一个像素输出。

  在这个过程中,为了分离像素中的 RGB 三个颜色分量,我们一般会使用掩膜的方法。至于具体的三个掩膜值:RMask、GMask 和 BMask,可以从 DirectDraw 中的 DDPixelFormat 返回得到(当然,你也可以根据自己的需要做各种灵活处理)。

  在下面给出的说明性例程中,我们假设 RMask、GMask 和 BMask 已经存放的是 RGB 三个颜色分量的位掩膜值,Alpha 的最大值为 256,而 source 和 dest 是指向源像素和目标像素的指针。

int ialpha = 256 - *alpha; // Alpha 的反值

*dest = (RMask & (((*source & RMask) * *alpha + (*dest & RMask) * ialpha) >>8)) | (GMask & (((*source & GMask) * *alpha + (*dest & GMask) * ialpha) >>8)) | (BMask & (((*source & BMask) * *alpha + (*dest & BMask) * ialpha) >>8));

  终于明白什么是 Alpha-Blending 了吧?很简单不是,快去编程一试吧。如果大家感兴趣,下次再为大家介绍几种别的混合方法。请期待『几种常用的像素混合方法』。
 

Teletext

Teletext <原文出處http://blog.sina.com.tw/roberthsiung/article.php?pbgid=39990&entryid=543510>

1970年代英國BBC新聞部開始在電視系統上提供一種文字廣播的服務,他是利用vertical blanking interva攜帶數位編碼的文字用以傳播新聞,體育或是其他生活資訊,從此將電視的用途推向更寬廣的領域.

1974年BBC新聞部開始撥送文字廣播時最多只能傳送30頁的資料,到了1976年Ceefax系統將這項服務擴充到可以提供100頁資料,很快的ORACLE及Prestel系統已都擴充到100頁,這段時間播送技術發展的很快,但是人們並沒有很快的接受,主要是因為電視本身沒有TTX Decoder而需要另裝.到了1977年第一台聚有解碼能力的電視才問世,但是要到80年代中其歐洲電視TTX解碼功能才成為15"以上電視的必備功能,這時Ceefax及CRACLE系統都已經可以提供每一頻道數百頁資訊的能力.這種文字廣播的好處曾經因為internet的蓬勃發展而手到質疑,但是2001 09 11 恐怖攻擊發生時,電話與網際網路都因雙向傳遞的特性被塞爆了,Teletext成為及時資訊的最佳傳遞媒體,同時Teletext的重要性再度被肯定.
由於TTX在歐洲的普及,他的規格也漸漸被擴充,ETSI規範Level1.5 涵蓋歐陸各種語言以及阿拉伯文與希伯萊文. level 2.5 強化顯示能力包括每個字都可以設不同的顏色,改變底色,...level 3.5 加上字型與較高解析度的圖,雖然有這麼多Level但實際上最常看到的還是level 1.5, 至於level2.5還需要特殊解碼器.
美國是一個奇怪的國家,雖然Teletext已經成功的開發出可以用在NTSC系統上,但他不屑取採用別人開發成熟的技術(雖然有些電台已經採用了,但官方不支持),自行開法只有部分功能的CC(closed caption),CC其實是Teletext開開始發展時就已經開發的基本功能.
在類比世界裡,TTX是數位編碼的資訊但都是載在視訊信號中換頁的那幾條掃描線中,反正在電視播放時那幾條是沒有視訊信號的,當解調器讀到vertical blanking interval時就把視訊載波送給TTX解碼器去解碼,然後儲存在記憶體中備用.
但是到了數位電視的時代,這部分變得有一點複雜,一開始DVB為了要支援先前的技術,公佈了DVB-TXT及DVB-VBI,在這規範中,文字廣播依然是包括在視訊封包裡,這時電視的Teletext解碼器是有功用的,因為要解讀Teletext可以使用電視的解碼器.但是這樣的服務無法發揮數位電視系統的好處,於是又公佈了DVB-SUB,將文字資訊單獨封包傳遞,這樣子就可以傳更多的文字,例如,如果是傳CC這時候就可以傳多種文字的CC,不過這時必須要由數位模組的多工解調器來處理,一般電視的TTX解調器是無作用的.甚而至於DVB-MHP或是MHEG-5這一類的middleware還處理更多更多的文字服務,這些都需要在數位機上盒中來處理,在機上盒處理完後解調成為輸出介面所要的視訊訊號讓電視做顯示,電視變成單純顯示器.
不過從另一個角度來看,數位系統可以提供的服務種類太多,每個人購買使用的功能也不同,甚至系統商也是慢慢開發出新的服務,每變更一次服務項目軟體就必須更新,因此,機上盒的軟體勢必須要常常更新,好在數位電視系統頻寬使用率比較有效率,所以軟體更新可以透過電視廣播系統遞送軟体到每個使用者的機上盒,然後自動更新.這樣對客戶服務比較好,且成本低,在客戶不尚未抱怨前把問題處理掉,客戶滿意度會比較高.

星期三, 11月 21, 2007

WDM/BDA Driver & DVB-T

some refrence from internet about BDA & DVB-T

----------------------------------------------------------

目前大部分的capture卡都是WDM的driver.
so裝起DirectX, 用裏面的DirectShow來抓你想要的資料
你要看一下SDK才行, 因為蠻多的...
不過, 有幾個關鍵字供你參考
GraphEdit.
Filter
WDM video capture device=> video capture filter. 負責送資料出來, 也負責設定TVstandard.
Crossbar filter. 設定你影像的來源, 像是從SVideo 或是從TV 來
TVTuner filter. 設定頻道相關
TVAudio filter. 設定主聲道, 副聲道相關
找出GraphEdit, 把以上我說幾個相關的filter找出來, 連起來...
再到dshow SDK的dump sample, compile一下, 註冊.
再把dump filter加入圖中, 把dump filter 和video capture device 接起來..
run Graph, 資料就會dump到你指定的檔案裏...
------------------------------------------------------------------------

參考的網頁是
http://msdn.microsoft.com/library/en-us/directshow/htm/bdafilterinterfaces.asp?frame=true

BDA是微軟比較新的一種driver model. 目前就我所知, 所有的DVB-T tuner卡應該都是follow這個model在做, 只要follow BDA來做, 就會有一些共通的interface來提供AP和driver溝通. WDM也是, 只不過WDM大部分是用在analog tuner card比較多, 除非是比較新的版本.

不管是WDM or BDA driver都要先裝DirectX SDK, SDK中提供了了一個tool叫做GraphEdit. 通常我寫AP前都會先用這個tool來驗証卡有沒有問題...
之後, 你再找SDK中的proppage.dll, 註冊他, 這個dll可以讓GraphEdit開filter的property page.
至於BDA的driver安裝後, 你會在BDA幾個相關的cateory找到幾個device,
首先要加入Network provider, 在這你要選DVB-T network provider.
另外你可能會在另外幾個BDA開頭的目錄中, 找到最多三個filter, demodelator, receiver, capture device. 至於有那幾個則是看driver而定. 再來就是打開tuner的property.
自己玩一下property的設定...裏面有個設frequency的, 要設定台灣DVB-T頻道的頻率值
設完後按submit. 順利的話你把整個圖建完按run的話就會有資料出來了..
不過, BDA 架構的driver, GraphEdit support的比較少, 所以有些東西可能必須要寫程式才能用...這是一個蠻大的課題, SO...看SDK吧...

另外一點補充的, 因為DVB-T是使用mepg2 transport stream來送資料..
你想要分析的話, 至少要先看ISO-13818才行..加上DirectShow SDK蠻多東西要看的...可能至少要花一個月以上的時間吧...

-------------------------------------------------------------------------------
目前手上有一個支援DVB-T with BDA 架構的C# sample code
程式下載處:
http://directshownet.sourceforge.net/index.html 裡的
DirectShow Samples April 2006 (2006-04-12)
(DirectShowNET與DirectShowSamples都要下載!!)
接上Asus的一台數位電視棒之後,隨即跑這個程式(此台電視棒有支援BDA架構)

遇到一些問題:
程式在一開始需要使用者輸入四個參數
分別是 Frequency、ONID、TSID、SID
目前我只知道三個參數
以台灣區北部(桃園)為例子
要中視的某一台頻道可能會填
Frequency 533
ONID (目前不曉得)
TSID 24
SID 101

我查了官網並沒有該參數的詳細訊息(大部分就是少了ONID)
請問ONID 該填什麼呢? 如果知道的人 可否提供一組 參數給我,
或是給我一些方向去尋找,謝謝。

另外在這個C#程式在跑的時候(compile已經過了)
總是會停在一個地方
錯誤訊息顯示 "this application only support the 2 filters BDA scheme"
程式是在執行renderstream()時,可能是參數傳遞錯誤
你可以在http://ss23.mcu.edu.tw/~s0170305/download/BDA_sample_code_for_csharp.ppt找到程式UI圖片,
目前很積極在解決這個問題,希望各位給我一點方向去解決這個問題,非常謝謝。








作者 : shunchia63(shunchia63) [ 貼文 3 | 人氣 8 | 評價 0 ] posted on 8/9/2007 10:28:24 PM
[ 回應本文 ] [ 發表新文 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
我用DVBT 有些一個TEST AP,可以撥放
台灣 15CH

參數的確非常難找

Sample AP:
http://delphi.ktop.com.tw/download.php?download=upload%2F468ecf4dcd82a_TV.zip

有空
try try See @@~





作者 : sasake23(阿金) [ 貼文 10 | 人氣 936 | 評價 0 ] posted on 8/12/2007 4:56:56 PM
[ 回應本文 ] [ 發表新文 ] [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
謝謝你!!

不過我目前沒辦法撥出節目,可能是我這裡訊號強弱的關係...
(我是用 ASUS U3000 mini 在跑 ; 桃園龜山)
如果 可以成功再上來回報。


參數的部分,我試過一組是這樣:

以中視台來說
frequcncy 533MHz
ONID 8350
TSID 24
SID 102


ONID的資料來源為http://www.govbooks.com.tw/eguploadpub/eg011162/ch06/type2/gov50/num1/Eg.pdf (2005 八月的資料)

還請各位前輩多給我一些指教,謝謝。


我目前也是再開發dvbt ,目前已經有了 Transport Stream Source Filter

但是 要如何將property pages 給讀進去 有三個 program property pages ,Tuner property pages , Monitor property pages 那程式哪要如何連結呢?

快被追殺的新手