DirectShow

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]- GraphStudio – open source GraphEdit project
- DirectX Media Objects
- DirectX plugins
- DirectX Video Acceleration
- DirectShowPlayer
Referencias
[editar]- «MSDN DirectShow documentation». Consultado el 7 de julio de 2007.
- Pesce, Mark D. (2003). Programming Microsoft DirectShow for Digital Video and Television. Microsoft Press. ISBN 0-7356-1821-6. (Sample Chapter)
Notas
[editar]- ↑ 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.
- ↑ «DirectShow documentation». MSDN Library. Microsoft. 1 de enero de 2006. Consultado el 1 de enero de 2006.
- ↑ «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]- DirectShow on MSDN (documentación oficial)
- J. River DirectShow Playback Guide (tutorial sobre DirectShow con información general)
- VideoLab (librería de procesamiento de vídeo con soporte para DirectShow (gratis para propósitos no comerciales))