숫자로 입력을 식별하려면
[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
기록기에 전달하는 모든 샘플은 입력 번호와 연결되어야 합니다. 각 입력 번호는 작성기가 파일을 작성하는 데 사용하는 프로필의 하나 이상의 스트림에 해당합니다. 프로필에서 미디어 원본은 연결 이름으로 식별됩니다. 작성기에 대한 프로필을 설정할 때 작성기는 입력 번호를 각 연결 이름과 연결합니다. 작성기에 샘플을 전달하려면 먼저 각 입력이 예상하는 데이터를 결정해야 합니다. 입력이 프로필의 스트림과 동일한 순서라고 가정할 수 없습니다. 따라서 입력을 스트림과 일치시킬 수 있는 유일한 방법은 입력의 연결 이름을 스트림의 연결 이름과 비교하는 것입니다.
로드된 프로필의 연결 이름 및 해당 입력 번호를 식별하려면 다음 단계를 수행합니다.
- 작성기 개체를 만들고 사용할 프로필을 설정합니다. 작성기에서 프로필을 설정하는 방법에 대한 자세한 내용은 작성기와 함께 프로필을 사용하려면을 참조하세요. 프로필의 스트림에 사용되는 연결 이름을 알고 있어야 합니다. 각 스트림에 대한 스트림 구성 개체를 가져오고 IWMStreamConfig::GetConnectionName을 호출하여 프로필 내에서 연결 이름을 가져올 수 있습니다. 프로필 및 스트림 구성 개체에 대한 자세한 내용은 프로필 작업을 참조하세요.
- IWMWriter::GetInputCount를 호출하여 총 입력 수를 검색합니다.
- 각 입력에 대해 다음 단계를 수행하여 모든 입력을 반복합니다.
- IWMWriter::GetInputProps를 호출하여 입력에 대한 IWMInputMediaProps 인터페이스를 검색합니다.
- IWMInputMediaProps::GetConnectionName을 호출하여 입력 번호에 해당하는 연결 이름을 검색합니다. 연결 이름이 있으면 기록기에서 할당한 입력 번호와 연결된 스트림을 알 수 있습니다.
다음 예제 코드는 각 입력에 대한 연결 이름을 표시합니다. 이 코드를 사용하는 방법에 대한 자세한 내용은 코드 예제 사용을 참조하세요.
HRESULT GetNamesForInputs(IWMWriter* pWriter)
{
DWORD cInputs = 0;
HRESULT hr = S_OK;
WCHAR* pwszName = NULL;
WORD cchName = 0;
IWMInputMediaProps* pProps = NULL;
// Get the total number of inputs for the file.
hr = pWriter->GetInputCount(&cInputs);
GOTO_EXIT_IF_FAILED(hr);
// Loop through all supported inputs.
for (DWORD inputIndex = 0; inputIndex < cInputs; inputIndex++)
{
// Get the input properties for the input.
hr = pWriter->GetInputProps(inputIndex, &pProps);
GOTO_EXIT_IF_FAILED(hr);
// Get the size of the connection name.
hr = pProps->GetConnectionName(0, &cchName);
GOTO_EXIT_IF_FAILED(hr);
if (cchName > 0)
{
// Allocate memory for the connection name.
pwszName = new WCHAR[cchName];
if (wszName == NULL)
{
hr = E_OUTOFMEMORY;
goto Exit;
}
// Get the connection name.
hr = pProps->GetConnectionName(pwszName, &cchName);
GOTO_EXIT_IF_FAILED(hr);
// Display the name.
printf("Input # %d = %S\n", pwszName);
} // end if
// Clean up for next iteration.
SAFE_ARRAY_DELETE(pwszName);
SAFE_RELEASE(pProps);
} // end for inputIndex
Exit:
SAFE_ARRAY_DELETE(pwszName);
SAFE_RELEASE(pProps);
return hr;
}
관련 항목