Multimedia dedicated weblog.

MONOGRAM Frame Grabber v1.0.0.1

December 16th, 2007 Posted in Free Software

Ever since there has been ffdshow I have always liked its frame grabbing features. But few months ago I have found out that there is a feature still missing - the possibility to grab raw YUV sequences and images. Most people may never need it but once you start developing video codecs you’re gonna need to use YUV sequences.

Grabber features:

  • Can grab all frames, single frame, multiple frames (defined by range) or grab frames periodically
  • Supports YV12, I420, UYVY, YUY2, RGB-32 color spaces
  • Supports BMP, JPG, PNG picture formats
  • Can create raw YUV (4:2:0) frames and sequences
  • Customzabile filename prefix ad suffix
  • Interactive property page

Frame Grab

This one is free for non-commercial use. So if you want to use it in a commercial product, drop me a line.

You can download binary here : mmgrab.ax (140 KB)

Igor

  1. 24 Responses to “MONOGRAM Frame Grabber v1.0.0.1”

  2. By rajesh on Feb 19, 2008

    how can i used your filters commercially

  3. By Igor Janos on Feb 20, 2008

    This depends. Try to tell me what kind of project are you working on and what filters you are interested in. You can use our forum to drop me a private message.

  4. By Chal Adiera on Apr 23, 2008

    I want make filter to decrypt encrypted video file before rendering and play. it is suitable to use your filter.

    tq

  5. By Igor Janos on Apr 23, 2008

    That depends on the way the video is encrypted. If the encryption applies to decoded video frames you might try it. However I’m not sure if I’m able to help you much with this issue.

    Igor

  6. By hatweek on Apr 29, 2008

    I am new to DirectShow development
    I have to develop an application to grab frames from a cam and then process them,
    I want to able to tack a frame every 100 ms(and other intervals) (if the frame isn’t in Grayscale 8bits I have to convert it to Grayscale 8bits) and process the frame bytes.
    My questions Is
    Is Directshow is the best solution to do what I need,
    if so what is the best way to do it
    if no what is the best solution
    Thank you in advance
    Best regards

  7. By Igor Janos on Apr 29, 2008

    You can do this easily with ffdshow filter. It is free and contains lot of image processing algorithms. One of them is also color saturation. Then you only need to make a graph like this :

    WEBCAM -> FFDSHOW -> Frame Grabber -> any other filter (e.g. video renderer)

    and configure the frame grabber to dump JPEG or BMP as you like.

  8. By Amir Eshaq on Dec 30, 2008

    This is cool.

    Is there a way instead of saving the frames to disk, have the application grab the frames or the least know what frame is being displayed at given time?

  9. By Igor Janos on Dec 30, 2008

    Yes. Sure. Search the MSDN for Sample Grabber example.

  10. By Amir Eshaq on Dec 31, 2008

    Thanks Janos

  11. By John Smythe on Jan 13, 2009

    Igor,

    This is going to sound like a very basic question, but I am hoping you can help me.
    I am not looking to write software, rather I want to find a pre-built tool..

    I would like to be able to intercept any video that comes into my computer across the internet before it is rendered from digital stream, assign that digital stream to a rendering device or channel so that normal applications that look for such channels (such as exposed USB camera for example) can use the selected video streams. If I had this I could use tools like VJ Director and other products that normally are restricted to local cameras and similar video sources, for a much wider variety of functions.

    Do you know of or have you written a technology that could do what I am asking for? My sense is that you are very close. I simply don’t know enough to be much mroe precise in my question. I hope you can help.

    Thanks!

    John

  12. By Igor Janos on Jan 13, 2009

    I don’t know of any “pre-built” tool that does exactly this. But we at MONOGRAM are dealing with similar technology (live mixers/encoders for different kind of source media such as analog/digital video sources, IPTV or RTP streams) right now.

    If you are interested drop me a mail and we can talk some more.

    Igor

  13. By kendel on Jan 19, 2009

    Hi,

    Filter works a treat. Is there a way of changing the default settings? I want to use it from within a C++ program. Would be happy with COM interface, INI file or registry settings.

    I see there is already a binary registry setting that has config data but no obvious way to configure it.

    Is this possible?

    thanks.

  14. By Igor Janos on Jan 19, 2009

    Yes. Try this :
    http://blog.monogram.sk/janos/temp/grab_types.h

  15. By Colin on Jan 21, 2009

    Hi Igor - really liking your work, especially GraphStudio, which I canned GraphEdit in favour of…!

    Similar to previous question; is it possible to use this filter from VB6? At the moment I am maintaining an app that uses Sample Grabber but I’m looking for something better. I want to build a graph with the Monogram filter and then programmatically grab frames at arbitrary points (user decides) at run-time. Can this be done?

    Thanks and regards…

  16. By Igor Janos on Jan 22, 2009

    Hmm… I suppose it could be done but I’m not skilled with visual basic so I really can’t tell :-\. Perhaps you might try reading some articles at codeproject.com regarding the visual basic directshow interfaces.

  17. By Colin on Jan 27, 2009

    OK, thanks, I’ll try that. Good luck with the rest of your endeavours, especially GraphStudio, which I love!

    Kind regards….

  18. By Roman78 on Apr 6, 2009

    Hi Igor,

    I have a 3d party source filter that produces YV12 frames and I need to grab those frames into memory buffer for further processing by OpenGL textures. So I basically need very fast method of transforming YV12 to BGR at 25/30 fps.
    I can use OpenCV library for RGB to BGR conversion, but I can’t find anything for YV12 to RGB. Can you help me with that ?

    Thanks in advance.

  19. By Igor Janos on Apr 6, 2009

    Basically you have two options:

    1. Write a fast software conversion routine - there many freely available in software such as ffmpeg.
    If you are interested in a little bit slower but easier to read implementation, you can read this : http://blog.monogram.sk/janos/temp/colorspace.cpp . Look for Blt_I420_To_R32 function.
    It is a part of my colorspace conversion classes, but YUV 420 -> RGB is implemented only as plain C.

    2. Write a pixel shader. This will really make things fast, but unluckily I can’t help you with that. If it is possible for you to use Direct3D API there is an API call that performs hardware colorspace conversions directly : IDirect3DDevice9::StretchRect

  20. By Roman78 on Apr 7, 2009

    I will look into the Direct3D API.

    Thanks for your help

  21. By Jirong Jiao on Apr 9, 2009

    Hi Igor,
    Does your frame grabber supports NV12 and dxva?
    I was trying to connect the filter to Cyberlink H264 decoder. It can only accept YUY2 and not NV12?

    Is it because Cyberlink decoder does not allow NV12 to pass to another filter other than a render?

    Thanks in advance and love your great work!

  22. By Igor Janos on Apr 15, 2009

    Not yet. DXVA cannot be captured in the way this filter works, because the decoded output is located directly in the video memory. NV12 is not supported right now, but I might take a look at it sometimes.

  23. By Yang on Jul 13, 2009

    Do you know where I can download some sample NV12 frames?

  24. By Jonathan on Aug 20, 2009

    Hi, Did you make any progress on a DXVA frame grabber ?

  25. By Gianni on Nov 5, 2009

    Hi to all

    Igor your Frame grabber works very good
    Thanks for this filter.

    I want use it in VB6
    (no problem for this I use Directshow),
    but i need to change the settings.

    Is there a tlb or a wrapper?
    Can someone help me in this?

    Thanks
    Gianni

Post a Comment