-
Notifications
You must be signed in to change notification settings - Fork 80
/
settings.js
146 lines (129 loc) · 5.37 KB
/
settings.js
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
Copyright (C) 2013 Borsato Ivano
The JavaScript code in this page is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
*/
'use strict';
import GObject from 'gi://GObject';
// setting keys
export const INPUT_AUDIO_SOURCE_SETTING_KEY = 'input-audio-source';
export const ACTIVE_POST_CMD_SETTING_KEY = 'execute-post-cmd';
export const POST_CMD_SETTING_KEY = 'post-cmd';
export const ACTIVE_PRE_CMD_SETTING_KEY = 'execute-pre-cmd';
export const PRE_CMD_SETTING_KEY = 'pre-cmd';
export const ACTIVE_CUSTOM_GSP_SETTING_KEY = 'active-custom-gsp';
export const ACTIVE_SHORTCUT_SETTING_KEY = 'active-shortcut';
export const SHORTCUT_KEY_SETTING_KEY = 'shortcut-key';
export const TIME_DELAY_SETTING_KEY = 'delay-time';
export const SHOW_NOTIFY_ALERT_SETTING_KEY = 'show-notify-alert';
export const SHOW_AREA_REC_SETTING_KEY = 'show-area-rec';
export const VERBOSE_DEBUG_SETTING_KEY = 'verbose-debug';
export const PIPELINE_REC_SETTING_KEY = 'pipeline';
export const FPS_SETTING_KEY = 'fps';
export const STATUS_INDICATORS_SETTING_KEY = 'status-indicators';
export const X_POS_SETTING_KEY = 'x-pos';
export const Y_POS_SETTING_KEY = 'y-pos';
export const WIDTH_SETTING_KEY = 'width-rec';
export const HEIGHT_SETTING_KEY = 'height-rec';
export const DRAW_CURSOR_SETTING_KEY = 'draw-cursor';
export const AREA_SCREEN_SETTING_KEY = 'area-screen';
export const FILE_NAME_SETTING_KEY = 'file-name';
export const FILE_FOLDER_SETTING_KEY = 'file-folder';
export const FILE_CONTAINER_SETTING_KEY = 'file-container';
export const FILE_RESOLUTION_TYPE_SETTING_KEY = 'file-resolution-type';
export const FILE_RESOLUTION_KAR_SETTING_KEY = 'file-resolution-kar';
export const FILE_RESOLUTION_WIDTH_SETTING_KEY = 'file-resolution-width';
export const FILE_RESOLUTION_HEIGHT_SETTING_KEY = 'file-resolution-height';
export const QUALITY_SETTING_KEY = 'quality-index';
export const DEVICE_INDEX_WEBCAM_SETTING_KEY = 'device-webcam-index';
export const DEVICE_WEBCAM_SETTING_KEY = 'device-webcam';
export const QUALITY_WEBCAM_SETTING_KEY = 'quality-webcam';
export const WIDTH_WEBCAM_SETTING_KEY = 'width-webcam';
export const HEIGHT_WEBCAM_SETTING_KEY = 'height-webcam';
export const TYPE_UNIT_WEBCAM_SETTING_KEY = 'type-unit-webcam';
export const MARGIN_X_WEBCAM_SETTING_KEY = 'margin-x-webcam';
export const MARGIN_Y_WEBCAM_SETTING_KEY = 'margin-y-webcam';
export const ALPHA_CHANNEL_WEBCAM_SETTING_KEY = 'alpha-channel-webcam';
export const CORNER_POSITION_WEBCAM_SETTING_KEY = 'corner-position-webcam';
// shortcut tree view columns
export const SHORTCUT_COLUMN_KEY = 0;
export const SHORTCUT_COLUMN_MODS = 1;
export const Settings = GObject.registerClass(class EasyScreenCastSettings extends GObject.Object {
constructor(settings) {
super();
this._settings = settings;
}
/**
* getter option
*
* @param {string} type value type of the option. one of 'b', 'i', 's', 'd', 'as'
* @param {string} key option key
* @returns {string}
*/
getOption(type, key) {
switch (type) {
case 'b':
return this._settings.get_boolean(key);
case 'i':
return this._settings.get_int(key);
case 's':
return this._settings.get_string(key);
case 'd':
return this._settings.get_double(key);
case 'as':
return this._settings.get_strv(key);
}
return '';
}
/**
* setter option
*
* @param {string} key option key
* @param {boolean|number|string|double|object} option option value
* @returns {string} empty string if successful, 'ERROR' otherwise
*/
setOption(key, option) {
switch (typeof option) {
case 'boolean':
this._settings.set_boolean(key, option);
break;
case 'number':
this._settings.set_int(key, option);
break;
case 'string':
this._settings.set_string(key, option);
break;
case 'double':
this._settings.set_double(key, option);
break;
case 'object':
this._settings.set_strv(key, option);
break;
default:
return 'ERROR';
}
return '';
}
destroy() {
if (this._settings)
this._settings = null;
}
});
/**
* get a standard gsp pipeline
*
* @param {boolean} audio with or without audio
* @returns {string}
*/
export function getGSPstd(audio) {
// TODO update gsp
if (audio)
return 'queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! videorate ! vp8enc min_quantizer=0 max_quantizer=5 cpu-used=3 deadline=1000000 threads=%T ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! mux. pulsesrc ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! audioconvert ! vorbisenc ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! mux. webmmux name=mux ';
else
return 'vp9enc min_quantizer=0 max_quantizer=5 cpu-used=3 deadline=1000000 threads=%T ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! webmmux';
}