專案掛在 TimeShiftDlg.cpp
分類: [專題研究] 數位電視
TimeShift期間的uuid
[MPEG2DemuxFilter]
001 : [接至MPEG-2 Sections and Tables]
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5}
Sub Type:
{E9DD31A3-221D-4ADB-8532-9AF309C1A408}
Format:
None
002 : [接至 BDA MPEG2 Transport Information Filter 的 IB Input]
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5}
Sub Type:
{C892E55B-252D-42B5-A316-D997E7A5D995}
Format:
None
003 : [接至SBE Sink 的 DVR in – 3]
Major Type:
Video
Sub Type:
MPEG2_VIDEO
Format:
RGB 704×480, 0 bits,
Aspect Ratio:
16×9
Interlace format:
Frames
rcSrc={0,0,704,480}
rcDst={0,0,0,0}
CtrlFlags=00000000
004 :
Major Type:
Video –
Sub Type:
MPEG2_VIDEO –
Format: RGB 704×480, 0 bits,
Aspect Ratio: 16×9,
Interlace format: Frames
rcSrc=(0,0,704,480)
rcDst=(0,0,0,0)
CtrlFlags=00000000
005 : [接至SBE Sink 的 DVR in – 4]
Major Type:
Video –
Sub Type:
MPEG2_VIDEO –
Format: RGB 704×480, 0 bits,
Aspect Ratio: 16×9,
Interlace format: Frames
rcSrc=(0,0,704,480)
rcDst=(0,0,0,0)
CtrlFlags=00000000
006 :
Major Type:
Video –
Sub Type:
MPEG2_VIDEO –
Format: RGB 704×480, 0 bits,
Aspect Ratio: 16×9,
Interlace format: Frames
rcSrc=(0,0,704,480)
rcDst=(0,0,0,0)
CtrlFlags=00000000
007 :
Major Type: Audio –
Sub Type: MPEG2_AUDIO –
Format: WaveFormat
Ex: 48.000 KHz 0 bit stereo
008 :
Major Type: Audio –
Sub Type: MPEG2_AUDIO –
Format: WaveFormat
Ex: 48.000 KHz 0 bit stereo
009 :
Major Type: Audio –
Sub Type: MPEG2_AUDIO –
Format: WaveFormat
Ex: 48.000 KHz 0 bit stereo
022 :
Major Type: Audio –
Sub Type: MPEG2_AUDIO –
Format: WaveFormat
Ex: 48.000 KHz 0 bit stereo
023 :
Major Type: GUID_NULL –
Sub Type: GUID_NULL –
Format: GUID_NULL
030 :
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5} –
Sub Type:
None –
Format:
None
[BDA MPEG-2 Transport Information Filter]
OOB Input:
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5} –
Sub Type:
{951727DB-D2CE-4528-96F6-3301FABB2DE0} –
Format: None
IB Input:
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5}
Sub Type:
{C892E55B-252D-42B5-A316-D997E7A5D995}
Format:
None
iTV Out: [接至 SBE Sink 的 DVR in – 1]
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5} –
Sub Type:
{4A9F8579-6BF8-4392-8A6D-D2DD09FA7861} –
Format: GUID_NULL
SBE OUT: [接至 SBE Sink 的 DVR in – 2]
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5}
Sub Type:
{C892E55B-252D-42B5-A316-D997E7A5D995}
Format:
GUID_NULL
—————————————————————-
[SBE Source] (Error Message : Filter failed to load sorce file.)
DVR Out -1:
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5} –
Sub Type:
{4A9F8579-6BF8-4392-8A6D-D2DD09FA7861} –
Format: GUID_NULL
DVR Out -2:
Major Type:
{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5}
Sub Type:
{C892E55B-252D-42B5-A316-D997E7A5D995}
Format:
GUID_NULL
DVR Out -3:
Major Type:
Video –
Sub Type:
MPEG2_VIDEO –
Format: RGB 704×480, 0 bits,
Aspect Ratio: 16×9,
Interlace format: Frames
rcSrc=(0,0,704,480)
rcDst=(0,0,0,0)
CtrlFlags=00000000
SBE (Stream Buffer Engine) 串流緩衝
The DirectShow Stream Buffer Engine is processed by the sbe.dll module.
DirectShow中的SBE(Stream Buffer Engine)是透過sbe.dll模組所執行的
A stream buffer engine makes applications capable of seeking, pausing and recording a live video stream without interruption.
SBE可以使程式在使用 線上影像串流 時,不需要中斷影像串流即可擁有尋找、暫停、錄製影像的功能
The sbe.dll file extends the functionalities of DirectShow so that it is able to make transitions between live and recorded content without interruption video stream.
sbe.dll 延續了DirectShow的特殊功能,使其能夠在同一個檔案串流上的 線上串流 及 已錄製的影像 之間做切換,且不需要中斷整個串流
With a stream buffer engine, applications can provide VCR-like functions, such as pause, seek, and multi-speed play while rendering a live video stream.
透過SBE,程式可以做到像是VCR這樣的功能,在播放線上影像串流時可以立即暫停、尋找、倒帶及退帶
The sbe.dll file can implement the stream buffer engine directly in the application or indirectly through the Video Control.
sbe.dll 可以直接或間接的在程式中透過影像控制來實作SBE功能
It uses the video control automatically to encrypt the content using the TV ratings components.
To implement the stream buffer engine, the sbe.dll file initializes two or more independent filter graphs.
The primary graph is called the sink graph while the other graphs are called source graphs.
The sink graph captures data from a live source, while the source graphs render the data.
The difference between the two kinds of graphs is that filter graph is more flexible and scalable than a single graph for both capture and rendering.
To store the data in a temporary buffer or in permanent files, the sbe.dll function calls on the sink graph.
To read data from those files, the source graphs are used.
Moreover, a source graph provides the stream buffer engine the ability to seek forward or backward within the stored content, pause playback, without interrupting the data coming from the capture graph; play faster or slower than normal; play in reverse; and implement other tasks such as scheduling a viewing session or a recording session.
Newer versions of sbe.dll file can support MPEG-2 video and digital video (DV) sources. Because source graphs cannot read the backing files over a network, the source graph should be on the same computer as the sink graph.
In DirectShow, the sbe.dll file implements time shifting where the stream buffer engine can stop the preview of a movie while the movie is always being recorded to file. This allows the viewer to watch a particular TV Show at some other time without missing one second of the movie.
Author: Microsoft Corporation
Author URL: http:// www.microsoft.com/
Part Of: Microsoft Windows operating system
Memory Usage: Low
Associated Applications: Microsoft DirectX, DirectShow
Background DLL: No
Uses Network: No
Hardware Related: No
Common Path: C: Windows system32 sbe.dll
DLL Version: 6.6.6000.16386
一些MFC,VS2008及DirectShow的小技巧
註冊DLL檔的方法:
regsvr32 //註冊動態連結檔
regsvr32 -u //解除動態連結檔
————
[錯誤訊息] 正在停用的啟用內容不是最近啟動的那一個
0xC015000F: The activation context being deactivated is not the most recently activated one.
程式碼中加入
CWinApp::InitInstance();
afxAmbientActCtx = FALSE;
————
[警告訊息] 二進位碼不是以偵錯資訊而建置
專案屬性 -> 組態屬性 -> C/C++ ->最佳化 -> 停用
專案屬性 -> 組態屬性 -> 連結器 -> 命令列 -> 輸入 /debug
————
[DirectShow] 控制MPEG-2 Demultiplexer Filter的Pin
IMpeg2Demultiplexer *pDemux = NULL;
hr = m_pDemux->QueryInterface(IID_IMpeg2Demultiplexer, (void**)&pDemux);
GRAPH_LOG(gcMsgLog.LogToFile("QueryInterface()= %x",hr));
if (SUCCEEDED(hr))
{
pDemux->DeleteOutputPin(L"004"); //刪除Pin腳
// Define the media type.
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
mt.majortype = MEDIATYPE_Audio;
mt.subtype = MEDIASUBTYPE_MPEG2_AUDIO;
mt.formattype = FORMAT_WaveFormatEx;
// Create a new output pin.
IPin *pPin;
hr = pDemux->CreateOutputPin(&mt, L"PSI Pin", &pPin);
GRAPH_LOG(gcMsgLog.LogToFile("CreatOutputPin()= %x",hr));
if (SUCCEEDED(hr))
{
// Map the PID.
IMPEG2PIDMap *pPidMap = NULL;
hr = pPin->QueryInterface(IID_IMPEG2PIDMap, (void**)&pPidMap);
if (SUCCEEDED(hr))
{
ULONG cPid = 1;
ULONG Pid[] = {0x00} ; // Map any desired PIDs.
hr = pPidMap->MapPID(cPid, Pid, MEDIA_MPEG2_PSI);
//pPidMap->Release();
}else
GRAPH_LOG(gcMsgLog.LogToFile("QueryTinterface__()=%x",hr));
//pPin->Release();
}
}