~ubuntu-branches/ubuntu/wily/smplayer/wily

« back to all changes in this revision

Viewing changes to src/mediasettings.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Maia Kozheva
  • Date: 2009-03-31 23:05:43 UTC
  • mto: (1.1.9 upstream) (3.1.2 squeeze)
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: james.westby@ubuntu.com-20090331230543-nsklbxenl2hf2n6h
ImportĀ upstreamĀ versionĀ 0.6.7

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*  smplayer, GUI front-end for mplayer.
 
2
    Copyright (C) 2006-2009 Ricardo Villalba <rvm@escomposlinux.org>
 
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
 
 
24
using namespace Global;
 
25
 
 
26
MediaSettings::MediaSettings() {
 
27
        reset();
 
28
}
 
29
 
 
30
MediaSettings::~MediaSettings() {
 
31
}
 
32
 
 
33
void MediaSettings::reset() {
 
34
        current_sec = 0;
 
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;
 
42
 
 
43
        aspect_ratio_id = AspectAuto;
 
44
 
 
45
        //fullscreen = FALSE;
 
46
        volume = pref->initial_volume;
 
47
        mute = false;
 
48
        external_subtitles = "";
 
49
        external_audio = "";
 
50
        sub_delay=0;
 
51
        audio_delay=0;
 
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;
 
55
 
 
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;
 
61
 
 
62
        audio_equalizer = pref->initial_audio_equalizer;
 
63
 
 
64
        speed = 1.0;
 
65
 
 
66
        phase_filter = false;
 
67
    current_denoiser = NoDenoise;
 
68
    deblock_filter = false;
 
69
        dering_filter = false;
 
70
        noise_filter = false;
 
71
        postprocessing_filter = pref->initial_postprocessing;
 
72
        upscaling_filter = false;
 
73
 
 
74
        //current_deinterlacer = NoDeinterlace;
 
75
        current_deinterlacer = pref->initial_deinterlace;
 
76
 
 
77
#if NEW_ASPECT_CODE
 
78
        add_letterbox = false;
 
79
#else
 
80
        letterbox = NoLetterbox;
 
81
        panscan_filter = "";
 
82
        crop_43to169_filter = "";
 
83
#endif
 
84
 
 
85
    karaoke_filter = false;
 
86
        extrastereo_filter = false;
 
87
        volnorm_filter = pref->initial_volnorm;
 
88
 
 
89
        audio_use_channels = pref->initial_audio_channels; //ChDefault; // (0)
 
90
        stereo_mode = pref->initial_stereo_mode; //Stereo; // (0)
 
91
 
 
92
        panscan_factor = pref->initial_panscan_factor; // 1.0;
 
93
 
 
94
        starting_time = -1; // Not set yet.
 
95
 
 
96
        rotate = NoRotate;
 
97
        flip = false;
 
98
        mirror = false;
 
99
 
 
100
        is264andHD = false;
 
101
 
 
102
        forced_demuxer="";
 
103
    forced_video_codec="";
 
104
    forced_audio_codec="";
 
105
 
 
106
        original_demuxer="";
 
107
    original_video_codec="";
 
108
    original_audio_codec="";
 
109
 
 
110
        mplayer_additional_options="";
 
111
        mplayer_additional_video_filters="";
 
112
        mplayer_additional_audio_filters="";
 
113
 
 
114
        win_width=400;
 
115
        win_height=300;
 
116
}
 
117
 
 
118
double MediaSettings::win_aspect() {
 
119
        return (double) win_width / win_height;
 
120
}
 
121
 
 
122
 
 
123
#if NEW_ASPECT_CODE
 
124
double MediaSettings::aspectToNum(Aspect aspect) {
 
125
        double asp;
 
126
 
 
127
        switch (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);
 
139
        }
 
140
 
 
141
        return asp;
 
142
}
 
143
 
 
144
QString MediaSettings::aspectToString(Aspect aspect) {
 
145
        QString asp_name;
 
146
 
 
147
        switch (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");
 
158
        }
 
159
 
 
160
        return asp_name;
 
161
}
 
162
#endif
 
163
 
 
164
void MediaSettings::list() {
 
165
        qDebug("MediaSettings::list");
 
166
 
 
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);
 
174
 
 
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);
 
186
 
 
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);
 
192
 
 
193
        qDebug("  speed: %f", speed);
 
194
 
 
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);
 
202
 
 
203
        qDebug("  current_deinterlacer: %d", current_deinterlacer);
 
204
#if NEW_ASPECT_CODE
 
205
        qDebug("  add_letterbox: %d", add_letterbox);
 
206
#else
 
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());
 
210
#endif
 
211
        qDebug("  karaoke_filter: %d", karaoke_filter);
 
212
        qDebug("  extrastereo_filter: %d", extrastereo_filter);
 
213
        qDebug("  volnorm_filter: %d", volnorm_filter);
 
214
 
 
215
        qDebug("  audio_use_channels: %d", audio_use_channels);
 
