å ¥é
ãããããããçŽ
ãããããã€ãã®ããã«ãé çªã«ãã¹ãŠã«ã€ããŠã
10-15幎å
ããŒã·ãã¯ã®ç 究ã¯ããã®çŽ æŽãããYPã®ããŸããŸãªã¿ã€ããå«ãã«ãŒããªããžã䜿çšããŠãSuborïŒããŒããŒããåãããã³ãã£ãŒïŒã®æ代ã«å§ãŸããŸããã 次ã«ãDOSã®ã³ã³ãã¥ãŒã¿ãŒã§å€ãè¯ããã«ãŒã¹ã¯ãªãŒã³qbã䜿çšããŸãã ããŠãthenç¶ãšããããã°ã©ãã®ããã«æããŠãç§ã¯æªç©ã«åãæ¿ããŸããïŒã¯ãïŒããŒãã«16MBã®486ããã»ããµã®å Žå...ïŒVB5
ãã§ã«é åºã«ããããããŠãããããŸããªãã¿ã³ã®æã§ãŠã£ã³ããŠãæ¢ã«åœ«å»ããŠãããšããç§ã¯æçšãªäœããæžãããšã«ããŸããã ããŠãããã§ãã®ãããªå¿ èŠæ§ãçŸããŸããã 家ã®ç®èŠãŸãæèšã«é·ãéæ £ããŠããã®ã§ãããšããã¹ãŠãåæã«é³Žã£ãŠãããšããŠããéãã«ç ãããšãã§ããŸããã
ããŸãããšæã£ãã®ã¯ããç§ã®ã¹ããŒã«ãŒïŒ18ã¯ããïŒïŒã¯ããããç§ãè²ãŠãŠãããã§ããããã
ç§ã¯ã·ã³ãã«ãªãã®ããå§ããŸããããã©ãŒã ã«ã¿ã€ããŒãæããããã«ããã€ãã®ããã¹ãããã¯ã¹ãšãStartïŒããã¿ã³ãæã¡èŸŒã¿ãŸããã 圌ã¯ç§ãã¬ã€ãºãéå§ã§ããããã«ãªããŸã§ã®æéãã¬ã€ãºããå¿ èŠãããåæ°ããããŠãã«ããªã¥ãŒã ã§winampã§èµ·åããå¿ èŠã®ããmp3ãã¡ã€ã«ãèšå®ããŸããã
é·ããŠãçããŠããæ¯åãäžæããåã«èšå®ããªããã°ãªããªãåæ°ã«ã€ããŠèããã®ã«ããããããŠããŸãã ãã¹ãŠã®ãã«ã鳎ããå§ããæéãèšå®ããããšã決å®ãããŸããã ããã«ãææ¥ããšã«ç«ã¡äžããæéã確ä¿ããå¿ èŠããããŸããã ãŸããç»é¢ã«ã¹ããã«ãŒã衚瀺ããŠãä»æ¥ã®ã¹ã±ãžã¥ãŒã«ãã€ãã³ãã®ã°ã«ãŒããããã«ãªãã«ããæ©èœïŒå€äŒã¿ã®å°æ¥ãã»ãã·ã§ã³ãçµãã£ãæ¹æ³ïŒãããã«ã¯å€éã«ã³ã³ãã¥ãŒã¿ãŒããããã¯ããæ©èœã衚瀺ããããšèããŸããã ã¯ãã圌èªèº«ã¯ããã¯ã解é€ã§ããŸããã§ããã ãã®ä»...
ç§ã¯èªåã§mp3ãåçããŸã
...ãããŠããããè¡ãããã«å¥è·¡ã®ç®èŠãŸãæèšãæããããšãã§ãããªãããªãWinampã§ãã¡ã€ã«ãå®è¡ããå¿ èŠããããŸãã ãŠã£ãã³ãã§ã¯ãé³éãäžããããåé€ãããã§ããŸãããããã«å€ãã®ããšãã§ããæçµçã«ã¯ç ãããšãã§ããŸãã
MSDNãæäŸããæåã®ãœãªã¥ãŒã·ã§ã³ã§ããMCI㯠ãç§ã®ãããªãã¯ãŒã«ãªãããã°ã©ãã«ãšã£ãŠå®å šã«ã¹ããŒããã³ããããªããšã¯èŠãªãããŸããã§ããããéã«ãBASIC mp3ã§ã®ãã³ãŒãã¯ã¹ããŒãã£ããããšèããŸããã æçµçã«ã圌ã¯vbç°å¢ã«ããŸãçµ±åãããCOMãªããžã§ã¯ãã«èœã¡çããéåžžã«æè»ã«åçãå¶åŸ¡ããåçã®é²è¡ç¶æ³ã«é¢ããå¿ èŠãªæ å ±ãååŸããããšãå¯èœã«ããŸããã IGraphBuilderã®æãæ¥ãŸãã ïŒvbã®è žå ã§ã¯FilgraphManagerãšåŒã°ããŠããŸãããå®å šã«æ£ç¢ºã§ã¯ãããŸããããç°¡åã«ããããã«ããããŸãïŒã
ãã¹ãŠã®ã³ãŒãã¯é³è åããïŒ
Dim mpl As New FilgraphManager, mplinfo As IMediaPosition Function OpenMP3(ByVal mp3file As String) As Boolean On Error Resume Next mpl.RenderFile mp3file If Err.Number <> 0 Then Set mplinfo = mpl Timer1.Enabled = True OpenMP3 = True Exit Function End If OpenMP3 = False End Function Sub Timer1_Timer() Label1.Caption = mplinfo.CurrentPosition End Sub
ããã«å€§åŠã§ã®ãã¹ãŠã®ã»ãã·ã§ã³ã«åæ Œãããã§ã«çµäºãããã®ããã«ãç§ã¯å¹žãã«ãªããŸããã
VB5ã®ã¢ã³ã¹ã¿ãŒã¢ã©ãŒã

