다음을 통해 공유


숫자로 입력을 식별하려면

[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

기록기에 전달하는 모든 샘플은 입력 번호와 연결되어야 합니다. 각 입력 번호는 작성기가 파일을 작성하는 데 사용하는 프로필의 하나 이상의 스트림에 해당합니다. 프로필에서 미디어 원본은 연결 이름으로 식별됩니다. 작성기에 대한 프로필을 설정할 때 작성기는 입력 번호를 각 연결 이름과 연결합니다. 작성기에 샘플을 전달하려면 먼저 각 입력이 예상하는 데이터를 결정해야 합니다. 입력이 프로필의 스트림과 동일한 순서라고 가정할 수 없습니다. 따라서 입력을 스트림과 일치시킬 수 있는 유일한 방법은 입력의 연결 이름을 스트림의 연결 이름과 비교하는 것입니다.

로드된 프로필의 연결 이름 및 해당 입력 번호를 식별하려면 다음 단계를 수행합니다.

  1. 작성기 개체를 만들고 사용할 프로필을 설정합니다. 작성기에서 프로필을 설정하는 방법에 대한 자세한 내용은 작성기와 함께 프로필을 사용하려면을 참조하세요. 프로필의 스트림에 사용되는 연결 이름을 알고 있어야 합니다. 각 스트림에 대한 스트림 구성 개체를 가져오고 IWMStreamConfig::GetConnectionName을 호출하여 프로필 내에서 연결 이름을 가져올 수 있습니다. 프로필 및 스트림 구성 개체에 대한 자세한 내용은 프로필 작업을 참조하세요.
  2. IWMWriter::GetInputCount를 호출하여 총 입력 수를 검색합니다.
  3. 각 입력에 대해 다음 단계를 수행하여 모든 입력을 반복합니다.

다음 예제 코드는 각 입력에 대한 연결 이름을 표시합니다. 이 코드를 사용하는 방법에 대한 자세한 내용은 코드 예제 사용을 참조하세요.

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;
}

IWMWriter 인터페이스

ASF 파일 작성