Due to continual spamming, forum registrations are now by Invitation Only. Hopefully this will be only a temporary measure to combat spammers.

If you want an invitation contact forumapplication @ camstudio . org

Sorry for the inconvenience.

CamStudio 2.6 Beta released at Sourceforge



  • Maybe I'm missing it, but Sourceforge is showing the latest build as "CamStudio_2.6b_r264_build_14july2010.exe" and not r271. Where do I get r271?
  • @ jrothra

    Not all changes in Sourceforge results in a binary available for everyone. To much work involved with that. We assume that people who are interrested in development are able to build their own executable from the sources.
    Newer binaries can be found occasionly on my own website

    But v2.6b-r273 can be downloaded from Sourceforge now.

  • New version/release available for download.

    Camstudio version 2.6b release 273 is released on Sourceforge.

    Will be available on Camstudio.org soon.
  • I guess I can use this forum to propose an improvement.

    Right now, mouse capture is used to catch all mouse events as it is in TransparentWnd.cpp of Recorder. This unfortunately doesn't always capture all mouse clicks:(
    I propose to use hooks to capture mouse events. It seems should be possible to install handler to catch all mouse event before they reach window procedure of any window. This will allow to capture all mouse clicks with confidence.
  • Hi mlt,

    Improvements are always welcome. :-)
    I know you can code. Do you have an opportunity to write the patch and to put it in SourceForge?

  • Well, I might do it:-) I just posted it to secure everyone's consent so I understand current implementation correctly and I don't propose to do something nobody wants or that is already planned/being implemented somewhere in a branch.
  • No problem.

    Any improvement is welcome. If you want to be sure that ir will not break on different OS's you can create a private version first and use the forum to ask people to test it.
    As far as I' know, Terry is involved with setting up a new test team.

  • I uploaded drops26 branch with preliminary code that tracks all the clicks and shows them as growing circles. It is not perfect though, but you can get an idea. It is an alternative implementation of part of InsertHighlight for mouse clicks. The corresponding option should be enabled in cursor settings. I added WH_MOUSE_LL hook to track buttons.

    Btw...Why do we use GDI and not GDI+ ? It would be nice to use anti-aliasing and transparency.
  • @mlt

    Thanks for the code upload.

    I'm sure Jan will be able to answer the GDI/GDI+ question (cos I definitely can't ;o)


    Nick :o)
  • mlt
    edited October 2010
    I made some cleanups. Now all mouse buttons are shown in different colors, up & down events are shown differently, mouse wheel is visualized.
    I propose to merge back into the main tree.
    Can someone add yet another dialog option for middle button color since you are moving to new profile or something. I don't want to mess up with settings and RGB works fine for me. Green is currently hard coded for middle button.
    Can something be done with BitBlt to improve appearance of highlights on dark backgrounds? Something like merge, but with color preservation.
  • Okay! GDI+ and transparency is used for mouse highlighting in drops26 branch. Please test!
    Anyway, now I feel like I can record what I was planning to do instead of coding :-)
    I hope you don't mind against small assembler code in the project for efficient conversion of COLORREF to ARGB with transparency :-) It required 80486+ processor. I hope I didn't brake anything else.
  • mlt
    edited October 2010
    Here is the video if you don't want to build source code http://www.vimeo.com/15856221
  • @mlt

    As Camstudio started many years ago and new development is not really planned there is a lot of legacy in he code.
    Using GDI is one of this. Using VFW that gives troubles with the 2 GB file size is another.

    I just looked to your code. Excellent that you also write some comments what you want to achieve.
    Would like to ask to use variable that are a little more readable by making them a little more self-explainable.
  • I'm just curious what is actually wrong with VFW? The capture should be way longer than half an hour to hit 2GB limit. I had recording for 15 minutes with audio and it was ~600 Mb with 1280x720. Do many users have a need to record hours of video? AFAIK virtualdub has support for AVI2 format. I'm just curious if it would be possible to borrow code, I guess both are GPL. I am not positive that writing a support for AVI2 from scratch would be easier.

    I will cleanup code a bit, I just wanted to get it to work ASAP. I'd like to have zoom feature that I may add soon.
  • Code re-use
    Everything we can borrow from other project is better than starting from scratch.
    If we borrow code we should think before how we shall implement it. I prefer use of libs above code because libs allows us to follow ongoing development mush easier.

    I assume that the performance penalty was the reason why GDI was used instead of GDI+. As most systems are much more powerful now than a few years ago I do not see any objection to use GDI+.

    Inline assembly
    Dislike the use of inline assembly because we do not know how well this will work with other and future OS's. With inline assembly we neither have possibility to implement fail-safe solutions.

    VFW vs DirectShow ( AVI2 / Aforge )
    People are indeed running long full screen sessions with Camstudio (Movies from TV for instance)
    Also the possibility from Camstudio to record in high fps rates will make that 2GB is often a burden. (Although this is also because the AVI container is defined in 1988 and 2Gb was enormous amount of storage at that time)

    One could say that VFW and old style AVI containes as implemented with VFW are classified as effectively obsolete for many years. To my best knowledge many new development is using DirectShow now. There are a lot of things you can do with DirectShow that you can't do with VFW.
    If you have a look to this just look to Aforge. Use of Aforge can improve many things in the near future.

    Zoom feature
    Excellent, but we need to be sure that this new features works on different OS's.
    I assume that you will add an user interface to let users decide to use these new options.?
  • mlt
    edited October 2010
    Inline assembly
    I doubt that 80486 instruction set will be changed in the near future. Unless we use exotic processor and non x86 architecture, we should be good. That chunk shouldn't depend on Windows OS version, but it does depend on default calling convention, which can be specified explicitly.

    VFW vs DirectShow ( AVI2 / Aforge )
    Capturing a movie sounds like a task indeed. However AFAIK there should be some software that comes with capturing board. Anyway, I was just curious.

    Zoom feature
    My current plan is to add CRect _zoomFrame that would hold current viewport within viewFrame boundaries. If autopanning is enabled (for viewFrame) and zoom> 1, it will adjust _zoomFrame instead, otherwise zoom is done at once to current mouse pointer location if autopanning is disabled (for viewFrame). Thus I plan to reuse some existing settings. I plan to make zoom smooth. For this I'm going to use Graphics::DrawImage from GDI+ which is known for bad performance. At least for me, it works fine and provides non-aliased magnification, as it is too much pain to use StretchDIBits in my opinion.

    Bad news is that I have VS Express (don't ask me how I compile :-) ) and I cannot edit any dialog as resource editor is not available. I was shocked recently about current inflexible implementation of keyboard shortcuts. For now (my purposes) I'll hard code it to F12 or something. Mouse highlighting is an alternative implementation, so I guess it is not reasonable to let user decide since original highlighter is not good at all IMHO.
  • mlt
    edited October 2010
    r281 @ drops26 branch has somewhat working zoom feature. I tested it only with fixed rectangle. Zoom is hardcoded to F11. Video showing new features should appear soon http://vimeo.com/15885532 .
  • Cool.
    Great to see that the project is still alive.
    Hope final version soon!
  • Just to let everyone know, I'm working on libconfig ( http://www.hyperrealm.com/libconfig/ )integration. It looks very promising. This would allow to store setting in hierarchical format. I'm trying to make as little changes to existing code as possible. I'll upload it as a yet another branch, perhaps libconfig26.
  • In theory it should be possible to store all annotations in separate text (not binary!!) configs and just include them in the main one. Here is how piece of config may look alike:

    XNote = {//;[XNote];
    DisplayFormatString="(0000) 00:00:00.000";

    TextAttributes = {
    text="(0000) 00:00:00.000";

    font = {
  • I uploaded branch libconfig26 that uses libconfig to store configuration. HotKeys configuration is currently broken, binary configuration with annotations etc are not converted.
    To build this version you will need libconfig ( http://www.hyperrealm.com/libconfig/ ) unpacked into $(SolutionDir)libconfig .

    I suggest to consider CProfile obsolete as it doesn't support hierarchies and arrays/lists.
  • hm... I wonder if there are any plans to clean up the code? Does anybody have Visual Studio Team System or Development Edition? It would be nice to get coverage and profile of the program. If no one has it I suggest maybe to give up on MFC in a long term and switch to something alternative. GUI is not that complicated. By switching to another framework, it would be possible to build the code with mingw & gcc and get benefits of gcov & gprof to get coverage and profiling data.
  • mlt
    edited October 2010
    I uploaded snapshot of r283 if someone is curious. http://www.sendspace.com/file/a79b5i . Just in case, check for viruses. I hope I don't have any, and neither are injected @ sendspace.
    Replace existing files with those in archive. This is not complete installation, just an update over one of the recent 2.6 beta versions!!!
    This version has zoom & enhanced mouse highlighting features. Transparency level & middle button color are fixed.
    You can change zoom hotkey through camstudio.cfg file only. It defaults to Ctrl+Alt+F11 . To makde it just F11, set Mod = 0 in config.
  • mlt
    edited October 2010
    Here are some fixes with r287 http://www.sendspace.com/file/701bu1
    Typos in new profile, actual cursor was not updated.
    Autopan speed text label is not reset to 0 when slider is released.
    Blinking frame is drawn with XOR to remove artifacts when zoomed
  • @mlt,

    You are going so fast that I have neither time to get in sync with you :-)
    But no complains, just great.

    Code cleanup is important.
    In the past some actions are taken to prevent abnormal ending due to uninitialized variables.
    There is a lot of code that is 'just there, doing nothing' . Left overs of things that were started but never finished.

    Just go on but give us an opportunity to test.

    And if you are thinking about what to do next. AutoHotKey inplementation as special effects is also on the list.
  • I don't know if there are any free code coverage tools available other than gcc & binutils. Without code coverage & profiling tools, it would be very hard to clean the code manually.

    What is AutoHotKey??
  • http://www.autohotkey.com/

    Possible features for Camstudio:
    1 - Show key combination pressed as special effects in records
    2a - Record pressed keys and mouse events in log file.
    2b - Use log file to create and execute script that helps you to make a recording as you like with key presses and mouse click exact on time.
  • Actually I'm not that far from that.
    As I said I moved hotkey handler as a hook. Now it is possible to distinguish even which ctrl or shift was pressed. I thought to make second queue for key events. Show those within certain time lapse on one line, and if it was pressed later, move those key strokes to another line.

    Though I agree, it would be nice to record events in separate files. I can do it for mouse now, though it is not clear about format of records.csv?

    It is not clear how autohotkey fits in it. I feel like it can either launch something or send keystrokes.
  • Before you could find AHK here: http://sourceforge.net/projects/ahk/
    Sources from 2006 still available.
  • I still don't get how to use it with camstudio. We can catch all events internally in camhook.dll . Or do you mean that we can record let's say mouse events and then play them back using autohotkey?
Sign In or Register to comment.