From: Jean-Baptiste Kempf Date: Mon, 9 Aug 2010 18:35:01 +0000 (+0200) Subject: DShow: small fixes and cosmetics X-Git-Tag: 1.2.0-pre1~5503 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=47d7ace68c5ed8a0491f40e3d755e2f4756b870f;p=vlc DShow: small fixes and cosmetics --- diff --git a/modules/access/dshow/dshow.cpp b/modules/access/dshow/dshow.cpp index b61769ef5a..4652044cca 100644 --- a/modules/access/dshow/dshow.cpp +++ b/modules/access/dshow/dshow.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - * dshow.cpp : DirectShow access module for vlc + * dshow.cpp : DirectShow access and access_demux module for vlc ***************************************************************************** * Copyright (C) 2002-2004, 2006, 2008, 2010 the VideoLAN team * $Id$ @@ -36,11 +36,11 @@ #include #include -#include #include #include -#include -#include + +#include /* dialog_Fatal */ +#include /* FromWide */ #include "common.h" #include "filter.h" @@ -80,22 +80,50 @@ static void ConfigTuner( vlc_object_t *, ICaptureGraphBuilder2 *, *****************************************************************************/ static const char *const ppsz_vdev[] = { "", "none" }; static const char *const ppsz_vdev_text[] = { N_("Default"), N_("None") }; + static const char *const ppsz_adev[] = { "", "none" }; static const char *const ppsz_adev_text[] = { N_("Default"), N_("None") }; + static const int pi_tuner_input[] = { 0, 1, 2 }; static const char *const ppsz_tuner_input_text[] = {N_("Default"), N_("Cable"), N_("Antenna")}; + static const int pi_amtuner_mode[] = { AMTUNER_MODE_DEFAULT, - AMTUNER_MODE_TV, - AMTUNER_MODE_FM_RADIO, - AMTUNER_MODE_AM_RADIO, - AMTUNER_MODE_DSS }; + AMTUNER_MODE_TV, + AMTUNER_MODE_FM_RADIO, + AMTUNER_MODE_AM_RADIO, + AMTUNER_MODE_DSS }; static const char *const ppsz_amtuner_mode_text[] = { N_("Default"), N_("TV"), N_("FM radio"), N_("AM radio"), N_("DSS") }; +static const int i_standards_list[] = + { + KS_AnalogVideo_None, + KS_AnalogVideo_NTSC_M, KS_AnalogVideo_NTSC_M_J, KS_AnalogVideo_NTSC_433, + KS_AnalogVideo_PAL_B, KS_AnalogVideo_PAL_D, KS_AnalogVideo_PAL_G, + KS_AnalogVideo_PAL_H, KS_AnalogVideo_PAL_I, KS_AnalogVideo_PAL_M, + KS_AnalogVideo_PAL_N, KS_AnalogVideo_PAL_60, + KS_AnalogVideo_SECAM_B, KS_AnalogVideo_SECAM_D, KS_AnalogVideo_SECAM_G, + KS_AnalogVideo_SECAM_H, KS_AnalogVideo_SECAM_K, KS_AnalogVideo_SECAM_K1, + KS_AnalogVideo_SECAM_L, KS_AnalogVideo_SECAM_L1, + KS_AnalogVideo_PAL_N_COMBO + }; +static const char *const ppsz_standards_list_text[] = + { + N_("Default"), + "NTSC_M", "NTSC_M_J", "NTSC_443", + "PAL_B", "PAL_D", "PAL_G", + "PAL_H", "PAL_I", "PAL_M", + "PAL_N", "PAL_60", + "SECAM_B", "SECAM_D", "SECAM_G", + "SECAM_H", "SECAM_K", "SECAM_K1", + "SECAM_L", "SECAM_L1", + "PAL_N_COMBO" + }; + #define CACHING_TEXT N_("Caching value in ms") #define CACHING_LONGTEXT N_( \ "Caching value for DirectShow streams. " \ @@ -180,31 +208,6 @@ static const char *const ppsz_amtuner_mode_text[] = { N_("Default"), #define AUDIO_BITSPERSAMPLE_LONGTEXT N_( \ "Select audio input format with the given bits/sample (if non 0)" ) -static const int i_standards_list[] = - { - KS_AnalogVideo_None, - KS_AnalogVideo_NTSC_M, KS_AnalogVideo_NTSC_M_J, KS_AnalogVideo_NTSC_433, - KS_AnalogVideo_PAL_B, KS_AnalogVideo_PAL_D, KS_AnalogVideo_PAL_G, - KS_AnalogVideo_PAL_H, KS_AnalogVideo_PAL_I, KS_AnalogVideo_PAL_M, - KS_AnalogVideo_PAL_N, KS_AnalogVideo_PAL_60, - KS_AnalogVideo_SECAM_B, KS_AnalogVideo_SECAM_D, KS_AnalogVideo_SECAM_G, - KS_AnalogVideo_SECAM_H, KS_AnalogVideo_SECAM_K, KS_AnalogVideo_SECAM_K1, - KS_AnalogVideo_SECAM_L, KS_AnalogVideo_SECAM_L1, - KS_AnalogVideo_PAL_N_COMBO - }; -static const char *const ppsz_standards_list_text[] = - { - N_("Default"), - "NTSC_M", "NTSC_M_J", "NTSC_443", - "PAL_B", "PAL_D", "PAL_G", - "PAL_H", "PAL_I", "PAL_M", - "PAL_N", "PAL_60", - "SECAM_B", "SECAM_D", "SECAM_G", - "SECAM_H", "SECAM_K", "SECAM_K1", - "SECAM_L", "SECAM_L1", - "PAL_N_COMBO" - }; - static int CommonOpen ( vlc_object_t *, access_sys_t *, bool ); static void CommonClose( vlc_object_t *, access_sys_t * ); @@ -385,7 +388,6 @@ static void DeleteDirectShowGraph( access_sys_t *p_sys ) static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys, bool b_access_demux ) { - int i; char *psz_val; /* Get/parse options and open device(s) */ @@ -424,15 +426,25 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys, } free( psz_val ); - static struct {const char *psz_size; int i_width; int i_height;} size_table[] = - { { "subqcif", 128, 96 }, { "qsif", 160, 120 }, { "qcif", 176, 144 }, - { "sif", 320, 240 }, { "cif", 352, 288 }, { "d1", 640, 480 }, + /* DShow Size */ + static struct { + const char *psz_size; + int i_width; + int i_height; + } size_table[] = + { { "subqcif", 128, 96 }, + { "qsif", 160, 120 }, + { "qcif", 176, 144 }, + { "sif", 320, 240 }, + { "cif", 352, 288 }, + { "d1", 640, 480 }, { 0, 0, 0 }, }; psz_val = var_CreateGetString( p_this, "dshow-size" ); if( !EMPTY_STR(psz_val) ) { + int i; for( i = 0; size_table[i].psz_size; i++ ) { if( !strcmp( psz_val, size_table[i].psz_size ) ) @@ -455,6 +467,7 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys, } free( psz_val ); + /* Chroma */ psz_val = var_CreateGetString( p_this, "dshow-chroma" ); i_chroma = vlc_fourcc_GetCodecFromString( UNKNOWN_ES, psz_val ); p_sys->b_chroma = i_chroma != 0; @@ -582,7 +595,7 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys, return VLC_EGENERIC ; } - for( i = p_sys->i_crossbar_route_depth-1; i >= 0 ; --i ) + for( int i = p_sys->i_crossbar_route_depth-1; i >= 0 ; --i ) { int i_val = var_GetInteger( p_this, "dshow-video-input" ); if( i_val >= 0 ) @@ -630,7 +643,7 @@ static int CommonOpen( vlc_object_t *p_this, access_sys_t *p_sys, */ if( var_GetBool( p_this, "dshow-config" ) ) { - for( i = p_sys->i_crossbar_route_depth-1; i >= 0 ; --i ) + for( int i = p_sys->i_crossbar_route_depth-1; i >= 0 ; --i ) { IAMCrossbar *pXbar = p_sys->crossbar_routes[i].pXbar; IBaseFilter *p_XF; @@ -659,7 +672,6 @@ static int DemuxOpen( vlc_object_t *p_this ) { demux_t *p_demux = (demux_t *)p_this; access_sys_t *p_sys; - int i; p_sys = (access_sys_t*)calloc( 1, sizeof( access_sys_t ) ); if( !p_sys ) @@ -682,7 +694,7 @@ static int DemuxOpen( vlc_object_t *p_this ) p_demux->info.i_title = 0; p_demux->info.i_seekpoint = 0; - for( i = 0; i < p_sys->i_streams; i++ ) + for( int i = 0; i < p_sys->i_streams; i++ ) { dshow_stream_t *p_stream = p_sys->pp_streams[i]; es_format_t fmt; @@ -1304,8 +1316,8 @@ FindCaptureDevice( vlc_object_t *p_this, string *p_devicename, p_class_enum->Release(); if( p_listdevices ) { - devicelist.sort(); - *p_listdevices = devicelist; + devicelist.sort(); + *p_listdevices = devicelist; } return NULL; } @@ -1520,7 +1532,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter, continue; } pWfx->nSamplesPerSec = val; - + val = i_bitspersample; if( ! val ) { @@ -1532,7 +1544,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter, if( ( !pASCC->BitsPerSampleGranularity && (unsigned int)val != pASCC->MinimumBitsPerSample - && (unsigned int)val != pASCC->MaximumBitsPerSample ) + && (unsigned int)val != pASCC->MaximumBitsPerSample ) || ( pASCC->BitsPerSampleGranularity && ((val % pASCC->BitsPerSampleGranularity) @@ -1707,7 +1719,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter, // return alternative media type AM_MEDIA_TYPE mtr; VIDEOINFOHEADER vh; - + mtr.majortype = MEDIATYPE_Video; mtr.subtype = MEDIASUBTYPE_I420; mtr.bFixedSizeSamples = TRUE; @@ -1716,9 +1728,9 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter, mtr.formattype = FORMAT_VideoInfo; mtr.cbFormat = sizeof(vh); mtr.pbFormat = (BYTE *)&vh; - + memset(&vh, 0, sizeof(vh)); - + vh.bmiHeader.biSize = sizeof(vh.bmiHeader); vh.bmiHeader.biWidth = i_width > 0 ? i_width : ((VIDEOINFOHEADER *)p_mt->pbFormat)->bmiHeader.biWidth; @@ -1730,7 +1742,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, IBaseFilter *p_filter, vh.bmiHeader.biSizeImage = vh.bmiHeader.biWidth * 12 * vh.bmiHeader.biHeight / 8; mtr.lSampleSize = vh.bmiHeader.biSizeImage; - + msg_Dbg( p_this, "EnumDeviceCaps: input pin media: using 'I420' in place of unsupported format 'HCW2'"); if( SUCCEEDED(CopyMediaType(mt+mt_count, &mtr)) ) @@ -1815,7 +1827,6 @@ static block_t *ReadCompressed( access_t *p_access ) static int Demux( demux_t *p_demux ) { access_sys_t *p_sys = (access_sys_t *)p_demux->p_sys; - int i_stream; int i_found_samples; i_found_samples = 0; @@ -1824,7 +1835,7 @@ static int Demux( demux_t *p_demux ) while ( !i_found_samples ) { /* Try to grab samples from all streams */ - for( i_stream = 0; i_stream < p_sys->i_streams; i_stream++ ) + for( int i_stream = 0; i_stream < p_sys->i_streams; i_stream++ ) { dshow_stream_t *p_stream = p_sys->pp_streams[i_stream]; if( p_stream->p_capture_filter && @@ -1848,7 +1859,7 @@ static int Demux( demux_t *p_demux ) vlc_mutex_unlock( &p_sys->lock ); - for ( i_stream = 0; i_stream < p_sys->i_streams; i_stream++ ) + for ( int i_stream = 0; i_stream < p_sys->i_streams; i_stream++ ) { int i_samples; dshow_stream_t *p_stream = p_sys->pp_streams[i_stream]; diff --git a/modules/access/dshow/filter.cpp b/modules/access/dshow/filter.cpp index 68b24d4c3b..d895b4b085 100644 --- a/modules/access/dshow/filter.cpp +++ b/modules/access/dshow/filter.cpp @@ -138,6 +138,7 @@ const GUID MEDIASUBTYPE_IEEE_FLOAT = {0x00000003, 0x0000, 0x0010, {0x80, 0x00, 0 const GUID MEDIASUBTYPE_dvsd = {0x64737664, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; const GUID MEDIASUBTYPE_dvhd = {0x64687664, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; const GUID MEDIASUBTYPE_dvsl = {0x6c737664, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; +/* What about Pro formats, like 'dv25', 'dv50' and 'dvh1' */ /* MPEG2 formats */ const GUID MEDIASUBTYPE_MPEG2_VIDEO = {0xe06d8026, 0xdb46, 0x11cf, {0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea}};