source: smplayer/trunk/src/mediasettings.cpp@ 165

Last change on this file since 165 was 165, checked in by Silvan Scherrer, 11 years ago

SMPlayer: update trunk to latest 0.8.7

  • Property svn:eol-style set to LF
File size: 17.4 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net>
3
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.
8
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.
13
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
17*/
18
19#include "mediasettings.h"
20#include "preferences.h"
21#include "global.h"
22#include <QSettings>
23
24using namespace Global;
25
26MediaSettings::MediaSettings() {
27 reset();
28}
29
30MediaSettings::~MediaSettings() {
31}
32
33void MediaSettings::reset() {
34 current_sec = 0;
35 //current_sub_id = SubNone;
36 current_sub_id = NoneSelected;
37#if PROGRAM_SWITCH
38 current_program_id = NoneSelected;
39#endif
40 current_video_id = NoneSelected;
41 current_audio_id = NoneSelected;
42 current_title_id = NoneSelected;
43 current_chapter_id = NoneSelected;
44 current_angle_id = NoneSelected;
45
46 aspect_ratio_id = AspectAuto;
47
48 //fullscreen = false;
49 volume = pref->initial_volume;
50 mute = false;
51 external_subtitles = "";
52 external_subtitles_fps = SFPS_None;
53 external_audio = "";
54 sub_delay=0;
55 audio_delay=0;
56 sub_pos = pref->initial_sub_pos; // 100% by default
57 sub_scale = pref->initial_sub_scale;
58 sub_scale_ass = pref->initial_sub_scale_ass;
59
60 closed_caption_channel = 0; // disabled
61
62 brightness = pref->initial_brightness;
63 contrast = pref->initial_contrast;
64 gamma = pref->initial_gamma;
65 hue = pref->initial_hue;
66 saturation = pref->initial_saturation;
67
68 audio_equalizer = pref->initial_audio_equalizer;
69
70 speed = 1.0;
71
72 phase_filter = false;
73 deblock_filter = false;
74 dering_filter = false;
75 gradfun_filter = false;
76 noise_filter = false;
77 postprocessing_filter = pref->initial_postprocessing;
78 upscaling_filter = false;
79 current_denoiser = NoDenoise;
80 current_unsharp = 0;
81
82 //current_deinterlacer = NoDeinterlace;
83 current_deinterlacer = pref->initial_deinterlace;
84
85 add_letterbox = false;
86
87 karaoke_filter = false;
88 extrastereo_filter = false;
89 volnorm_filter = pref->initial_volnorm;
90
91 audio_use_channels = pref->initial_audio_channels; //ChDefault; // (0)
92 stereo_mode = pref->initial_stereo_mode; //Stereo; // (0)
93
94 zoom_factor = pref->initial_zoom_factor; // 1.0;
95
96#if USE_MPLAYER_PANSCAN
97 panscan_factor = 0;
98#endif
99
100 starting_time = -1; // Not set yet.
101
102 rotate = NoRotate;
103 flip = false;
104 mirror = false;
105
106 loop = false;
107 A_marker = -1;
108 B_marker = -1;
109
110 is264andHD = false;
111
112 forced_demuxer="";
113 if (pref->use_lavf_demuxer) forced_demuxer = "lavf";
114
115 forced_video_codec="";
116 forced_audio_codec="";
117
118 original_demuxer="";
119 original_video_codec="";
120 original_audio_codec="";
121
122 mplayer_additional_options="";
123 mplayer_additional_video_filters="";
124 mplayer_additional_audio_filters="";
125
126 win_width=400;
127 win_height=300;
128}
129
130double MediaSettings::win_aspect() {
131 return (double) win_width / win_height;
132}
133
134double MediaSettings::aspectToNum(Aspect aspect) {
135 double asp;
136
137 switch (aspect) {
138 case MediaSettings::AspectNone: asp = 0; break;
139 case MediaSettings::Aspect43: asp = (double) 4 / 3; break;
140 case MediaSettings::Aspect169: asp = (double) 16 / 9; break;
141 case MediaSettings::Aspect149: asp = (double) 14 / 9; break;
142 case MediaSettings::Aspect1610: asp = (double) 16 / 10; break;
143 case MediaSettings::Aspect54: asp = (double) 5 / 4; break;
144 case MediaSettings::Aspect235: asp = 2.35; break;
145 case MediaSettings::Aspect11: asp = 1; break;
146 case MediaSettings::Aspect32: asp = (double) 3 / 2; break;
147 case MediaSettings::Aspect1410: asp = (double) 14 / 10; break;
148 case MediaSettings::Aspect118: asp = (double) 11 / 8; break;
149 case MediaSettings::AspectAuto: asp = win_aspect(); break;
150 default: asp = win_aspect();
151 qWarning("MediaSettings::aspectToNum: invalid aspect: %d", aspect);
152 }
153
154 return asp;
155}
156
157QString MediaSettings::aspectToString(Aspect aspect) {
158 QString asp_name;
159
160 switch (aspect) {
161 case MediaSettings::AspectNone: asp_name = QObject::tr("disabled", "aspect_ratio"); break;
162 case MediaSettings::Aspect43: asp_name = "4:3"; break;
163 case MediaSettings::Aspect169: asp_name = "16:9"; break;
164 case MediaSettings::Aspect149: asp_name = "14:9"; break;
165 case MediaSettings::Aspect1610: asp_name = "16:10"; break;
166 case MediaSettings::Aspect54: asp_name = "5:4"; break;
167 case MediaSettings::Aspect235: asp_name = "2.35:1"; break;
168 case MediaSettings::Aspect11: asp_name = "1:1"; break;
169 case MediaSettings::Aspect32: asp_name = "3:2"; break;
170 case MediaSettings::Aspect1410: asp_name = "14:10"; break;
171 case MediaSettings::Aspect118: asp_name = "11:8"; break;
172 case MediaSettings::AspectAuto: asp_name = QObject::tr("auto", "aspect_ratio"); break;
173 default: asp_name = QObject::tr("unknown", "aspect_ratio");
174 }
175
176 return asp_name;
177}
178
179void MediaSettings::list() {
180 qDebug("MediaSettings::list");
181
182 qDebug(" current_sec: %f", current_sec);
183 qDebug(" current_sub_id: %d", current_sub_id);
184#if PROGRAM_SWITCH
185 qDebug(" current_program_id: %d", current_program_id);
186#endif
187 qDebug(" current_video_id: %d", current_video_id);
188 qDebug(" current_audio_id: %d", current_audio_id);
189 qDebug(" current_title_id: %d", current_title_id);
190 qDebug(" current_chapter_id: %d", current_chapter_id);
191 qDebug(" current_angle_id: %d", current_angle_id);
192
193 qDebug(" aspect_ratio_id: %d", aspect_ratio_id);
194 //qDebug(" fullscreen: %d", fullscreen);
195 qDebug(" volume: %d", volume);
196 qDebug(" mute: %d", mute);
197 qDebug(" external_subtitles: '%s'", external_subtitles.toUtf8().data());
198 qDebug(" external_subtitles_fps: '%d'", external_subtitles_fps);
199 qDebug(" external_audio: '%s'", external_audio.toUtf8().data());
200 qDebug(" sub_delay: %d", sub_delay);
201 qDebug(" audio_delay: %d", sub_delay);
202 qDebug(" sub_pos: %d", sub_pos);
203 qDebug(" sub_scale: %f", sub_scale);
204 qDebug(" sub_scale_ass: %f", sub_scale_ass);
205
206 qDebug(" closed_caption_channel: %d", closed_caption_channel);
207
208 qDebug(" brightness: %d", brightness);
209 qDebug(" contrast: %d", contrast);
210 qDebug(" gamma: %d", gamma);
211 qDebug(" hue: %d", hue);
212 qDebug(" saturation: %d", saturation);
213
214 qDebug(" speed: %f", speed);
215
216 qDebug(" phase_filter: %d", phase_filter);
217 qDebug(" deblock_filter: %d", deblock_filter);
218 qDebug(" dering_filter: %d", dering_filter);
219 qDebug(" gradfun_filter: %d", gradfun_filter);
220 qDebug(" noise_filter: %d", noise_filter);
221 qDebug(" postprocessing_filter: %d", postprocessing_filter);
222 qDebug(" upscaling_filter: %d", upscaling_filter);
223 qDebug(" current_denoiser: %d", current_denoiser);
224 qDebug(" current_unsharp: %d", current_unsharp);
225
226 qDebug(" current_deinterlacer: %d", current_deinterlacer);
227
228 qDebug(" add_letterbox: %d", add_letterbox);
229
230 qDebug(" karaoke_filter: %d", karaoke_filter);
231 qDebug(" extrastereo_filter: %d", extrastereo_filter);
232 qDebug(" volnorm_filter: %d", volnorm_filter);
233
234 qDebug(" audio_use_channels: %d", audio_use_channels);
235 qDebug(" stereo_mode: %d", stereo_mode);
236
237 qDebug(" zoom_factor: %f", zoom_factor);
238
239#if USE_MPLAYER_PANSCAN
240 qDebug(" panscan_factor: %f", zoom_factor);
241#endif
242
243 qDebug(" rotate: %d", rotate);
244 qDebug(" flip: %d", flip);
245 qDebug(" mirror: %d", mirror);
246
247 qDebug(" loop: %d", loop);
248 qDebug(" A_marker: %d", A_marker);
249 qDebug(" B_marker: %d", B_marker);
250
251 qDebug(" forced_demuxer: '%s'", forced_demuxer.toUtf8().data());
252 qDebug(" forced_video_codec: '%s'", forced_video_codec.toUtf8().data());
253 qDebug(" forced_audio_codec: '%s'", forced_video_codec.toUtf8().data());
254
255 qDebug(" original_demuxer: '%s'", original_demuxer.toUtf8().data());
256 qDebug(" original_video_codec: '%s'", original_video_codec.toUtf8().data());
257 qDebug(" original_audio_codec: '%s'", original_video_codec.toUtf8().data());
258
259 qDebug(" mplayer_additional_options: '%s'", mplayer_additional_options.toUtf8().data());
260 qDebug(" mplayer_additional_video_filters: '%s'", mplayer_additional_video_filters.toUtf8().data());
261 qDebug(" mplayer_additional_audio_filters: '%s'", mplayer_additional_audio_filters.toUtf8().data());
262
263 qDebug(" win_width: %d", win_width);
264 qDebug(" win_height: %d", win_height);
265 qDebug(" win_aspect(): %f", win_aspect());
266
267 qDebug(" starting_time: %f", starting_time);
268 qDebug(" is264andHD: %d", is264andHD);
269}
270
271#ifndef NO_USE_INI_FILES
272void MediaSettings::save(QSettings * set) {
273 qDebug("MediaSettings::save");
274
275 //QSettings * set = settings;
276
277 /*set->beginGroup( "mediasettings" );*/
278
279 set->setValue( "current_sec", current_sec );
280
281 QString demuxer_section = "demuxer_default";
282 if (!forced_demuxer.isEmpty()) demuxer_section = "demuxer_" + forced_demuxer;
283
284 set->beginGroup(demuxer_section);
285 set->setValue( "current_sub_id", current_sub_id );
286 #if PROGRAM_SWITCH
287 set->setValue( "current_program_id", current_program_id );
288 #endif
289 set->setValue( "current_video_id", current_video_id );
290 set->setValue( "current_audio_id", current_audio_id );
291 set->endGroup();
292
293 set->setValue( "current_title_id", current_title_id );
294 set->setValue( "current_chapter_id", current_chapter_id );
295 set->setValue( "current_angle_id", current_angle_id );
296
297 set->setValue( "aspect_ratio", aspect_ratio_id );
298 //set->setValue( "fullscreen", fullscreen );
299 set->setValue( "volume", volume );
300 set->setValue( "mute", mute );
301 set->setValue( "external_subtitles", external_subtitles );
302 set->setValue( "external_subtitles_fps", external_subtitles_fps );
303 set->setValue( "external_audio", external_audio );
304 set->setValue( "sub_delay", sub_delay);
305 set->setValue( "audio_delay", audio_delay);
306 set->setValue( "sub_pos", sub_pos);
307 set->setValue( "sub_scale", sub_scale);
308 set->setValue( "sub_scale_ass", sub_scale_ass);
309
310 set->setValue( "closed_caption_channel", closed_caption_channel);
311
312 set->setValue( "brightness", brightness);
313 set->setValue( "contrast", contrast);
314 set->setValue( "gamma", gamma);
315 set->setValue( "hue", hue);
316 set->setValue( "saturation", saturation);
317
318 set->setValue("audio_equalizer", audio_equalizer );
319
320 set->setValue( "speed", speed);
321
322 set->setValue( "phase_filter", phase_filter);
323 set->setValue( "deblock_filter", deblock_filter);
324 set->setValue( "dering_filter", dering_filter);
325 set->setValue( "gradfun_filter", gradfun_filter);
326 set->setValue( "noise_filter", noise_filter);
327 set->setValue( "postprocessing_filter", postprocessing_filter);
328 set->setValue( "upscaling_filter", upscaling_filter);
329 set->setValue( "current_denoiser", current_denoiser);
330 set->setValue( "current_unsharp", current_unsharp);
331
332 set->setValue( "current_deinterlacer", current_deinterlacer);
333
334 set->setValue( "add_letterbox", add_letterbox );
335
336 set->setValue( "karaoke_filter", karaoke_filter);
337 set->setValue( "extrastereo_filter", extrastereo_filter);
338 set->setValue( "volnorm_filter", volnorm_filter);
339
340 set->setValue( "audio_use_channels", audio_use_channels);
341 set->setValue( "stereo_mode", stereo_mode);
342
343 set->setValue( "zoom_factor", zoom_factor);
344
345#if USE_MPLAYER_PANSCAN
346 set->setValue( "panscan_factor", zoom_factor);
347#endif
348
349 set->setValue( "rotate", rotate );
350 set->setValue( "flip", flip);
351 set->setValue( "mirror", mirror);
352
353 set->setValue( "loop", loop);
354 set->setValue( "A_marker", A_marker);
355 set->setValue( "B_marker", B_marker);
356
357 set->setValue( "forced_demuxer", forced_demuxer);
358 set->setValue( "forced_video_codec", forced_video_codec);
359 set->setValue( "forced_audio_codec", forced_audio_codec);
360
361 set->setValue( "original_demuxer", original_demuxer);
362 set->setValue( "original_video_codec", original_video_codec);
363 set->setValue( "original_audio_codec", original_audio_codec);
364
365 set->setValue( "mplayer_additional_options", mplayer_additional_options);
366 set->setValue( "mplayer_additional_video_filters", mplayer_additional_video_filters);
367 set->setValue( "mplayer_additional_audio_filters", mplayer_additional_audio_filters);
368
369 set->setValue( "win_width", win_width );
370 set->setValue( "win_height", win_height );
371
372 set->setValue( "starting_time", starting_time );
373
374 set->setValue( "is264andHD", is264andHD );
375
376 /*set->endGroup();*/
377}
378
379void MediaSettings::load(QSettings * set) {
380 qDebug("MediaSettings::load");
381
382 //QSettings * set = settings;
383
384 /*set->beginGroup( "mediasettings" );*/
385
386 current_sec = set->value( "current_sec", current_sec).toDouble();
387
388 forced_demuxer = set->value( "forced_demuxer", forced_demuxer).toString();
389 if (pref->use_lavf_demuxer) forced_demuxer = "lavf";
390
391 QString demuxer_section = "demuxer_default";
392 if (!forced_demuxer.isEmpty()) demuxer_section = "demuxer_" + forced_demuxer;
393
394 set->beginGroup(demuxer_section);
395 current_sub_id = set->value( "current_sub_id", current_sub_id ).toInt();
396 #if PROGRAM_SWITCH
397 current_program_id = set->value( "current_program_id", current_program_id ).toInt();
398 #endif
399 current_video_id = set->value( "current_video_id", current_video_id ).toInt();
400 current_audio_id = set->value( "current_audio_id", current_audio_id ).toInt();
401 set->endGroup();
402
403 current_title_id = set->value( "current_title_id", current_title_id ).toInt();
404 current_chapter_id = set->value( "current_chapter_id", current_chapter_id ).toInt();
405 current_angle_id = set->value( "current_angle_id", current_angle_id ).toInt();
406
407 aspect_ratio_id = set->value( "aspect_ratio", aspect_ratio_id ).toInt();
408 //fullscreen = set->value( "fullscreen", fullscreen ).toBool();
409 volume = set->value( "volume", volume ).toInt();
410 mute = set->value( "mute", mute ).toBool();
411 external_subtitles = set->value( "external_subtitles", external_subtitles ).toString();
412 external_subtitles_fps = set->value( "external_subtitles_fps", external_subtitles_fps ).toInt();
413 external_audio = set->value( "external_audio", external_audio ).toString();
414 sub_delay = set->value( "sub_delay", sub_delay).toInt();
415 audio_delay = set->value( "audio_delay", audio_delay).toInt();
416 sub_pos = set->value( "sub_pos", sub_pos).toInt();
417 sub_scale = set->value( "sub_scale", sub_scale).toDouble();
418 sub_scale_ass = set->value( "sub_scale_ass", sub_scale_ass).toDouble();
419
420 closed_caption_channel = set->value( "closed_caption_channel", closed_caption_channel).toInt();
421
422 brightness = set->value( "brightness", brightness).toInt();
423 contrast = set->value( "contrast", contrast).toInt();
424 gamma = set->value( "gamma", gamma).toInt();
425 hue = set->value( "hue", hue).toInt();
426 saturation = set->value( "saturation", saturation).toInt();
427
428 audio_equalizer = set->value("audio_equalizer", audio_equalizer ).toList();
429
430 speed = set->value( "speed", speed ).toDouble();
431
432 phase_filter = set->value( "phase_filter", phase_filter ).toBool();
433 deblock_filter = set->value( "deblock_filter", deblock_filter).toBool();
434 dering_filter = set->value( "dering_filter", dering_filter).toBool();
435 gradfun_filter = set->value( "gradfun_filter", gradfun_filter).toBool();
436 noise_filter = set->value( "noise_filter", noise_filter).toBool();
437 postprocessing_filter = set->value( "postprocessing_filter", postprocessing_filter).toBool();
438 upscaling_filter = set->value( "upscaling_filter", upscaling_filter).toBool();
439 current_denoiser = set->value( "current_denoiser", current_denoiser).toInt();
440 current_unsharp = set->value( "current_unsharp", current_unsharp).toInt();
441
442 current_deinterlacer = set->value( "current_deinterlacer", current_deinterlacer ).toInt();
443
444 add_letterbox = set->value( "add_letterbox", add_letterbox ).toBool();
445
446 karaoke_filter = set->value( "karaoke_filter", karaoke_filter).toBool();
447 extrastereo_filter = set->value( "extrastereo_filter", extrastereo_filter).toBool();
448 volnorm_filter = set->value( "volnorm_filter", volnorm_filter).toBool();
449
450 audio_use_channels = set->value( "audio_use_channels", audio_use_channels).toInt();
451 stereo_mode = set->value( "stereo_mode", stereo_mode).toInt();
452
453 zoom_factor = set->value( "zoom_factor", zoom_factor).toDouble();
454
455#if USE_MPLAYER_PANSCAN
456 panscan_factor = set->value( "panscan_factor", panscan_factor).toDouble();
457#endif
458
459 rotate = set->value( "rotate", rotate).toInt();
460 flip = set->value( "flip", flip).toBool();
461 mirror = set->value( "mirror", mirror).toBool();
462
463 loop = set->value( "loop", loop).toBool();
464 A_marker = set->value( "A_marker", A_marker).toInt();
465 B_marker = set->value( "B_marker", B_marker).toInt();
466
467 forced_video_codec = set->value( "forced_video_codec", forced_video_codec).toString();
468 forced_audio_codec = set->value( "forced_audio_codec", forced_audio_codec).toString();
469
470 original_demuxer = set->value( "original_demuxer", original_demuxer).toString();
471 original_video_codec = set->value( "original_video_codec", original_video_codec).toString();
472 original_audio_codec = set->value( "original_audio_codec", original_audio_codec).toString();
473
474 mplayer_additional_options = set->value( "mplayer_additional_options", mplayer_additional_options).toString();
475 mplayer_additional_video_filters = set->value( "mplayer_additional_video_filters", mplayer_additional_video_filters).toString();
476 mplayer_additional_audio_filters = set->value( "mplayer_additional_audio_filters", mplayer_additional_audio_filters).toString();
477
478 win_width = set->value( "win_width", win_width ).toInt();
479 win_height = set->value( "win_height", win_height ).toInt();
480
481 starting_time = set->value( "starting_time", starting_time ).toDouble();
482
483 is264andHD = set->value( "is264andHD", is264andHD ).toBool();
484
485 /*set->endGroup();*/
486
487 // ChDefault not used anymore
488 if (audio_use_channels == ChDefault) audio_use_channels = ChStereo;
489}
490
491#endif // NO_USE_INI_FILES
Note: See TracBrowser for help on using the repository browser.