DirectShow

Graph Edit – Ejemplo de un grafo de DirectShow creado con GraphEdit.[cita requerida]

DirectShow (También abreviado como DS o DShow), en sus inicios Quartz, es un framework multimedia y una API creada por Microsoft para desarrolladores de software con el fin de desempeñar numerosas operaciones con ficheros multimedia y streams. Se creó para reemplazar la antigua tecnología de Microsoft Video for Windows.[1]​ Basado en el framework Microsoft Windows Component Object Model (COM), DirectShow proporciona una interfaz común para la gestión multimedia en diferentes lenguajes de programación, y es un framework con arquitectura basada en filtros que puede reproducir en pantalla y grabar ficheros de video bajo demanda del usuario o el desarrollador. Las herramientas de desarrollo de DirectShow y la documentación fue originalmente distribuida como parte de DirectX SDK. Actualmente, se distribuyen como parte de Windows SDK (antiguamente conocido como Platform SDK).[2]

Entre los contrincantes de DirectShow en otras plataformas están el framework QuickTime de Apple y varios frameworks multimedia de Linux como GStreamer o Xine. Microsoft planea, gradualmente, reemplazar completamente DirectShow por Media Foundation en futuras versiones de Windows.[3]​ Las aplicaciones para Windows Vista y Windows 7 usan Media Foundation en lugar de DirectShow para algunas tareas relacionadas con multimedia.

Ejemplo de código fuente[editar]

El siguiente ejemplo muestra cómo crear una aplicación sencilla que reproduzca un fichero de video visualizándolo por pantalla:

#include "stdafx.h" #include <dshow.h> int _tmain(int argc, _TCHAR* argv[]) {    IGraphBuilder *pGraph = NULL;    IMediaControl *pControl = NULL;    IMediaEvent   *pEvent = NULL;    IMediaSeeking *pSeeking = NULL;     // Inicializa la biblioteca COM.    HRESULT hr = CoInitialize(NULL);    if (FAILED(hr))    {        printf("ERROR - No se ha podido inicializar la biblioteca COM");        system("pause");        return -1;    }     // Crea el gestor de grafos y filtros y obtiene las interfaces de control.    hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,                         IID_IGraphBuilder, (void **)&pGraph);    if (FAILED(hr))    {        printf("ERROR - No se ha podido crear el gestor de grafos y filtros.");        system("pause");        return -1;    }     hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);    hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);    hr = pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeeking);     // Construye el grafo DirectShow    hr = pGraph->RenderFile(L"D:\\Videos\\costaColorW.mpg", NULL);    if (SUCCEEDED(hr))    {        // Inicia la reproducción de grafo        hr = pControl->Run();        if (SUCCEEDED(hr))        {            // Opcional: Configura la reproducción para que se detenga a los 10 segundos            LONGLONG pCurrent = 0, pStop = 100000000;            hr = pSeeking->SetPositions(&pCurrent, AM_SEEKING_AbsolutePositioning, &pStop, AM_SEEKING_AbsolutePositioning);            if (FAILED(hr)) {                printf("ERROR - SetPositions ha fallado.");            }             // Espera a que la reproducción finalice.            long evCode;            pEvent->WaitForCompletion(INFINITE, &evCode);            // Nota: No utilice INFINITE en una aplicación real, puede provocar            // el bloqueo indefinido.        }    } else        printf("ERROR - El fichero no existe o no hay codec para reproducirlo.");     // Ejecuta el comando 'pause' una vez finalizada la reproducción.    system("pause");     pControl->Release();    pEvent->Release();    pSeeking->Release();    pGraph->Release();    CoUninitialize();     return 0; } 

Véase también[editar]

Referencias[editar]

Notas[editar]

  1. Blome, Michael; Wasson, Mike (julio de 2002). «Core Media Technology in Windows XP Empowers You to Create Custom Audio/Video Processing Components». MSDN Magazine (Microsoft). Consultado el 2 de abril de 2007. 
  2. «DirectShow documentation». MSDN Library. Microsoft. 1 de enero de 2006. Consultado el 1 de enero de 2006. 
  3. «Migrating from DirectShow to Media Foundation». MSDN Library. Microsoft. julio de 2006. Consultado el 17 de agosto de 2010. 

Enlaces externos (en inglés)[editar]