Browse Source

dshow: call CoUninitialize() on dshow_read_close()

Every call to CoInitialize should have a matching CoUnititalize.

Based on patch by Don Moir <donmoir@comcast.net>.
tags/n1.1
Ramiro Polla 13 years ago
parent
commit
83a9f29f60
1 changed files with 7 additions and 6 deletions
  1. +7
    -6
      libavdevice/dshow.c

+ 7
- 6
libavdevice/dshow.c View File

@@ -181,6 +181,8 @@ dshow_read_close(AVFormatContext *s)
pktl = next;
}

CoUninitialize();

return 0;
}

@@ -793,7 +795,6 @@ dshow_add_device(AVFormatContext *avctx,
if (codec->codec_id == AV_CODEC_ID_NONE) {
av_log(avctx, AV_LOG_ERROR, "Unknown compression type. "
"Please report verbose (-v 9) debug information.\n");
dshow_read_close(avctx);
return AVERROR_PATCHWELCOME;
}
codec->bits_per_coded_sample = bih->biBitCount;
@@ -883,6 +884,8 @@ static int dshow_read_header(AVFormatContext *avctx)
int ret = AVERROR(EIO);
int r;

CoInitialize(0);

if (!ctx->list_devices && !parse_device_name(avctx)) {
av_log(avctx, AV_LOG_ERROR, "Malformed dshow input string.\n");
goto error;
@@ -906,8 +909,6 @@ static int dshow_read_header(AVFormatContext *avctx)
}
}

CoInitialize(0);

r = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
&IID_IGraphBuilder, (void **) &graph);
if (r != S_OK) {
@@ -1007,12 +1008,12 @@ static int dshow_read_header(AVFormatContext *avctx)

error:

if (ret < 0)
dshow_read_close(avctx);

if (devenum)
ICreateDevEnum_Release(devenum);

if (ret < 0)
dshow_read_close(avctx);

return ret;
}



Loading…
Cancel
Save