summaryrefslogtreecommitdiff
path: root/sources/custom/Version.cs
blob: 91fb3ffe6db07cc01653f460b3ad7b47a8653bdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

//
// Version.cs: Lightweight Version Object for GStreamer
//
// Authors:
//   Aaron Bockover (abockover@novell.com)
//	 Stephan Sundermann (stephansundermann@gmail.com)
//
// Copyright (C) 2006 Novell, Inc.
//

using System;
using System.Runtime.InteropServices;

namespace Gst {
  public static class Version {
    private static uint major;
    private static uint minor;
    private static uint micro;
    private static uint nano;
    private static string version_string;

    static Version() {
      gst_version (out major, out minor, out micro, out nano);
    }

    public static string Description {
      get {
        if (version_string == null) {
          IntPtr version_string_ptr = gst_version_string();
          version_string = GLib.Marshaller.Utf8PtrToString (version_string_ptr);
        }

        return version_string;
      }
    }

    public static uint Major {
      get {
        return major;
      }
    }

    public static uint Minor {
      get {
        return minor;
      }
    }

    public static uint Micro {
      get {
        return micro;
      }
    }

    public static uint Nano {
      get {
        return nano;
      }
    }

    [DllImport ("libgstreamer-1.0-0.dll") ]
    private static extern void gst_version (out uint major, out uint minor, out uint micro, out uint nano);

    [DllImport ("libgstreamer-1.0-0.dll") ]
    private static extern IntPtr gst_version_string();
  }
}