diff --git a/libavdevice/vfwcap.c b/libavdevice/vfwcap.c index 4a027225bd..5dee0e0140 100644 --- a/libavdevice/vfwcap.c +++ b/libavdevice/vfwcap.c @@ -201,7 +201,22 @@ fail: return FALSE; } -static int vfw_read_close(AVFormatContext *s); +static int vfw_read_close(AVFormatContext *s) +{ + struct vfw_ctx *ctx = s->priv_data; + + if(ctx->hwnd) { + SendMessage(ctx->hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); + SendMessage(ctx->hwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); + DestroyWindow(ctx->hwnd); + } + if(ctx->mutex) + CloseHandle(ctx->mutex); + if(ctx->event) + CloseHandle(ctx->event); + + return 0; +} static int vfw_read_header(AVFormatContext *s, AVFormatParameters *ap) { @@ -402,23 +417,6 @@ static int vfw_read_packet(AVFormatContext *s, AVPacket *pkt) return pkt->size; } -static int vfw_read_close(AVFormatContext *s) -{ - struct vfw_ctx *ctx = s->priv_data; - - if(ctx->hwnd) { - SendMessage(ctx->hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); - SendMessage(ctx->hwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); - DestroyWindow(ctx->hwnd); - } - if(ctx->mutex) - CloseHandle(ctx->mutex); - if(ctx->event) - CloseHandle(ctx->event); - - return 0; -} - AVInputFormat vfwcap_demuxer = { "vfwcap", NULL_IF_CONFIG_SMALL("VFW video capture"),