[FFmpeg-devel] [PATCH 2/2] dshow: Make dshow device buildable on Cygwin
Roger Pack
rogerdpack2 at gmail.com
Sat May 28 08:40:51 CEST 2016
which compiler (mingw-w64 I presume?) are you using here?
On 5/6/16, Moriyoshi Koizumi <mozo at mozo.jp> wrote:
> From: Moriyoshi koizumi <mozo at mozo.jp>
>
> wchar_t is not always the same thing as WCHAR.
>
> Signed-off-by: Moriyoshi koizumi <mozo at mozo.jp>
> ---
> libavdevice/dshow.c | 6 +++---
> libavdevice/dshow_capture.h | 10 +++++-----
> libavdevice/dshow_filter.c | 16 ++++++++--------
> libavdevice/dshow_pin.c | 10 +++++-----
> 4 files changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/libavdevice/dshow.c b/libavdevice/dshow.c
> index 678861d..432b643 100644
> --- a/libavdevice/dshow.c
> +++ b/libavdevice/dshow.c
> @@ -129,7 +129,7 @@ dshow_read_close(AVFormatContext *s)
> return 0;
> }
>
> -static char *dup_wchar_to_utf8(wchar_t *w)
> +static char *dup_wchar_to_utf8(WCHAR *w)
> {
> char *s = NULL;
> int l = WideCharToMultiByte(CP_UTF8, 0, w, -1, 0, 0, 0, 0);
> @@ -599,7 +599,7 @@ dshow_cycle_pins(AVFormatContext *avctx, enum
> dshowDeviceType devtype,
> GUID category;
> DWORD r2;
> char *name_buf = NULL;
> - wchar_t *pin_id = NULL;
> + WCHAR *pin_id = NULL;
> char *pin_buf = NULL;
> char *desired_pin_name = devtype == VideoDevice ?
> ctx->video_pin_name : ctx->audio_pin_name;
>
> @@ -734,7 +734,7 @@ dshow_open_device(AVFormatContext *avctx, ICreateDevEnum
> *devenum,
> IStream *ofile_stream = NULL;
> IPersistStream *pers_stream = NULL;
>
> - const wchar_t *filter_name[2] = { L"Audio capture filter", L"Video
> capture filter" };
> + const WCHAR *filter_name[2] = { L"Audio capture filter", L"Video
> capture filter" };
>
>
> if ( ((ctx->audio_filter_load_file) &&
> (strlen(ctx->audio_filter_load_file)>0) && (sourcetype ==
> AudioSourceDevice)) ||
> diff --git a/libavdevice/dshow_capture.h b/libavdevice/dshow_capture.h
> index f26eaf9..860b782 100644
> --- a/libavdevice/dshow_capture.h
> +++ b/libavdevice/dshow_capture.h
> @@ -176,7 +176,7 @@ long WINAPI libAVPin_ConnectedTo
> (libAVPin *, IPin **);
> long WINAPI libAVPin_ConnectionMediaType (libAVPin *,
> AM_MEDIA_TYPE *);
> long WINAPI libAVPin_QueryPinInfo (libAVPin *, PIN_INFO
> *);
> long WINAPI libAVPin_QueryDirection (libAVPin *,
> PIN_DIRECTION *);
> -long WINAPI libAVPin_QueryId (libAVPin *, wchar_t
> **);
> +long WINAPI libAVPin_QueryId (libAVPin *, WCHAR
> **);
> long WINAPI libAVPin_QueryAccept (libAVPin *, const
> AM_MEDIA_TYPE *);
> long WINAPI libAVPin_EnumMediaTypes (libAVPin *,
> IEnumMediaTypes **);
> long WINAPI libAVPin_QueryInternalConnections(libAVPin *, IPin **,
> unsigned long *);
> @@ -249,7 +249,7 @@ libAVEnumMediaTypes *libAVEnumMediaTypes_Create(const
> AM_MEDIA_TYPE *type);
> struct libAVFilter {
> IBaseFilterVtbl *vtbl;
> long ref;
> - const wchar_t *name;
> + const WCHAR *name;
> libAVPin *pin;
> FILTER_INFO info;
> FILTER_STATE state;
> @@ -272,10 +272,10 @@ long WINAPI libAVFilter_GetState
> (libAVFilter *, DWORD, FILTER_ST
> long WINAPI libAVFilter_SetSyncSource (libAVFilter *,
> IReferenceClock *);
> long WINAPI libAVFilter_GetSyncSource (libAVFilter *,
> IReferenceClock **);
> long WINAPI libAVFilter_EnumPins (libAVFilter *, IEnumPins
> **);
> -long WINAPI libAVFilter_FindPin (libAVFilter *, const
> wchar_t *, IPin **);
> +long WINAPI libAVFilter_FindPin (libAVFilter *, const WCHAR
> *, IPin **);
> long WINAPI libAVFilter_QueryFilterInfo(libAVFilter *, FILTER_INFO
> *);
> -long WINAPI libAVFilter_JoinFilterGraph(libAVFilter *,
> IFilterGraph *, const wchar_t *);
> -long WINAPI libAVFilter_QueryVendorInfo(libAVFilter *, wchar_t
> **);
> +long WINAPI libAVFilter_JoinFilterGraph(libAVFilter *,
> IFilterGraph *, const WCHAR *);
> +long WINAPI libAVFilter_QueryVendorInfo(libAVFilter *, WCHAR **);
>
> void libAVFilter_Destroy(libAVFilter *);
> libAVFilter *libAVFilter_Create (void *, void *, enum
> dshowDeviceType);
> diff --git a/libavdevice/dshow_filter.c b/libavdevice/dshow_filter.c
> index 7360adc..3ba3871 100644
> --- a/libavdevice/dshow_filter.c
> +++ b/libavdevice/dshow_filter.c
> @@ -20,6 +20,8 @@
> */
>
> #include "dshow_capture.h"
> +#include <shlwapi.h>
> +#include <strsafe.h>
>
> DECLARE_QUERYINTERFACE(libAVFilter,
> { {&IID_IUnknown,0}, {&IID_IBaseFilter,0} })
> @@ -108,14 +110,14 @@ libAVFilter_EnumPins(libAVFilter *this, IEnumPins
> **enumpin)
> return S_OK;
> }
> long WINAPI
> -libAVFilter_FindPin(libAVFilter *this, const wchar_t *id, IPin **pin)
> +libAVFilter_FindPin(libAVFilter *this, const WCHAR *id, IPin **pin)
> {
> libAVPin *found = NULL;
> dshowdebug("libAVFilter_FindPin(%p)\n", this);
>
> if (!id || !pin)
> return E_POINTER;
> - if (!wcscmp(id, L"In")) {
> + if (!StrCmpW(id, L"In")) {
> found = this->pin;
> libAVPin_AddRef(found);
> }
> @@ -140,26 +142,24 @@ libAVFilter_QueryFilterInfo(libAVFilter *this,
> FILTER_INFO *info)
> }
> long WINAPI
> libAVFilter_JoinFilterGraph(libAVFilter *this, IFilterGraph *graph,
> - const wchar_t *name)
> + const WCHAR *name)
> {
> dshowdebug("libAVFilter_JoinFilterGraph(%p)\n", this);
>
> this->info.pGraph = graph;
> if (name)
> - wcscpy(this->info.achName, name);
> + StringCchCopyW(this->info.achName, MAX_FILTER_NAME, name);
>
> return S_OK;
> }
> long WINAPI
> -libAVFilter_QueryVendorInfo(libAVFilter *this, wchar_t **info)
> +libAVFilter_QueryVendorInfo(libAVFilter *this, WCHAR **info)
> {
> dshowdebug("libAVFilter_QueryVendorInfo(%p)\n", this);
>
> if (!info)
> return E_POINTER;
> - *info = wcsdup(L"libAV");
> -
> - return S_OK;
> + return SHStrDupW(L"libAV", info);
> }
>
> static int
> diff --git a/libavdevice/dshow_pin.c b/libavdevice/dshow_pin.c
> index 664246d..73e3887 100644
> --- a/libavdevice/dshow_pin.c
> +++ b/libavdevice/dshow_pin.c
> @@ -21,6 +21,8 @@
>
> #include "dshow_capture.h"
>
> +#include <shlwapi.h>
> +#include <strsafe.h>
> #include <stddef.h>
> #define imemoffset offsetof(libAVPin, imemvtbl)
>
> @@ -117,7 +119,7 @@ libAVPin_QueryPinInfo(libAVPin *this, PIN_INFO *info)
>
> info->pFilter = (IBaseFilter *) this->filter;
> info->dir = PINDIR_INPUT;
> - wcscpy(info->achName, L"Capture");
> + StringCchCopyW(info->achName, MAX_FILTER_NAME, L"Capture");
>
> return S_OK;
> }
> @@ -131,16 +133,14 @@ libAVPin_QueryDirection(libAVPin *this, PIN_DIRECTION
> *dir)
> return S_OK;
> }
> long WINAPI
> -libAVPin_QueryId(libAVPin *this, wchar_t **id)
> +libAVPin_QueryId(libAVPin *this, WCHAR **id)
> {
> dshowdebug("libAVPin_QueryId(%p)\n", this);
>
> if (!id)
> return E_POINTER;
>
> - *id = wcsdup(L"libAV Pin");
> -
> - return S_OK;
> + return SHStrDupW(L"libAV Pin", id);
> }
> long WINAPI
> libAVPin_QueryAccept(libAVPin *this, const AM_MEDIA_TYPE *type)
> --
> 2.8.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list