Prerequisites

To develop applications using the GStreamer SDK for Windows you will need Windows XP or later.

The GStreamer SDK includes C headers (.h) and library files (.lib) valid for any version of Microsoft Visual Studio. For convenience, property pages (.props) are also included which extremely simplify creating new projects. These property pages, though, only work with Microsoft Visual Studio 2010 (including the free Visual C++ Express edition).

The recommended system is Windows 7 with Microsoft Visual Studio 2010 (Take a look at its system requirements).

Installing the SDK for 32-bits platforms requires approximately 286MB of free disk space for the runtime and 207MB for the development files.

Installing the SDK for 64-bits platforms requires approximately 340MB of free disk space for the runtime and 216MB for the development files.

Download and install the SDK

There are 3 sets of files in the SDK:

Get the Runtime and Development files installers appropriate for your architecture from here:

32 bits
64 bits

Due to the size of these files, usage of a Download Manager is highly recommended. Take a look at this list if you do not have one installed. If, after downloading, the installer reports itself as corrupt, chances are that the connection ended before the file was complete. A Download Manager will typically re-start the process and fetch the missing parts.

Execute the installers and choose an installation folder. The suggested default is usually OK.

If you plan to use Visual Studio, close it before installing the GStreamer SDK. The installer will define new environment variables which will not be picked up by Visual Studio if it is open.

Configure your development environment

Building the tutorials

The tutorial's code, along with project files and a solution file for Visual Studio 2010 are all included in the SDK, in the %GSTREAMER_SDK_ROOT_X86%\share\gst-sdk\tutorials folder.

%GSTREAMER_SDK_ROOT_X86% is an environment variable that the installer defined for you, and points to the installation folder of the SDK.

In order to prevent accidental modification of the original code, and to make sure Visual Studio has the necessary permissions to write the output files, copy the entire tutorials folder to a place of your liking, and work from there.

Use %GSTREAMER_SDK_ROOT_X86_64% if you have installed the SDK for 64-bit platforms. Both SDKs (32 and 64-bit) can be installed simultaneously, and hence the separate environment variables.

Make sure you select the Solution Configuration that matches the GStreamer SDK that you have installed: Win32 for 32 bits or x64 for 64 bits.

You can fire up Visual Studio 2010 and load your copy of the tutorials.sln solution file (Click on the screen shots to enlarge them).
Hit F7, press the Build Solution button  or go to Build → Build Solution. All projects should build without problems.

Running the tutorials

It is the application's responsibility to ensure that, at runtime, GStreamer can access its libraries and plugins. It can be done by adding %GSTREAMER_SDK_ROOT_X86%\bin to the PATH environment variable, or running from this same folder.

In order to run the tutorials, we will set the current working directory to %GSTREAMER_SDK_ROOT_X86%\bin in the Debugging section of the project properties. This property is not stored in the project files, so you will need to manually add it to every tutorial you want to run from within Visual Studio. Right click on a project in the Solution Explorer, Properties → Debugging → Working Directory, and type $(GSTREAMER_SDK_ROOT_X86) \ bin  (The $(...) notation is required to access environment variables from within Visual Studio. You use the %...% notation from Windows Explorer)

You should now be able to run the tutorials.

 

Creating new projects manually

If you want to create 64-bit applications, remember also to create x64 Solution and Project configurations as explained here.

Include the necessary SDK Property Sheet

The included property sheets make creating new projects extremely easy. In Visual Studio 2010 create a new project (Normally a Win32 Console or Win32 Application). Then go to the Property Manager (View→Property Manager), right-click on your project and select “Add Existing Property Sheet...”. Navigate to %GSTREAMER_SDK_ROOT_X86%\share\vs\2010\libs and load gstreamer-0.10.props

This property sheet contains the directories where the headers and libraries are located, and the necessary options for the compiler and linker, so you do not need to change anything else in your project.


 

 

If you cannot find the Property Manager, you might need to enable Expert Settings. Go to Tools → Settings → Expert Settings. Upon first installation of Visual Studio, Expert Settings are disabled by default.

 

