Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Zastąpił go Source Reader oraz Sink Writer. Czytnika źródła i Zapisywacza ujścia zostały zoptymalizowane pod kątem Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał Source Reader i Sink Writer zamiast Windows Media Format 11 SDK, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Każda próbka przekazywana do pisarza musi być skojarzona z numerem wejściowym. Każda liczba wejściowa odpowiada jednemu lub większej liczbie strumieni w profilu, których używa program zapisujący do zapisu pliku. W profilu źródła multimediów są identyfikowane przez nazwę połączenia. Pisarz kojarzy numer wejściowy z każdą nazwą połączenia, gdy ustawiasz profil dla pisarza. Zanim będzie można przekazać przykłady do modułu zapisywania, musisz określić, jakie dane wejściowe oczekują. Nie można założyć, że dane wejściowe będą w takiej samej kolejności jak strumienie w profilu, nawet jeśli często tak jest. W związku z tym jedynym niezawodnym sposobem dopasowania danych wejściowych ze strumieniami jest porównanie nazwy połączenia danych wejściowych z nazwą połączenia strumienia.
Aby zidentyfikować nazwy połączeń i odpowiadające im numery wejściowe dla załadowanego profilu, wykonaj następujące kroki:
- Utwórz obiekt składnika zapisywania i ustaw profil do użycia. Aby uzyskać więcej informacji na temat ustawiania profilów w programie Writer, zobacz To Use Profiles with the Writer. Powinieneś znać nazwy połączeń używane dla strumieni w profilu. Nazwę połączenia można uzyskać z poziomu profilu, uzyskując obiekt konfiguracji strumienia dla każdego strumienia i wywołując IWMStreamConfig::GetConnectionName. Aby uzyskać więcej informacji na temat profilów i obiektów konfiguracji strumienia, zobacz Praca z profilami.
- Pobierz łączną liczbę danych wejściowych, wywołując IWMWriter::GetInputCount.
- Przeiteruj przez wszystkie dane wejściowe, wykonując następujące kroki dla każdego z nich.
- Pobierz interfejs IWMInputMediaProps dla danych wejściowych, wywołując IWMWriter::GetInputProps.
- Pobierz nazwę połączenia odpowiadającą numerowi wejściowemu, wywołując IWMInputMediaProps::GetConnectionName. Gdy masz nazwę połączenia, znasz strumienie skojarzone z numerami wejściowymi przypisanymi przez zapisującego.
Poniższy przykładowy kod wyświetla nazwę połączenia dla poszczególnych danych wejściowych. Aby uzyskać więcej informacji na temat korzystania z tego kodu, zobacz Using the Code Examples.
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;
}
Tematy pokrewne