Compartir a través de


Para identificar entradas por número

[La característica asociada a esta página, WINDOWS Media Format 11 SDK, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. Lector de origen y escritor receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector fuente y escritor receptor en lugar del SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Cada ejemplo que pase al escritor debe estar asociado a un número de entrada. Cada número de entrada corresponde a una o varias secuencias del perfil que el escritor está usando para escribir el archivo. En un perfil, los orígenes multimedia se identifican por un nombre de conexión. El escritor asocia un número de entrada a cada nombre de conexión al establecer el perfil para el escritor. Para poder pasar ejemplos al escritor, debe determinar qué datos espera cada entrada. No se puede suponer que las entradas estarán en el mismo orden que las secuencias de un perfil, incluso si esto suele ser el caso. Por lo tanto, la única manera confiable de hacer coincidir las entradas con secuencias es comparar el nombre de conexión de la entrada con el nombre de conexión de la secuencia.

Para identificar los nombres de conexión y los números de entrada correspondientes para un perfil cargado, realice los pasos siguientes:

  1. Cree un objeto writer y establezca un perfil que se va a usar. Para obtener más información sobre cómo establecer perfiles en el escritor, vea Para usar perfiles con el escritor. Debe conocer los nombres de conexión usados para las secuencias del perfil. Para obtener el nombre de conexión desde el perfil, obtenga el objeto de configuración de secuencia para cada secuencia y llame a IWMStreamConfig::GetConnectionName. Para obtener más información sobre los perfiles y los objetos de configuración de flujos, vea Trabajar con perfiles.
  2. Recupere el número total de entradas llamando a IWMWriter::GetInputCount.
  3. Recorra en bucle todas las entradas, realizando los pasos siguientes para cada una.

En el código de ejemplo siguiente se muestra el nombre de conexión de cada entrada. Para obtener más información sobre el uso de este código, vea Usar los ejemplos de código.

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 (Interfaz)

Escritura de archivos ASF