1
/* smplayer, GUI front-end for mplayer.
2
Copyright (C) 2006-2009 Ricardo Villalba <rvm@escomposlinux.org>
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation; either version 2 of the License, or
7
(at your option) any later version.
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
14
You should have received a copy of the GNU General Public License
15
along with this program; if not, write to the Free Software
16
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
#include "mediasettings.h"
20
#include "preferences.h"
24
using namespace Global;
26
MediaSettings::MediaSettings() {
30
MediaSettings::~MediaSettings() {
33
void MediaSettings::reset() {
35
//current_sub_id = SubNone;
36
current_sub_id = NoneSelected;
37
current_video_id = NoneSelected;
38
current_audio_id = NoneSelected;
39
current_title_id = NoneSelected;
40
current_chapter_id = NoneSelected;
41
current_angle_id = NoneSelected;
43
aspect_ratio_id = AspectAuto;
46
volume = pref->initial_volume;
48
external_subtitles = "";
52
sub_pos = pref->initial_sub_pos; // 100% by default
53
sub_scale = pref->initial_sub_scale;
54
sub_scale_ass = pref->initial_sub_scale_ass;
56
brightness = pref->initial_brightness;
57
contrast = pref->initial_contrast;
58
gamma = pref->initial_gamma;
59
hue = pref->initial_hue;
60
saturation = pref->initial_saturation;
62
audio_equalizer = pref->initial_audio_equalizer;
67
current_denoiser = NoDenoise;
68
deblock_filter = false;
69
dering_filter = false;
71
postprocessing_filter = pref->initial_postprocessing;
72
upscaling_filter = false;
74
//current_deinterlacer = NoDeinterlace;
75
current_deinterlacer = pref->initial_deinterlace;
78
add_letterbox = false;
80
letterbox = NoLetterbox;
82
crop_43to169_filter = "";
85
karaoke_filter = false;
86
extrastereo_filter = false;
87
volnorm_filter = pref->initial_volnorm;
89
audio_use_channels = pref->initial_audio_channels; //ChDefault; // (0)
90
stereo_mode = pref->initial_stereo_mode; //Stereo; // (0)
92
panscan_factor = pref->initial_panscan_factor; // 1.0;
94
starting_time = -1; // Not set yet.
103
forced_video_codec="";
104
forced_audio_codec="";
107
original_video_codec="";
108
original_audio_codec="";
110
mplayer_additional_options="";
111
mplayer_additional_video_filters="";
112
mplayer_additional_audio_filters="";
118
double MediaSettings::win_aspect() {
119
return (double) win_width / win_height;
124
double MediaSettings::aspectToNum(Aspect aspect) {
128
case MediaSettings::AspectNone: asp = 0; break;
129
case MediaSettings::Aspect43: asp = (double) 4 / 3; break;
130
case MediaSettings::Aspect169: asp = (double) 16 / 9; break;
131
case MediaSettings::Aspect149: asp = (double) 14 / 9; break;
132
case MediaSettings::Aspect1610: asp = (double) 16 / 10; break;
133
case MediaSettings::Aspect54: asp = (double) 5 / 4; break;
134
case MediaSettings::Aspect235: asp = 2.35; break;
135
case MediaSettings::Aspect11: asp = 1; break;
136
case MediaSettings::AspectAuto: asp = win_aspect(); break;
137
default: asp = win_aspect();
138
qWarning("MediaSettings::aspectToNum: invalid aspect: %d", aspect);
144
QString MediaSettings::aspectToString(Aspect aspect) {
148
case MediaSettings::AspectNone: asp_name = QObject::tr("disabled", "aspect_ratio"); break;
149
case MediaSettings::Aspect43: asp_name = "4:3"; break;
150
case MediaSettings::Aspect169: asp_name = "16:9"; break;
151
case MediaSettings::Aspect149: asp_name = "14:9"; break;
152
case MediaSettings::Aspect1610: asp_name = "16:10"; break;
153
case MediaSettings::Aspect54: asp_name = "5:4"; break;
154
case MediaSettings::Aspect235: asp_name = "2.35:1"; break;
155
case MediaSettings::Aspect11: asp_name = "1:1"; break;
156
case MediaSettings::AspectAuto: asp_name = QObject::tr("auto", "aspect_ratio"); break;
157
default: asp_name = QObject::tr("unknown", "aspect_ratio");
164
void MediaSettings::list() {
165
qDebug("MediaSettings::list");
167
qDebug(" current_sec: %f", current_sec);
168
qDebug(" current_sub_id: %d", current_sub_id);
169
qDebug(" current_video_id: %d", current_video_id);
170
qDebug(" current_audio_id: %d", current_audio_id);
171
qDebug(" current_title_id: %d", current_title_id);
172
qDebug(" current_chapter_id: %d", current_chapter_id);
173
qDebug(" current_angle_id: %d", current_angle_id);
175
qDebug(" aspect_ratio_id: %d", aspect_ratio_id);
176
//qDebug(" fullscreen: %d", fullscreen);
177
qDebug(" volume: %d", volume);
178
qDebug(" mute: %d", mute);
179
qDebug(" external_subtitles: '%s'", external_subtitles.toUtf8().data());
180
qDebug(" external_audio: '%s'", external_audio.toUtf8().data());
181
qDebug(" sub_delay: %d", sub_delay);
182
qDebug(" audio_delay: %d", sub_delay);
183
qDebug(" sub_pos: %d", sub_pos);
184
qDebug(" sub_scale: %f", sub_scale);
185
qDebug(" sub_scale_ass: %f", sub_scale_ass);
187
qDebug(" brightness: %d", brightness);
188
qDebug(" contrast: %d", contrast);
189
qDebug(" gamma: %d", gamma);
190
qDebug(" hue: %d", hue);
191
qDebug(" saturation: %d", saturation);
193
qDebug(" speed: %f", speed);
195
qDebug(" phase_filter: %d", phase_filter);
196
qDebug(" current_denoiser: %d", current_denoiser);
197
qDebug(" deblock_filter: %d", deblock_filter);
198
qDebug(" dering_filter: %d", dering_filter);
199
qDebug(" noise_filter: %d", noise_filter);
200
qDebug(" postprocessing_filter: %d", postprocessing_filter);
201
qDebug(" upscaling_filter: %d", upscaling_filter);
203
qDebug(" current_deinterlacer: %d", current_deinterlacer);
205
qDebug(" add_letterbox: %d", add_letterbox);
207
qDebug(" letterbox: %d", letterbox);
208
qDebug(" panscan_filter: '%s'", panscan_filter.toUtf8().data());
209
qDebug(" crop_43to169_filter: '%s'", crop_43to169_filter.toUtf8().data());
211
qDebug(" karaoke_filter: %d", karaoke_filter);
212
qDebug(" extrastereo_filter: %d", extrastereo_filter);
213
qDebug(" volnorm_filter: %d", volnorm_filter);
215
qDebug(" audio_use_channels: %d", audio_use_channels);
216
qDebug(" stereo_mode: %d", stereo_mode);
218
qDebug(" panscan_factor: %f", panscan_factor);
220
qDebug(" rotate: %d", rotate);
221
qDebug(" flip: %d", flip);
222
qDebug(" mirror: %d", mirror);
224
qDebug(" forced_demuxer: '%s'", forced_demuxer.toUtf8().data());
225
qDebug(" forced_video_codec: '%s'", forced_video_codec.toUtf8().data());
226
qDebug(" forced_audio_codec: '%s'", forced_video_codec.toUtf8().data());
228
qDebug(" original_demuxer: '%s'", original_demuxer.toUtf8().data());
229
qDebug(" original_video_codec: '%s'", original_video_codec.toUtf8().data());
230
qDebug(" original_audio_codec: '%s'", original_video_codec.toUtf8().data());
232
qDebug(" mplayer_additional_options: '%s'", mplayer_additional_options.toUtf8().data());
233
qDebug(" mplayer_additional_video_filters: '%s'", mplayer_additional_video_filters.toUtf8().data());
234
qDebug(" mplayer_additional_audio_filters: '%s'", mplayer_additional_audio_filters.toUtf8().data());
236
qDebug(" win_width: %d", win_width);
237
qDebug(" win_height: %d", win_height);
238
qDebug(" win_aspect(): %f", win_aspect());
240
qDebug(" starting_time: %f", starting_time);
241
qDebug(" is264andHD: %d", is264andHD);
244
#ifndef NO_USE_INI_FILES
245
void MediaSettings::save(QSettings * set) {
246
qDebug("MediaSettings::save");
248
//QSettings * set = settings;
250
/*set->beginGroup( "mediasettings" );*/
252
set->setValue( "current_sec", current_sec );
253
set->setValue( "current_sub_id", current_sub_id );
254
set->setValue( "current_video_id", current_video_id );
255
set->setValue( "current_audio_id", current_audio_id );
256
set->setValue( "current_title_id", current_title_id );
257
set->setValue( "current_chapter_id", current_chapter_id );
258
set->setValue( "current_angle_id", current_angle_id );
260
set->setValue( "aspect_ratio", aspect_ratio_id );
261
//set->setValue( "fullscreen", fullscreen );
262
set->setValue( "volume", volume );
263
set->setValue( "mute", mute );
264
set->setValue( "external_subtitles", external_subtitles );
265
set->setValue( "external_audio", external_audio );
266
set->setValue( "sub_delay", sub_delay);
267
set->setValue( "audio_delay", audio_delay);
268
set->setValue( "sub_pos", sub_pos);
269
set->setValue( "sub_scale", sub_scale);
270
set->setValue( "sub_scale_ass", sub_scale_ass);
272
set->setValue( "brightness", brightness);
273
set->setValue( "contrast", contrast);
274
set->setValue( "gamma", gamma);
275
set->setValue( "hue", hue);
276
set->setValue( "saturation", saturation);
278
set->setValue("audio_equalizer", audio_equalizer );
280
set->setValue( "speed", speed);
282
set->setValue( "phase_filter", phase_filter);
283
set->setValue( "current_denoiser", current_denoiser);
284
set->setValue( "deblock_filter", deblock_filter);
285
set->setValue( "dering_filter", dering_filter);
286
set->setValue( "noise_filter", noise_filter);
287
set->setValue( "postprocessing_filter", postprocessing_filter);
288
set->setValue( "upscaling_filter", upscaling_filter);
290
set->setValue( "current_deinterlacer", current_deinterlacer);
292
set->setValue( "add_letterbox", add_letterbox );
294
set->setValue( "letterbox", letterbox );
295
set->setValue( "panscan_filter", panscan_filter);
296
set->setValue( "crop_43to169_filter", crop_43to169_filter);
298
set->setValue( "karaoke_filter", karaoke_filter);
299
set->setValue( "extrastereo_filter", extrastereo_filter);
300
set->setValue( "volnorm_filter", volnorm_filter);
302
set->setValue( "audio_use_channels", audio_use_channels);
303
set->setValue( "stereo_mode", stereo_mode);
305
set->setValue( "panscan_factor", panscan_factor);
307
set->setValue( "rotate", rotate );
308
set->setValue( "flip", flip);
309
set->setValue( "mirror", mirror);
311
set->setValue( "forced_demuxer", forced_demuxer);
312
set->setValue( "forced_video_codec", forced_video_codec);
313
set->setValue( "forced_audio_codec", forced_audio_codec);
315
set->setValue( "original_demuxer", original_demuxer);
316
set->setValue( "original_video_codec", original_video_codec);
317
set->setValue( "original_audio_codec", original_audio_codec);
319
set->setValue( "mplayer_additional_options", mplayer_additional_options);
320
set->setValue( "mplayer_additional_video_filters", mplayer_additional_video_filters);
321
set->setValue( "mplayer_additional_audio_filters", mplayer_additional_audio_filters);
323
set->setValue( "win_width", win_width );
324
set->setValue( "win_height", win_height );
326
set->setValue( "starting_time", starting_time );
328
set->setValue( "is264andHD", is264andHD );
333
void MediaSettings::load(QSettings * set) {
334
qDebug("MediaSettings::load");
336
//QSettings * set = settings;
338
/*set->beginGroup( "mediasettings" );*/
340
current_sec = set->value( "current_sec", current_sec).toDouble();
341
current_sub_id = set->value( "current_sub_id", current_sub_id ).toInt();
342
current_video_id = set->value( "current_video_id", current_video_id ).toInt();
343
current_audio_id = set->value( "current_audio_id", current_audio_id ).toInt();
344
current_title_id = set->value( "current_title_id", current_title_id ).toInt();
345
current_chapter_id = set->value( "current_chapter_id", current_chapter_id ).toInt();
346
current_angle_id = set->value( "current_angle_id", current_angle_id ).toInt();
348
aspect_ratio_id = set->value( "aspect_ratio", aspect_ratio_id ).toInt();
349
//fullscreen = set->value( "fullscreen", fullscreen ).toBool();
350
volume = set->value( "volume", volume ).toInt();
351
mute = set->value( "mute", mute ).toBool();
352
external_subtitles = set->value( "external_subtitles", external_subtitles ).toString();
353
external_audio = set->value( "external_audio", external_audio ).toString();
354
sub_delay = set->value( "sub_delay", sub_delay).toInt();
355
audio_delay = set->value( "audio_delay", audio_delay).toInt();
356
sub_pos = set->value( "sub_pos", sub_pos).toInt();
357
sub_scale = set->value( "sub_scale", sub_scale).toDouble();
358
sub_scale_ass = set->value( "sub_scale_ass", sub_scale_ass).toDouble();
360
brightness = set->value( "brightness", brightness).toInt();
361
contrast = set->value( "contrast", contrast).toInt();
362
gamma = set->value( "gamma", gamma).toInt();
363
hue = set->value( "hue", hue).toInt();
364
saturation = set->value( "saturation", saturation).toInt();
366
audio_equalizer = set->value("audio_equalizer", audio_equalizer ).toList();
368
speed = set->value( "speed", speed ).toDouble();
370
phase_filter = set->value( "phase_filter", phase_filter ).toBool();
371
current_denoiser = set->value( "current_denoiser", current_denoiser).toInt();
372
deblock_filter = set->value( "deblock_filter", deblock_filter).toBool();
373
dering_filter = set->value( "dering_filter", dering_filter).toBool();
374
noise_filter = set->value( "noise_filter", noise_filter).toBool();
375
postprocessing_filter = set->value( "postprocessing_filter", postprocessing_filter).toBool();
376
upscaling_filter = set->value( "upscaling_filter", upscaling_filter).toBool();
378
current_deinterlacer = set->value( "current_deinterlacer", current_deinterlacer ).toInt();
380
add_letterbox = set->value( "add_letterbox", add_letterbox ).toBool();
382
letterbox = (LetterboxType) set->value( "letterbox", letterbox ).toInt();
383
panscan_filter = set->value( "panscan_filter", panscan_filter).toString();
384
crop_43to169_filter = set->value( "crop_43to169_filter", crop_43to169_filter).toString();
386
karaoke_filter = set->value( "karaoke_filter", karaoke_filter).toBool();
387
extrastereo_filter = set->value( "extrastereo_filter", extrastereo_filter).toBool();
388
volnorm_filter = set->value( "volnorm_filter", volnorm_filter).toBool();
390
audio_use_channels = set->value( "audio_use_channels", audio_use_channels).toInt();
391
stereo_mode = set->value( "stereo_mode", stereo_mode).toInt();
393
panscan_factor = set->value( "panscan_factor", panscan_factor).toDouble();
395
rotate = set->value( "rotate", rotate).toInt();
396
flip = set->value( "flip", flip).toBool();
397
mirror = set->value( "mirror", mirror).toBool();
399
forced_demuxer = set->value( "forced_demuxer", forced_demuxer).toString();
400
forced_video_codec = set->value( "forced_video_codec", forced_video_codec).toString();
401
forced_audio_codec = set->value( "forced_audio_codec", forced_audio_codec).toString();
403
original_demuxer = set->value( "original_demuxer", original_demuxer).toString();
404
original_video_codec = set->value( "original_video_codec", original_video_codec).toString();
405
original_audio_codec = set->value( "original_audio_codec", original_audio_codec).toString();
407
mplayer_additional_options = set->value( "mplayer_additional_options", mplayer_additional_options).toString();
408
mplayer_additional_video_filters = set->value( "mplayer_additional_video_filters", mplayer_additional_video_filters).toString();
409
mplayer_additional_audio_filters = set->value( "mplayer_additional_audio_filters", mplayer_additional_audio_filters).toString();
411
win_width = set->value( "win_width", win_width ).toInt();
412
win_height = set->value( "win_height", win_height ).toInt();
414
starting_time = set->value( "starting_time", starting_time ).toDouble();
416
is264andHD = set->value( "is264andHD", is264andHD ).toBool();
420
// ChDefault not used anymore
421
if (audio_use_channels == ChDefault) audio_use_channels = ChStereo;
424
#endif // NO_USE_INI_FILES