간단한 MP3 만들기

개발 이야기/DirectShow 2015. 6. 30. 18:12
=======================================================
준비물.
=======================================================

1. 기본 메크로 등록.

사용 여부는 알아서...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#define CHECK_HR(hr, val) { hr = (val); if(FAILED(hr)) { goto done; } }
 
HRESULT DShowPlayer::InitializeGraph()
{
    HRESULT hRet = E_FAIL;
 
    .
    .
    .
 
    CHECK_HR(hRet, CoCreateInstance(CLSID_FilterGraph, 
                                    NULL, 
                                    CLSCTX_INPROC_SERVER, 
                                    IID_IGraphBuilder, 
                                    (void**)&m_pGB));
 
    .
    .
    .
    
    return S_OK;
 
done:
    return E_FAIL;
}
 
cs

필자는 이런식으로 사용...

2. 소스작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HRESULT YourFunction()
{
    HRESULT hRet = E_FAIL;
 
    CHECK_HR(hRet, CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&m_pGB));
    CHECK_HR(hRet, m_pGB->QueryInterface(IID_IMediaControl, (void**)&m_pMC));
 
    IBaseFilter *pSourceFilter = NULL;
    CHECK_HR(hRet, m_pGB->AddSourceFilter(m_strFilePath, NULL, &pSourceFilter));
 
    if (pSourceFilter != NULL){
        CHECK_HR(hRet, m_pGB->RenderFile(m_strFilePath, NULL));
    }
 
    SAFE_RELEASE(pSourceFilter);
 
    if (m_pMC != NULL){
        CHECK_HR(hRet, m_pMC->Run());
    }
    
    return S_OK;
 
done:
    return E_FAIL;
}
 
cs


끝!

무진장 간단하다!

'개발 이야기 > DirectShow' 카테고리의 다른 글

[COM] Create GUID  (0) 2015.06.17