Depending on the GStreamer libraries you need to use, you will have to add more property pages, besides gstreamer-0.10 (each property page corresponds to one GStreamer library).

The tutorial's project files already contain all necessary property pages. When developing your own applications, the GStreamer documentation will tell you what library a function belongs to, and therefore, what property pages you need to add.

Remove the dependency with the Visual Studio runtime

At this point, you have a working environment, which you can test by running the tutorials. However, there is a last step remaining.

Applications built with Visual C++ 2010 depend on the Visual C++ 2010 Runtime, which is a DLL that gets installed when you install Visual Studio. If you were to distribute your application, you would need to distribute this DLL with it (What is known as the Visual C++ 2010 Redistributable Package). This happens with every version of Visual Studio, and the Runtime DLL is different for every version of Visual Studio.

Furthermore, GStreamer itself is built using a “basic” C runtime which comes in every Windows system since Windows XP, and is named MSVCRT.DLL. If your application and GStreamer do not use the same C Runtime, problems are bound to crop out.

In order to avoid these issues you must instruct your application to use the system's C Runtime. First install the Windows Device Driver Kit Version 7.1.0 (DDK). When the installer asks about the features, select only “Build Environments”. Accept the suggested location for the installation, which is usually C:\WinDDK\7600.16385.1. This download is an ISO file, you can either burn a DVD with it (as recommended in the Microsoft site. You will need DVD burning software), mount the file in a virtual DVD device (you will need DVD virtualization software) or unpack the file as if it was a regular compressed file (you will need decompression software that understands the ISO format).

Then, add the x86.props or x86_64.props (for 32 or 64 bits) property sheet found in %GSTREAMER_SDK_ROOT_X86%\share\vs\2010\msvc to your project. This will make your application use the ubiquitous MSVCRT.DLL saving you some troubles in the future.

If you did not install the WinDDK to the standard path C:\WinDDK\7600.16385.1, you will need to tell Visual Studio where it is. Unfortunately, there is no automated way to do this. Once you have added the x86.props or x86_64.props to your project, go to the Property Manager, expand your project and its subfolders until you find the property sheet called config. Double click to edit it, and select the section called “User Macros” in the list on the left. You should see a macro called WINDOWS_DRIVER_KIT. Double click to edit it, and set its value to the root folder where you installed the DDK. This is the folder containing a file called samples.txt

That's it. Accept the changes, right click on the config property sheet and select “Save”. The path to the DDK is now stored in config.props and you do not need to perform this operation anymore.

Creating new projects using the wizard

The GStreamer SDK for Windows contains a Visual Studio Wizard that helps creating new projects that use the SDK. However, due to development time constraints, the SDK Installer does not deploy the files to the Visual Studio folder. If you want to use the Wizard, you will need to install these files manually.

1. The three files in the %GSTREAMER_SDK_ROOT_X86%\share\vs\2010\wizard folder need to be copied to the following location, depending on your version of Visual Studio:

  • Visual Studio 2010:
    • C:\Program Files\Microsoft Visual Studio 10.0\VC\vcprojects
  • Visual Studio 2010 Express:
    • C:\Program Files\Microsoft Visual Studio 10.0\VC\Express\VCProjects

2. The entire %GSTREAMER_SDK_ROOT_X86%\share\vs\2010\gst-sdk-template folder (including the gst-sdk-template folder) needs to be copied to:

  • C:\Program Files\Microsoft Visual Studio 10.0\VC\VCWizards

To clarify: you must end up with three additional files in the VCProjects folder and a new folder named gst-sdk-template inside the VCWizards folder.

Use the right path for your Visual Studio folder.

Go to File → New → Project… and you should find a template named GStreamer SDK Project. It takes no parameters, and sets all necessary project settings, both for 32 and 64 bits architectures.

The generated project file includes the two required Property Sheets described in the previous section, so, in order to link to the correct MSVCRT.DLL, you still need to install the Windows Device Driver Kit.