216
        qDebug("  stereo_mode: %d", stereo_mode);
 
217
 
 
218
        qDebug("  panscan_factor: %f", panscan_factor);
 
219
 
 
220
        qDebug("  rotate: %d", rotate);
 
221
        qDebug("  flip: %d", flip);
 
222
        qDebug("  mirror: %d", mirror);
 
223
 
 
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());
 
227
 
 
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());
 
231
 
 
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());
 
235
 
 
236
        qDebug("  win_width: %d", win_width);
 
237
        qDebug("  win_height: %d", win_height); 
 
238
        qDebug("  win_aspect(): %f", win_aspect()); 
 
239
 
 
240
        qDebug("  starting_time: %f", starting_time);
 
241
        qDebug("  is264andHD: %d", is264andHD);
 
242
}
 
243
 
 
244
#ifndef NO_USE_INI_FILES
 
245
void MediaSettings::save(QSettings * set) {
 
246
        qDebug("MediaSettings::save");
 
247
 
 
248
        //QSettings * set = settings;
 
249
 
 
250
        /*set->beginGroup( "mediasettings" );*/
 
251
 
 
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 );
 
259
 
 
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);
 
271
 
 
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);
 
277
 
 
278
    set->setValue("audio_equalizer", audio_equalizer );
 
279
 
 
280
        set->setValue( "speed", speed);
 
281
 
 
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);
 
289
 
 
290
        set->setValue( "current_deinterlacer", current_deinterlacer);
 
291
#if NEW_ASPECT_CODE
 
292
        set->setValue( "add_letterbox", add_letterbox );
 
293
#else
 
294
        set->setValue( "letterbox", letterbox );
 
295
        set->setValue( "panscan_filter", panscan_filter);
 
296
        set->setValue( "crop_43to169_filter", crop_43to169_filter);
 
297
#endif
 
298
        set->setValue( "karaoke_filter", karaoke_filter);
 
299
        set->setValue( "extrastereo_filter", extrastereo_filter);
 
300
        set->setValue( "volnorm_filter", volnorm_filter);
 
301
 
 
302
        set->setValue( "audio_use_channels", audio_use_channels);
 
303
        set->setValue( "stereo_mode", stereo_mode);
 
304
 
 
305
        set->setValue( "panscan_factor", panscan_factor);
 
306
 
 
307
        set->setValue( "rotate", rotate );
 
308
        set->setValue( "flip", flip);
 
309
        set->setValue( "mirror", mirror);
 
310
 
 
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);
 
314
 
 
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);
 
318
 
 
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);
 
322
 
 
323
        set->setValue( "win_width", win_width );
 
324
        set->setValue( "win_height", win_height );
 
325
 
 
326
        set->setValue( "starting_time", starting_time );
 
327
 
 
328
        set->setValue( "is264andHD", is264andHD );
 
329
 
 
330
        /*set->endGroup();*/
 
331
}
 
332
 
 
333
void MediaSettings::load(QSettings * set) {
 
334
        qDebug("MediaSettings::load");
 
335
 
 
336
        //QSettings * set = settings;
 
337
 
 
338
        /*set->beginGroup( "mediasettings" );*/
 
339
 
 
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();
 
347
 
 
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();
 
359
 
 
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();
 
365
 
 
366
        audio_equalizer = set->value("audio_equalizer", audio_equalizer ).toList();
 
367
 
 
368
        speed = set->value( "speed", speed ).toDouble();
 
369
 
 
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();
 
377
 
 
378
        current_deinterlacer = set->value( "current_deinterlacer", current_deinterlacer ).toInt();
 
379
#if NEW_ASPECT_CODE
 
380
        add_letterbox = set->value( "add_letterbox", add_letterbox ).toBool();
 
381
#else
 
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();
 
385
#endif
 
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();
 
389
 
 
390
        audio_use_channels = set->value( "audio_use_channels", audio_use_channels).toInt();
 
391
        stereo_mode = set->value( "stereo_mode", stereo_mode).toInt();
 
392
 
 
393
        panscan_factor = set->value( "panscan_factor", panscan_factor).toDouble();
 
394
 
 
395
        rotate = set->value( "rotate", rotate).toInt();
 
396
        flip = set->value( "flip", flip).toBool();
 
397
        mirror = set->value( "mirror", mirror).toBool();
 
398
 
 
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();
 
402
 
 
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();
 
406
 
 
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();
 
410
 
 
411
        win_width = set->value( "win_width", win_width ).toInt();
 
412
        win_height = set->value( "win_height", win_height ).toInt();
 
413
 
 
414
        starting_time = set->value( "starting_time", starting_time ).toDouble();
 
415
 
 
416
        is264andHD = set->value( "is264andHD", is264andHD ).toBool();
 
417
 
 
418
        /*set->endGroup();*/
 
419
 
 
420
        // ChDefault not used anymore
 
421
        if (audio_use_channels == ChDefault) audio_use_channels = ChStereo;
 
422
}
 
423
 
 
424
#endif // NO_USE_INI_FILES