ããŠãC ++ã¯ã©ãã«ãããŸããïŒïŒ
ããããããã«ãã³ã³ãã¥ãŒã¿ãŒãéããããããã®ã¢ã³ã¹ã¿ãŒãæžããŠããéãç§ã¯ããã»ã©ã¯ãŒã«ãªããã°ã©ããŒã§ã¯ãªãã£ãããç®èŠãŸãæèšã¯ãã°ãã°ç§ã倱æãããã 圌ã¯è©Šéšã®ããã«ç®ãèŠãŸãããã€ãã³ãã®æéãã¹ããããã次ã®ã€ãã³ããåŸ ã€ããšã«ç§»ããŸãããããŠãrogæ ¢ãªäººã®äžã§ã圌ã¯ç§ã«ç®ãèŠãŸããŠããããšã瀺ããŸããã圌ã¯é³ãåºããŸããã ïŒãã¯ãŒã«ãªãããã°ã©ããŒã®å Žåã«ããããããšã§ããïŒç§ã¯ãä»ã¯èªåã«æ¯ã¹ãŠééããªãã¯ãŒã«ã ãšæ±ºããC ++ã§æžãçŽããŸãïŒ Straustrupã«ããèè ã®æ¬ãã¯ã¬ã€ãžãŒãªéé¡ã§è²·ã£ãã®ã¯ç¡é§ã ã£ãã®ã§ããããïŒ
åœæãç§ã¯winapiãããªã容èªããŠãããæã«ã¯ã¯ã©ã¹ãæ¿å ¥ããStraustrupãå·çããæ¬ã®ç®æ¬¡ãèªã¿ãŸããã æ°æ¥åŸãç®èŠãŸãæèšã®ã¹ã±ã«ãã³ãæããŠãç§ã¯åœŒãèªåã§mp3ãåçããå¿ èŠããããšæ±ºããŸãããã¡ãã£ã¢ãã¬ãŒã€ãŒãwinampãªã©ã¯ãããŸããã éåžžã©ãããMCIãæåŠãããŸããã
ããããã以åãç§ã¯å šèœã§ã¯ãªãã£ããããŸã äœããèããŠãããšæããŸããã ãããŠãåãFilterGraphã䜿çšããŠãç°¡åãªã¯ã©ã¹ããã°ããäœæããç 究ãç¶ããŸãã ã¯ãã MSDNã®äŸã¯ãã®ã·ã³ãã«ãã«æºã¡ãŠããŸãã
ããã«ã¯ã©ã¹ãäœããã€ãã³ãã®å®è¡ãèŠæ±ããèŸæ±åŒ·ãåŸ ã£ãŠ...
ãããã°ã©ã ã¯ç¡å¹ãªæäœãå®è¡ãããããéããããŸã...ã
ãªããŠãã³ã»ã³ã¹ïŒ ã³ããŒã¢ã³ãããŒã¹ãã³ãŒãã®æ°è¡ã§ã©ãããã°ééããç¯ãããšãã§ããŸããïŒ ãã¡ã€ã«ãåãã§ã¯ãªãã®ã§ããããïŒ ãªããžã§ã¯ããåæåãããªãã£ãã®ã§ããããïŒ æ®µéçãªãã§ãã¯ã«ãããRenderFileã¡ãœããã®åŒã³åºãã§äŸå€ãå®å®ããŠã¹ããŒãããŸããã
å€ãç¥ç¶ã®Googleã¡ãœãã
ã³ãŒããæžã代ããã«ãã³ãŒããæžã代ããã«ãç§ã¯ãã¹ãŠãã¯ã©ãã·ã¥ããã¹ã¿ãã¯ã質åäžã®ã³ãŒãã®ãšã©ãŒãªã©ãæžããæ€çŽ¢ã¯ãšãªãæžãå§ããŸããããç§ãèŠããã®ã§ã¯ãããŸããã§ããã ãã¹ãŠã®äººã«æå¹ãªã³ãŒãã¯ç§ã«ã¯æ©èœããŸããã ããããã®äžå¯è§£ãªgrafbildersãããããããMCIãæã«åããè¡ã£ãŠãã ããããšããã¢ããã€ã¹ãèªãã§ã圌ã®ãšãŽãæŽçããMCIã§æ¯ãåã¿ãªããã³ããŒããŸããã
åã³F5ãmciSendStringãããã³...
ãããã°ã©ã ã¯ç¡å¹ãªæäœãå®è¡ãããããéããããŸã...ã
圌ã¯ã¢ãã¿ãŒãééã£ãããŒããŒããããã»ããµã§çœªãç¯ãå§ããŸãããçªç¶ãå·¥å Žã§æããããããšãã©ããã£ãŠããã®ãå¿ããŠããŸããŸããã MS Webãµã€ãGraphEditãŠãŒãã£ãªãã£ã®è žå ã§èŠã€ãããŸãã

