[FFmpeg-devel] [PATCH][GSoC] dshow add support for saving and loading of capture devices

Roger Pack rogerdpack2 at gmail.com
Wed Apr 22 16:44:20 CEST 2015

On 4/22/15, Máté Sebők <smfinc.org at gmail.com> wrote:
> Indeed, sorry i've forgotten to change the Eclipse' EOL to unix-- now
> fixed.
> Error handler fixed.

Thank you it's very close.
A few more nits and we'll be there.

You have
+        if (ofile_stream)
+            IStream_Release(ofile_stream);

in there twice.  In reality even a "normal flow" goes through the
error block, so you'll only want/need to release it in the error block
(it's being released twice currently).  As is it seg faults...

Also in this block:

        hr = OleSaveToStream(pers_stream, ofile_stream);
        if (hr != S_OK) {
            av_log(avctx, AV_LOG_ERROR, "Could not save capture filter \n");
            goto error;

if it calls that "goto error" it will end up never releasing the
IpersistStream object.  So basically for the pers_stream you're going
to want to have two of them (like you did with the other) and release
them both in the error block.  I'll admit the concept of a cleanup
block kind of confused me at first...but it's how the code was
initially written so I've kept using it, and it works out OK.

Besides that LGTM.

> Parameter names changed to audio(/video)_device_load(/save) as I think the
> to_file and from_file is evident and is specified in the help.
> About the "fake" input:  by loading a device filter from file, in the
> dshow_open_device() it loads the device object from file instead of
> searching it by name. So as long as the dshow_open_device() get called it
> will load the device -- however to get called it is required to have a not
> NULL input name .. aka any fake text would do the trick (eg: -i video=" " )
> If you have better suggestion for the description, please tell me.
> Here is the fixed patch.

More information about the ffmpeg-devel mailing list