mitsuhiko / gnome-record-screen (http://dev.pocoo.org/)


Mirror of the gnome-record-screen repository on pocoo.org GNOME Record Screen is a screencast application for Linux written in C# using GTK# and GStreamer.
Clone URL : http://bitbucket.org/mitsuhiko/gnome-record-screen/ (size: 343.2 KB)
commit 4: 6dfb9d724bb4
parent 3: 37a08da4def7
branch: default
Vastly improved version that can record audio and dump into PNG files. Unfortunately some encoder setups are still incredible unstable :(
Armin Ronacher / mitsuhiko
8 weeks ago

Changed (Δ35.8 KB):

raw changeset »

.hgignore (1 lines added, 1 lines removed)

GNOME-Record-Screen.userprefs (20 lines added, 12 lines removed)

GNOME-Record-Screen/GNOME-Record-Screen.mdp (5 lines added, 2 lines removed)

GNOME-Record-Screen/GNOME-Record-Screen.pidb (binary file changed)

GNOME-Record-Screen/gtk-gui/Gnome.RecordScreen.UI.MainWindow.cs (2 lines added, 2 lines removed)

GNOME-Record-Screen/gtk-gui/gui.stetic (2 lines added, 3 lines removed)

GNOME-Record-Screen/src/AudioEncoder.cs (54 lines added, 0 lines removed)

GNOME-Record-Screen/src/AudioEncoderImplementations.cs (62 lines added, 0 lines removed)

GNOME-Record-Screen/src/Main.cs (1 lines added, 1 lines removed)

GNOME-Record-Screen/src/ScreenRecorder.cs (205 lines added, 30 lines removed)

GNOME-Record-Screen/src/UI/MainWindow.cs (68 lines added, 7 lines removed)

GNOME-Record-Screen/src/UI/MpegConfigurationPane.cs (1 lines added, 1 lines removed)

GNOME-Record-Screen/src/UI/SaveDialog.cs (44 lines added, 8 lines removed)

GNOME-Record-Screen/src/Utils.cs (102 lines added, 23 lines removed)

GNOME-Record-Screen/src/VideoEncoder.cs (169 lines added, 0 lines removed)

GNOME-Record-Screen/src/VideoEncoderImplementations.cs (115 lines added, 0 lines removed)

GNOME-Record-Screen/src/VideoEncoders.cs

librecordscreen/main.c (1 lines added, 1 lines removed)

Up to file-list .hgignore:

1
/(Debug|Release)/bin
1
bin/(Debug|Release)
2
2
librecordscreen/.*\.[od]$

Up to file-list GNOME-Record-Screen.userprefs:

1
1
<UserCombinePreferences version="1.0" filename="/home/mitsuhiko/Development/GNOME-Record-Screen/GNOME-Record-Screen.mds">
2
2
  <Files>
3
    <File name="Welcome" />
4
    <File name="GNOME-Record-Screen/src/UI/MainWindow.cs" line="172" column="76" />
5
    <File name="GNOME-Record-Screen/src/Utils.cs" line="39" column="58" />
3
    <File name="GNOME-Record-Screen/src/UI/MainWindow.cs" line="33" column="30" />
4
    <File name="GNOME-Record-Screen/src/Utils.cs" line="141" column="28" />
6
5
    <File name="GNOME-Record-Screen/src/UI/SaveDialog.cs" line="50" column="2" />
7
    <File name="GNOME-Record-Screen/src/UI/RecordingAreaSelector.cs" line="78" column="55" />
8
    <File name="GNOME-Record-Screen/src/VideoEncoders.cs" line="139" column="41" />
9
    <File name="GNOME-Record-Screen/src/UI/H264ConfigurationPane.cs" line="17" column="4" />
6
    <File name="GNOME-Record-Screen/src/UI/H264ConfigurationPane.cs" line="18" column="13" />
7
    <File name="GNOME-Record-Screen/src/ScreenRecorder.cs" line="264" column="67" />
8
    <File name="GNOME-Record-Screen/src/VideoEncoders.cs" line="75" column="31" />
9
    <File name="GNOME-Record-Screen/src/UI/TheoraConfigurationPane.cs" line="19" column="3" />
10
    <File name="GNOME-Record-Screen/src/UI/MpegConfigurationPane.cs" line="19" column="34" />
10
11
  </Files>
11
12
  <Views>
12
13
    <ViewMemento id="ProjectPad">
13
14
      <Node expanded="True">
14
15
        <Node name="GNOME-Record-Screen" expanded="True">
15
          <Node name="UserInterface" expanded="True" />
16
          <Node name="References" expanded="True" />
16
17
          <Node name="src" expanded="True">
17
            <Node name="UI" expanded="True">
18
              <Node name="MainWindow.cs" selected="True" />
19
            </Node>
18
            <Node name="UI" expanded="True" />
19
            <Node name="VideoEncoders.cs" selected="True" />
20
20
          </Node>
21
21
        </Node>
22
22
        <Node name="librecordscreen" expanded="True" />
23
23
      </Node>
24
24
    </ViewMemento>
25
25
    <ViewMemento id="ClassPad">
26
      <Node expanded="True" />
26
      <Node expanded="True">
27
        <Node name="GNOME-Record-Screen" expanded="True">
28
          <Node name="Gnome" expanded="True">
29
            <Node name="RecordScreen" expanded="True">
30
              <Node name="VideoContainer" selected="True" />
31
            </Node>
32
          </Node>
33
        </Node>
34
      </Node>
27
35
    </ViewMemento>
28
36
  </Views>
29
37
  <Properties>
30
    <Property key="ActiveWindow" value="/home/mitsuhiko/Development/GNOME-Record-Screen/GNOME-Record-Screen/src/UI/MainWindow.cs" />
38
    <Property key="ActiveWindow" value="/home/mitsuhiko/Development/GNOME-Record-Screen/GNOME-Record-Screen/src/VideoEncoders.cs" />
31
39
    <Property key="ActiveConfiguration" value="Debug" />
32
40
  </Properties>
33
41
</UserCombinePreferences>

Up to file-list GNOME-Record-Screen/GNOME-Record-Screen.mdp:

26
26
    <File name="src/Utils.cs" subtype="Code" buildaction="Compile" />
27
27
    <File name="src/UI/RecordingAreaSelector.cs" subtype="Code" buildaction="Compile" />
28
28
    <File name="src/UI/SaveDialog.cs" subtype="Code" buildaction="Compile" />
29
    <File name="src/VideoEncoders.cs" subtype="Code" buildaction="Compile" />
29
    <File name="src/VideoEncoder.cs" subtype="Code" buildaction="Compile" />
30
30
    <File name="src/UI/H264ConfigurationPane.cs" subtype="Code" buildaction="Compile" />
31
31
    <File name="gtk-gui/objects.xml" subtype="Code" buildaction="EmbedAsResource" />
32
32
    <File name="gtk-gui/Gnome.RecordScreen.UI.H264ConfigurationPane.cs" subtype="Code" buildaction="Compile" />
34
34
    <File name="gtk-gui/Gnome.RecordScreen.UI.TheoraConfigurationPane.cs" subtype="Code" buildaction="Compile" />
35
35
    <File name="src/UI/MpegConfigurationPane.cs" subtype="Code" buildaction="Compile" />
36
36
    <File name="gtk-gui/Gnome.RecordScreen.UI.MpegConfigurationPane.cs" subtype="Code" buildaction="Compile" />
37
    <File name="src/AudioEncoder.cs" subtype="Code" buildaction="Compile" />
38
    <File name="src/VideoEncoderImplementations.cs" subtype="Code" buildaction="Compile" />
39
    <File name="src/AudioEncoderImplementations.cs" subtype="Code" buildaction="Compile" />
37
40
  </Contents>
38
41
  <References>
39
42
    <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
44
47
    <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
45
48
    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
46
49
    <ProjectReference type="Gac" localcopy="True" refto="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
47
    <ProjectReference type="Assembly" localcopy="True" refto="../../../../../usr/lib/monodevelop/AddIns/MonoDevelop.GtkCore/libstetic.dll" />
50
    <ProjectReference type="Gac" localcopy="True" refto="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
48
51
  </References>
49
52
  <GtkDesignInfo gtkVersion="2.12.1">
50
53
    <ExportedWidgets>

Up to file-list GNOME-Record-Screen/GNOME-Record-Screen.pidb:

-
Diff size exceeds threshold (18.1 KB)view raw?

Up to file-list GNOME-Record-Screen/gtk-gui/Gnome.RecordScreen.UI.MainWindow.cs:

@@ -76,7 +76,7 @@ namespace Gnome.RecordScreen.UI {
76
76
        protected virtual void Build() {
77
77
            Stetic.Gui.Initialize(this);
78
78
            // Widget Gnome.RecordScreen.UI.MainWindow
79
            this.WidthRequest = 580;
79
            this.WidthRequest = 600;
80
80
            this.HeightRequest = 400;
81
81
            this.Name = "Gnome.RecordScreen.UI.MainWindow";
82
82
            this.Title = Mono.Unix.Catalog.GetString("GNOME Record Screen");
@@ -422,7 +422,7 @@ namespace Gnome.RecordScreen.UI {
422
422
            if ((this.Child != null)) {
423
423
                this.Child.ShowAll();
424
424
            }
425
            this.DefaultWidth = 588;
425
            this.DefaultWidth = 608;
426
426
            this.DefaultHeight = 488;
427
427
            this.videoFormatConfigurationLabel.Hide();
428
428
            this.stopButton.Hide();

Up to file-list GNOME-Record-Screen/gtk-gui/gui.stetic:

6
6
  </configuration>
7
7
  <import>
8
8
    <widget-library name="../bin/Debug/GNOME-Record-Screen.exe" internal="true" />
9
    <widget-library name="../../../../../../usr/lib/monodevelop/AddIns/MonoDevelop.GtkCore/libstetic.dll" />
10
9
  </import>
11
  <widget class="Gtk.Window" id="Gnome.RecordScreen.UI.MainWindow" design-size="588 488">
10
  <widget class="Gtk.Window" id="Gnome.RecordScreen.UI.MainWindow" design-size="608 488">
12
11
    <property name="MemberName" />
13
    <property name="WidthRequest">580</property>
12
    <property name="WidthRequest">600</property>
14
13
    <property name="HeightRequest">400</property>
15
14
    <property name="Title" translatable="yes">GNOME Record Screen</property>
16
15
    <property name="WindowPosition">CenterOnParent</property>

Up to file-list GNOME-Record-Screen/src/AudioEncoder.cs:

1
/**
2
 * AudioEncoders.cs
3
 *
4
 * :copyright: 2008 mitsuhiko.
5
 * :license: BSD
6
 */
7
8
using System;
9
using Gnome.RecordScreen.Implementations;
10
11
namespace Gnome.RecordScreen {
12
	
13
	public enum AudioQuality {
14
		Low,
15
		Medium,
16
		High
17
	}
18
	
19
	public class AudioEncoder : IEncoder {
20
		private string gstKey;
21
		
22
		public AudioEncoder (string gstKey)
23
		{
24
			this.gstKey = gstKey;
25
		}
26
		
27
		public virtual string GetEncoderArguments (AudioQuality quality) {
28
			return null;
29
		}
30
		
31
		public string GstKey {
32
			get { return gstKey; }
33
		}
34
		
35
		public virtual bool IsAvailable {
36
			get { return GStreamerInterface.SupportsObject (this); }
37
		}
38
		
39
		private static AudioEncoder vorbis = new VorbisAudioEncoder ();
40
		public static AudioEncoder Vorbis {
41
			get { return vorbis; }
42
		}
43
		
44
		private static AudioEncoder mp3 = new Mp3AudioEncoder ();
45
		public static AudioEncoder Mp3 {
46
			get { return mp3; }
47
		}
48
		
49
		public static AudioEncoder nullenc = new NullAudioEncoder ();
50
		public static AudioEncoder Null {
51
			get { return nullenc; }
52
		}
53
	}
54
}

Up to file-list GNOME-Record-Screen/src/AudioEncoderImplementations.cs:

1
/**
2
 * AudioEncoderImplementations.cs
3
 *
4
 * :copyright: 2008 mitsuhiko.
5
 * :license: BSD
6
 */
7
8
using System;
9
10
namespace Gnome.RecordScreen.Implementations {
11
	
12
	internal class VorbisAudioEncoder : AudioEncoder {
13
		
14
		public VorbisAudioEncoder ()
15
			: base ("vorbisenc")
16
		{}
17
		
18
		public override string GetEncoderArguments (AudioQuality quality)
19
		{
20
			switch (quality) {
21
			case AudioQuality.High:
22
				return "quality=0.7";
23
			case AudioQuality.Medium:
24
				return "quality=0.5";
25
			case AudioQuality.Low:
26
				return "quality=0.25";
27
			}
28
			return null;
29
		}
30
	}
31
	
32
	internal class Mp3AudioEncoder : AudioEncoder {
33
34
		public Mp3AudioEncoder ()
35
			: base ("lame")
36
		{}
37
		
38
		public override string GetEncoderArguments (AudioQuality quality)
39
		{
40
			switch (quality) {
41
			case AudioQuality.High:
42
				return "quality=2";
43
			case AudioQuality.Medium:
44
				return "quality=5";
45
			case AudioQuality.Low:
46
				return "quality=8";
47
			}
48
			return null;
49
		}
50
	}
51
	
52
	internal class NullAudioEncoder : AudioEncoder {
53
		
54
		public NullAudioEncoder ()