ã³ã³ãã¥ãŒã¿ãŒæè¡ã®ããé«ãå¢åãæããã«ç§ã«åããŠããã
ãã¹ãŠãè©ŠããŠãããŸã äœãæ©èœããªãå Žå-RTFM
幞ããªããšã«ã IGraphBuilderã«ã¯SetLogFileã¡ãœããããããŸãã éåžžã«è¯ãæ¹æ³ã§ãã ããããªããã°ãçµã¿èŸŒã¿ã®éã¢ã»ã³ãã©ãŒã®ã·ãŒããæãäžããŠãç§ã¯ééããªãå¹³åãšç¡ç ã倱ããŸãã
ããäžåºŠãããã°ãéå§ããã³ãŒãããéåžžã«é ãé¢ããã¢ãã¬ã¹ã§äŸå€ã¡ãã»ãŒãžãçŒãä»ããŸãããã¹ã¿ãã¯ããã®ã¢ãã¬ã¹ãå±ããã¢ãžã¥ãŒã«ã®ååã¯ãªããåéããããã°ãèªããšäŸ¿å©ã§ããã
圌ãéåžžã«éå±ã§ãããšããäºå®ã«ããããããããããã圌ã®ç 究ã¯å ±ãããŸããïŒ
ãã¡ã€ã«dã®è¡šç€ºïŒ\ 437236.mp3
ãã¡ã€ã«ã®ã¡ãã£ã¢ã¿ã€ãã¯0xe436eb83 ...ãµãã¿ã€ã0xe436eb87 ...
clsidãœãŒã¹ãã£ã«ã¿ãŒ0xe436ebb5 ...
...
ã¬ã³ããªã³ã°ïŒQueryInternalStreamsã¡ãœãããšã©ãŒã 2914b8cã§ãã£ã«ã¿ãŒ
ã¬ãã«2ããæ»ã
æãæ»ãïŒ é£çµ¡å 2914fbcãåæãããŸãã
æãæ»ãïŒ é£çµ¡å 293a804ã¯åæãããŠããŸã
ã¬ã³ããªã³ã°ïŒé£çµ¡å ãªã-2914b8cãã£ã«ã¿ãŒã§äœ¿çšãããé£çµ¡å ãèŠã€ãããŸãã
æãæ»ãïŒ ãã£ã«ã¿ãŒã®åãå€ã2914b8c
ã¬ã³ããªã³ã°ïŒè¡šç€ºåããã€ã¹ã§æ°ãããã£ã«ã¿ãŒã䜿çšããŠã¿ãŠãã ããïŒswïŒ{083863F1-70DE-11D0-BD40-00A0C911CE86} \ {138130AF-A79B-45D5-B4AA-87697457BA87} ...
ãããŠäœããããŸããã
ããããããã«ïŒå®éãç ããªãæ¥åŸïŒçµè«ãåºãããŸããïŒCLSID = {138130AF-A79B-45D5-B4AA-87697457BA87}ã®ç¹å®ã®ãã£ã«ã¿ãŒã¯å€±æããŸã
ããŒããŒãã¹ã
ããã«ã¬ãžã¹ããªãéãããã®CLSIDãèŠã€ããŠã次ã®ããšãçºèŠããŸããã

