DirectShow DirectShow 레퍼런스 인터페이스 IAMVideoCompression GetInfo   [목차열람] [주소복사] [슬롯비우기]
IAMVideoCompression::GetInfo
 
Microsoft DirectX 9.0

IAMVideoCompression::GetInfo

GetInfo 메서드는, 기능이나 기정값이라고 한, 필터의 압축 프로퍼티에 관한 정보를 얻어온다.

구문

HRESULT GetInfo(
  WCHAR *pszVersion,
  int *pcbVersion,
  LPWSTR pszDescription,
  int *pcbDescription,
  long *pDefaultKeyFrameRate,
  long *pDefaultPFramesPerKey,
  double *pDefaultQuality,
  long *pCapabilities
) PURE;

파라미터

pszVersion

[out] "Version 2.1. 0" 등의 버전 캐릭터 라인을 받는 버퍼의 포인터.

pcbVersion

[in, out] 버전 캐릭터 라인의 사이즈 (바이트 단위)를 받는 변수의 포인터.

pszDescription

[out] "My Video Compressor" 등의 설명문자열을 받는 버퍼의 포인터.

pcbDescription

[in, out] 설명문자열의 길이를 받는 변수의 포인터.

pDefaultKeyFrameRate

[out] 기정의 키 frame rate를 받는 변수의 포인터.

pDefaultPFramesPerKey

[out] 키 프레임마다 기정의 예측 (P) 프레임수를 받는 변수의 포인터.

pDefaultQuality

[out] 기정의 품질을 받는 변수의 포인터.

pCapabilities

[out] 0 개 이상의 CompressionCaps 플래그의 비트 단위의 논리합으로서 압축기노우를 받는 변수의 포인터.

반환값

HRESULT 값을 돌려준다.

주의

리스트 한 인수는 모두 NULL 의 경우가 있다. 그 경우, 메서드는 그 인수를 무시한다.

애플리케이션은, 버전 캐릭터 라인과 설명문자열에 버퍼를 할당한다. 버퍼의 필요 사이즈를 조사하려면 ,pszVersionpszDescription 인수의 값으로 NULL 를 사용해 이 메서드를 호출한다. pcbVersionpcbDescription 에 돌려받는 값을 사용해 버퍼를 할당해 한번 더 메서드를 호출한다. 이하의 코드를 참조.

int cbVersion, cbDesc; // 사이즈는 문자수는 아니고 바이트수.
hr = pCompress->GetInfo(0, &cbVersion, 0, &cbDesc, 0, 0, 0, 0);
if (SUCCEEDED(hr))
{
    WCHAR *pszVersion = new WCHAR[cbVersion/2];  // 와이드 문자 = 2 바이트.
    WCHAR *pszDesc = new WCHAR[cbDesc/2];
    if (pszVersion && pszDesc)
    {
        hr = pCompress->GetInfo(pszVersion, 0, pszDesc, 0, 0, 0, 0, 0);
    }
    delete [] pszVersion;
    delete [] pszDesc;
}

캐릭터 라인은 와이드 캐릭터 라인이며, 돌려받는 사이즈는 문자수는 아니고 바이트인 것에 주의. 또, 어느 쪽인지 또는 양쪽 모두의 캐릭터 라인의 길이가 제로의 경우가 있다.

pCapabilities 인수는, 어느 압축 프로퍼티가 지원 되고 있는지, 또 어느 IAMVideoCompression 메서드가 지원 되고 있는지를 나타내는 플래그세트를 받는다. 예를 들어,CompressionCaps_CanKeyFrame 플래그가 돌려주어졌을 경우, 필터는 IAMVideoCompression::get_KeyFrameRateIAMVideoCompression::put_KeyFrameRate 메서드를 지원 한다.

나머지의 인수는, 압축 프로퍼티의 기정값을 받는다. pCapabilities 에 돌려받는 플래그에 의해 결정되는, 지원 되지 않는 프로퍼티에 대해서는, 올바르지 않을까 의미가 없는 경우가 있기 (위해)때문에, 대응하는 기정값은 무시해야 한다.

참조

↑TOP