Identifikace vstupů podle čísla
[Funkce přidružená k této stránce, Windows Media Format 11 SDK, je starší funkce. Byla nahrazena Čtečkou Zdrojů a Zapisovačem Výstupu. Čtečka zdroje a zapisovač přijímače jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal Source Reader a Sink Writer místo Windows Media Format 11 SDK, pokud možno. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]
Každá ukázka, kterou předáte autorovi, musí být přidružena k číslu vstupu. Každé vstupní číslo odpovídá jednomu nebo více datovým proudům v profilu, který zapisovač používá k zápisu souboru. V profilu jsou zdroje médií identifikovány názvem připojení. Při nastavování profilu pro zapisovač přidruží zapisovač vstupní číslo ke každému názvu připojení. Než můžete předat vzorky zapisovači, musíte určit, jaký typ dat každý vstup očekává. Nemůžete předpokládat, že vstupy budou ve stejném pořadí jako datové proudy v profilu, i když to často bývá. Jediným spolehlivým způsobem, jak spárovat vstupy se streamy, je porovnat název připojení vstupu s názvem připojení datového proudu.
Pokud chcete identifikovat názvy připojení a odpovídající vstupní čísla pro načtený profil, proveďte následující kroky:
- Vytvořte objekt zapisovače a nastavte profil, který se má použít. Další informace o nastavení profilů v textovém editoru naleznete v tématu Používání profilů s textovým editorem. Měli byste znát názvy připojení používané pro datové proudy v profilu. Název připojení můžete získat z profilu získáním objektu konfigurace datového proudu pro každý datový proud a voláním IWMStreamConfig::GetConnectionName. Další informace o profilech a objektech konfigurace datových proudů naleznete v tématu Práce s profily.
- Načtení celkového počtu vstupů voláním IWMWriter::GetInputCount.
- Projděte všechny vstupy a pro každý z nich proveďte následující kroky.
- Načíst rozhraní IWMInputMediaProps pro vstup voláním IWMWriter::GetInputProps.
- Načtěte název připojení odpovídající vstupnímu číslu voláním IWMInputMediaProps::GetConnectionName. Po zadání názvu připojení znáte datové proudy, které jsou přidružené ke vstupním číslům přiřazeným zapisovačem.
Následující příklad kódu zobrazí název připojení pro každý vstup. Další informace o použití tohoto kódu naleznete v tématu Použití příkladů kódu.
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;
}
Související témata