ãããç§ã®èŠããã§ãã7人ã¯ããã®6çªç®ã®
Nero 6ãã¢ã³ã€ã³ã¹ããŒã«ããŸããããã¹ãŠç²åŸããŸããã
ã€ã³ã¹ããŒã«æžã¿ã åäœãåæ¢ããŸããã
ããããããã§ç§ã¯é çªã«ç±ããªããåé¡ãããã»ã©ç°¡åã«è§£æ±ºããªããšæ±ºããŸããã 圌ã¯çãçãã²ãããNero 6ãåã³ã€ã³ã¹ããŒã«ããèãå§ããŸããïŒç®èŠãŸãæèšãåé€ããã«åçããã«ã¯ã©ãããã°ããã§ããïŒ
casã¯ãã éããªãã£ã
ããã§ãããŸããŸãªãã¹ãã®æ·±ãã«é¢ããMSDNããã¥ã¡ã³ããèªãããšã§ãmp3ïŒããã³ã¡ãã£ã¢ãã¡ã€ã«ïŒã¯æ¬¡ã®ã¢ã«ãŽãªãºã ã«åŸã£ãŠåçããããšããçµè«ã«éããŸããã
1. IBaseFilterã«ãœãŒã¹ãã¡ã€ã«ãããŒããããŸãã
2.ãµãŠã³ãããµãŠã³ãïŒãŸãã¯ãã®ä»ã®åºåïŒããã€ã¹ã«åºåãããã£ã«ã¿ãŒãæ€çŽ¢ããŸãã
3.ãœãŒã¹ããã®ããŒã¿ã¹ããªãŒã ãåºåããã€ã¹ãç解ã§ããããŒã¿ã¹ããªãŒã ã«å€æããäžéãã£ã«ã¿ãŒãæ€çŽ¢ããŸãã
mp3ãã¡ã€ã«ã®è§£æäŸã¯æ¬¡ã®ããã«ãªããŸãã
1.å ¥åãã¡ã€ã«ã®å 容ãIBaseFilterã«ããŒãããŸãã
2.ãã¡ã€ã«ãã£ã«ã¿ãŒããŒãµãŒãæ¢ããŠããŸãã
3.ãªãŒãã£ãªã¹ããªãŒã ã§ãã£ã«ã¿ãŒãã³ãŒããŒãæ¢ããŠããŸãã
4.ãã®ã¹ããªãŒã ãåºåããã€ã¹ã«éä¿¡ãããã£ã«ã¿ãŒãæ¢ããŠããŸã
ãããããã¹ãŠãã³ã§æ¥ç¶ããŸãã åºåãã³ã¯å ¥åãã³ã«æ¥ç¶ããå¿ èŠããããŸãã ãã®å Žåãåºåã®ã¡ãã£ã¢ã¿ã€ãã¯å ¥åã®ã¡ãã£ã¢ã¿ã€ãã«å¯Ÿå¿ããå¿ èŠããããŸãã å®éã次ã®ããã«èŠããŸãã倧éã®ã¯ã€ã€ãã³ã³ãã¥ãŒã¿ãå€ãããŠã¹ãããã³å€§éã®ã¢ããã¿ããããŸãã ãããŠããã¹ãŠã®ã³ãã¯ã¿ãçžäºæ¥ç¶ããããŸã§ã匷åŒã«ããŸããŸãªã¢ããã¿ã«ã¯ã€ã€ãçªã£èŸŒã¿ãŸãã ç§ã®å Žåãã¢ã«ãŽãªãºã ã«ã¯ãã1ã€ã®æ¡ä»¶ãè¿œå ãããŸããããã®ã¢ããã¿ãŒïŒãã£ã«ã¿ãŒïŒãNero 6ããã®ãã®ã§ããå Žåã¯ãããã«ç Žæ£ããå床觊ããããšã¯ãããŸããã
ç§åŠçãªçªãæ¹æ³
ãã£ã«ã¿ãŒã®ã»ããããããŸãïŒ IFilterMapperã§ååŸã§ããŸã
åãã£ã«ã¿ãŒã«ã¯ããã³ã®ã»ããïŒINPUT / OUTPUTïŒãããããã®ãªã¹ãã¯IBaseFilter :: EnumPinsã¡ãœããããååŸã§ããŸã
åãã³ã«ã¯ãã¡ãã£ã¢ã¿ã€ãã®ã»ãããããããã®ãªã¹ãã¯IPin :: EnumMediaTypesãä»ããŠååŸã§ããŸãã
ãªã¹ãããæéã§ãã
IFilterMapperãIBaseFilterãIPinã®ã¯ã©ã¹ãã¹ã±ãããïŒä»¥äžã§å®è£ ã確èªã§ãããªã³ã¯ãæäŸããŸãïŒãã·ã¹ãã ã«æ¢ç¥ã®ãã¹ãŠã®ãã£ã«ã¿ãŒããªã¹ãããé©åãªãã³ãæ¢ããããããæ¥ç¶ãå§ããŸããã
é·ãéèŠããã§çãŸããé·ãã³ãŒã
// void CDSPlayer::PlayFile(LPCTSTR pszFile) { HRESULT hr = 0; IBaseFilter * pSource = NULL; // if ( FAILED(m_pGraph->AddSourceFilter(pszFile, pszFile, &pSource)) ) return FALSE; // if ( SUCCEEDED( TryConnectFilters( m_pGraph, pSource ) ) ) { // return SUCCEEDED( m_pControl->Run() ); } return FALSE; } // , pSource // pSource ( ) pin - OUTPUT HRESULT CDSPlayer::TryConnectFilters(IGraphBuilder * pGraph, IBaseFilter * pSource) { std::vector<CBaseFilter*> filters; m_fltEnum.FilterList(filters); return ConnectFilters(filters, pGraph, pSource); } // HRESULT CDSPlayer::ConnectFilters(std::vector<CBaseFilter*> & vFltList, IGraphBuilder * pGraph, IBaseFilter * pSource) { HRESULT hr = E_NOINTERFACE; CPin * pSourcePin = NULL; CBaseFilter fltSource(pSource); // , ... std::vector<CPin*> pl; fltSource.PinList( pl ); for(std::vector<CPin*>::iterator vpl = pl.begin(); vpl < pl.end(); ++vpl) { CPin * pin = *vpl; if ( pin->Dir() == PINDIR_OUTPUT ) { pSourcePin = pin; // ... hr = ( SUCCEEDED( ConnectPins(vFltList, pGraph, pSource, pin) ) ? S_OK : hr ); // - OUTPUT, . -, } } return ( pSourcePin ? hr : S_OK ); } // Nero, BOOL CDSPlayer::IsFilterAllowed(CBaseFilter * pFilter) { CString s = pFilter->Name(); if ( s[0] == _T('N') && s[1] == _T('e') && s[2] == _T('r') && s[3] == _T('o') && s[4] == _T(' ') ) return FALSE; // skip ugly nero filters return TRUE; } HRESULT CDSPlayer::ConnectPins(std::vector<CBaseFilter*> & vFltList, IGraphBuilder * pGraph, IBaseFilter * pSource, CPin * pSourcePin) { std::vector<AM_MEDIA_TYPE> vAmtSource; // - ... pSourcePin->MediaTypesList(vAmtSource); // for(std::vector<CBaseFilter*>::iterator v = vFltList.begin(); v < vFltList.end(); ++v) { CBaseFilter * pFlt = *v; if ( !IsFilterAllowed( pFlt ) ) continue; if ( pFlt->Init() ) { std::vector<CPin*> vPinList; pFlt->PinList(vPinList); for(std::vector<CPin*>::iterator vp = vPinList.begin(); vp < vPinList.end(); ++vp) { CPin * pin = (*vp); // OUTPUT , INPUT if ( pin->Dir() == PINDIR_OUTPUT ) { continue; } std::vector<AM_MEDIA_TYPE> vamt; pin->MediaTypesList(vamt); for(std::vector<AM_MEDIA_TYPE>::iterator va = vamt.begin(); va < vamt.end(); ++va) { for(std::vector<AM_MEDIA_TYPE>::iterator vas = vAmtSource.begin(); vas < vAmtSource.end(); ++vas) { // - - , if ( vas->majortype == va->majortype ) { // ( Nero6 EXCEPTION_ACCESS_VIOLATION) pGraph->AddFilter(pFlt->Object(), pFlt->Name()); // ConnectDirect! Connect, , HRESULT hrc = pGraph->ConnectDirect(pSourcePin->Object(), pin->Object(), NULL); if ( SUCCEEDED( hrc ) ) { _tprintf(TEXT("Found suitlable filter '%s'!\n"), pFlt->Name()); // ? ! ( ) return ConnectFilters(vFltList, pGraph, pFlt->Object()); } // , pGraph->RemoveFilter(pFlt->Object()); } } } } } } // . :-( return E_NOINTERFACE; }
äžèšã®é·ãã³ãŒããèªãã®ã«ããããããŠããŸãããïŒ ç²ããã ééããªãç²ããã ãã®ãããé·ãéèŠåŽããŠçãŸãããã®ã³ãŒãã¯ãæåã¯æ©èœããŸããã§ããã ãã³ãäžè¯ã§ãããããã£ã«ã¿ãŒã®ãã£ã«ã¿ãªã³ã°ãäžååã§ãã é³ããããŸããã§ããã
ã¢ãã©ã³ãã£ã¹ãèŠã€ãã
ãã£ã«ã¿ãŒã®åæåã³ãŒãã¯ç°¡åã§ãïŒä»¥åã¯äžåèªã§ããïŒã
CBaseFilterã®åæå
CBaseFilter::CBaseFilter(REGFILTER rf) : m_rf( rf ), m_sFilterName( rf.Name ), m_pBaseFilter( NULL ), m_fDontRelease( FALSE ) { } BOOL CBaseFilter::Init() { if ( m_pBaseFilter ) // , ( ) return TRUE; // HRESULT hr = CoCreateInstance(m_rf.Clsid, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**) &m_pBaseFilter); // , if ( SUCCEEDED( hr ) ) hr = InitPins(); return SUCCEEDED( hr ); }
E_NOINTERFACEã§ããããã圌ãããŒãããªãã£ããã£ã«ã¿ãŒïŒæãã§ããmp3ãã£ã«ã¿ãŒãå«ãïŒã®ååã ãã瀺ããŸãã
åã³éåœã¯ç§ãããã¥ã¡ã³ãã«éããŸããããã
é«åºŠãªïŒïŒïŒCBaseFilterã®åæå
BOOL CBaseFilter::Init() { if ( m_pBaseFilter ) return TRUE; HRESULT hr = CoCreateInstance(m_rf.Clsid, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**) &m_pBaseFilter); if ( E_NOINTERFACE == hr ) // , DMO, DMOWrapper { hr = CoCreateInstance(CLSID_DMOWrapperFilter, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**) &m_pBaseFilter); if ( SUCCEEDED( hr ) ) { IDMOWrapperFilter * pDMOFilter = NULL; hr = m_pBaseFilter->QueryInterface(IID_IDMOWrapperFilter, (void**) &pDMOFilter); if ( SUCCEEDED( hr ) ) { // DMO-. .. , AUDIO pDMOFilter->Init(m_rf.Clsid, DMOCATEGORY_AUDIO_DECODER); // , pDMOFilter->Release(); } } } if ( SUCCEEDED( hr ) ) hr = InitPins(); return SUCCEEDED( hr ); }
ãããŠãããã«åŸ
æã®å¥è·¡ããããŸãïŒ

ããŠããã®åŸãç§ã¯å·éã«å¡è£ ãããã¹ã±ã«ãã³ã«ããããçš®é¡ã®å¯æããåŒãç¶ããŸããã ããã¯vbããããããã«åªããŠããŸããã
æ°ãã巚倧ãªç®èŠãŸãæèš

ããŠããã®èŠæ©ã®ç®èŠãŸãæèšã«é¢é£ããæ®ãã®è©±ã¯ããã¯ãããã»ã©é¢çœããªãã ä»ãç§ã¯ç¢ºãã«æééãã«èµ·ããŸãïŒ ãŸããç§ã¯ããã«æ £ãããŸã§...
PSïŒ
ãã®ãããªãã¬ãŒã€ãŒã®å®å šãªã³ãŒããåå°ããŠããŸãã
Visual Studioã®å®è£
ãã¡ãããã³ãŒãã¯å ããŸããããããã¯ããããæ©é¢è»ã®ç²ã匷ããšæŠéæ©ã®ã¹ããŒãã§æžãããããã§ãããã
ãããããã®èšäºã®ç®çã¯ãåé¡ã«é¢ããç§ã®ãã¹ãŠã®ç 究ãšå ±æããããšã§ããããã®è§£æ±ºçã¯ãç§ãèªåã®æéã«ãããäžã§èŠã€ããããªãã£ãããšã§ãã ãã®ãœãªã¥ãŒã·ã§ã³ããŸã å©çšã§ããªãå Žåã¯ããã§ã«ååšããŠããŸãã