annotate src/a52dec/a52dec.c @ 192:a7c823478180 trunk

[svn] - add fast linedrawing code
author nenolod
date Thu, 02 Nov 2006 22:19:05 -0800
parents 29857e91c6d5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
2 /*
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
3 * xmms-a52dec.c
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
4 *
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
5 * xmms-a52dec is free software; you can redistribute it and/or modify
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
6 * it under the terms of the GNU General Public License as published by
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
7 * the Free Software Foundation; either version 2, or (at your option)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
8 * any later version.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
9 *
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
10 * xmms-a52dec is distributed in the hope that it will be useful,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
13 * GNU General Public License for more details.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
14 *
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
16 * along with GNU Make; see the file COPYING. If not, write to
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
17 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
18 *
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
19 *
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
20 */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
21
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
22
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
23 #include <stdio.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
24 #include <stdlib.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
25 #include <string.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
26 #include <sys/errno.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
27 #include <errno.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
28 #include <pthread.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
29 #include <semaphore.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
30 #include <math.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
31 #include <inttypes.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
32 #include <gtk/gtk.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
33 #include <audacious/util.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
34 #include <audacious/plugin.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
35 #include <audacious/configdb.h>
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
36 #include <audacious/vfs.h>
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
37
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
38 #include <a52dec/a52.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
39 #include <a52dec/mm_accel.h>
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
40
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
41 #include "a52dec.h"
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
42
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
43 #define DRC_BOTH 0
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
44 #define DRC_BOOST 1
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
45 #define DRC_REDUCE 2
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
46
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
47 #define SYNC_SEARCH_LIMIT 65536
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
48 #define COMPRESSION_FACTOR_DEFAULT 0.0
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
49 #define COMPRESSION_TYPE_DEFAULT DRC_BOTH
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
50 #define NODOWNMIX_SURROUND_DEFAULT FALSE
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
51 #define NODOWNMIX_LFE_DEFAULT FALSE
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
52 #define UPMIX_STEREO_DEFAULT FALSE
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
53 #define DUALMONO_DEFAULT 1
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
54 #define REQUESTED_OUTPUT_DEFAULT A52_STEREO
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
55
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
56 sample_t *sample;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
57 char *buf;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
58 long int lastset_time;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
59 char *name;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
60 int flags, sample_rate, bit_rate, frame_size, length;
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
61 VFSFile *in_file;
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
62 int a52_run, a52_not_eof;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
63 gint output_type; // See also: requested_output
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
64 int output_nch;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
65
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
66 // Configuration Options.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
67
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
68 gdouble compression_factor;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
69 gboolean compression_type;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
70 gint requested_output; // See also: output_type
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
71 gint dualmono_channel;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
72 gboolean nodownmix_surround, nodownmix_lfe, upmix_stereo;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
73
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
74 static pthread_t decode_thread = (pthread_t) NULL;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
75 sem_t play_loop_signal;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
76 pthread_mutex_t infile_lock;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
77
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
78 extern InputPlugin a52_ip;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
79
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
80 static int is_our_file_a52 (char *);
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
81 static int synchronise_a52(VFSFile *, int *, int *, int *, int *);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
82 sample_t dynamic_range(sample_t, void *);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
83 static void init_a52 (void);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
84 static void *play_loop (void *);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
85 void convertsample(sample_t *, int16_t *, int);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
86 int16_t float2int (float);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
87 static void play_a52 (char *);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
88 static void stop_a52 (void);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
89 static int get_time_a52 (void);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
90 static void get_song_info_a52 (char *, char **, int *);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
91 static void pause_a52 (short);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
92 static void seek_a52 (int);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
93 static void about_a52 (void);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
94 static void configure_a52 (void);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
95 static void configure_ok(GtkWidget *, gpointer);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
96 static void configure_apply(GtkWidget *, gpointer);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
97 static void info_a52 (char *);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
98
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
99 InputPlugin a52_ip = {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
100 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
101 NULL,
126
29857e91c6d5 [svn] - xmms-a52dec -> 'AC-3 / A52 Decoding Plugin'
nenolod
parents: 124
diff changeset
102 "AC-3 / A52 Decoding Plugin",
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
103 init_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
104 about_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
105 configure_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
106 is_our_file_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
107 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
108 play_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
109 stop_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
110 pause_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
111 seek_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
112 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
113 get_time_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
114 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
115 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
116 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
117 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
118 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
119 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
120 NULL,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
121 get_song_info_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
122 info_a52,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
123 NULL
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
124 };
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
125
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
126 InputPlugin *
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
127 get_iplugin_info (void)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
128 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
129 return &a52_ip;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
130 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
131
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
132 static void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
133 init_a52 (void)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
134 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
135 ConfigDb *config;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
136
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
137 // Retrieve settings from file, setting to default if not found.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
138
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
139 config = bmp_cfg_db_open();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
140 if (!bmp_cfg_db_get_double(config, "xmms-a52dec", "compression_factor",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
141 &compression_factor))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
142 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
143 bmp_cfg_db_set_double(config, "xmms-a52dec", "compression_factor",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
144 COMPRESSION_FACTOR_DEFAULT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
145 compression_factor = COMPRESSION_FACTOR_DEFAULT;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
146 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
147
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
148 if (!bmp_cfg_db_get_int(config, "xmms-a52dec", "compression_type",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
149 &compression_type))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
150 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
151 bmp_cfg_db_set_int(config, "xmms-a52dec", "compression_type",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
152 COMPRESSION_TYPE_DEFAULT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
153 compression_type = COMPRESSION_TYPE_DEFAULT;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
154 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
155
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
156 if (!bmp_cfg_db_get_bool(config, "xmms-a52dec", "nodownmix_surround",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
157 &nodownmix_surround))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
158 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
159 bmp_cfg_db_set_bool(config, "xmms-a52dec", "nodownmix_surround",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
160 NODOWNMIX_SURROUND_DEFAULT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
161 nodownmix_surround = NODOWNMIX_SURROUND_DEFAULT;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
162 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
163
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
164 if (!bmp_cfg_db_get_bool(config, "xmms-a52dec", "nodownmix_lfe",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
165 &nodownmix_lfe))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
166 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
167 bmp_cfg_db_set_bool(config, "xmms-a52dec", "nodownmix_lfe",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
168 NODOWNMIX_LFE_DEFAULT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
169 nodownmix_lfe = NODOWNMIX_LFE_DEFAULT;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
170 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
171
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
172 if (!bmp_cfg_db_get_bool(config, "xmms-a52dec", "upmix_stereo",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
173 &upmix_stereo))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
174 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
175 bmp_cfg_db_set_bool(config, "xmms-a52dec", "upmix_stereo",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
176 UPMIX_STEREO_DEFAULT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
177 upmix_stereo = UPMIX_STEREO_DEFAULT;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
178 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
179
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
180 if (!bmp_cfg_db_get_int(config, "xmms-a52dec", "dualmono_channel",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
181 &dualmono_channel))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
182 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
183 bmp_cfg_db_set_int(config, "xmms-a52dec", "dualmono_channel",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
184 DUALMONO_DEFAULT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
185 requested_output = DUALMONO_DEFAULT;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
186 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
187
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
188 bmp_cfg_db_close(config);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
189 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
190
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
191 static int
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
192 is_our_file_a52 (char *filename)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
193 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
194 int l_flags, l_sample_rate, l_bit_rate, l_frame_size;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
195 gchar *extension;
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
196 VFSFile *temp_file;
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
197
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
198 temp_file = vfs_fopen (filename, "r");
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
199 if (!temp_file)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
200 return FALSE;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
201
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
202 extension = strrchr (filename, '.');
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
203
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
204 if (extension)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
205 if (!strcasecmp (extension, ".a52") || !strcasecmp (extension, ".ac3"))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
206 if (synchronise_a52(temp_file, &l_flags, &l_sample_rate,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
207 &l_bit_rate, &l_frame_size) == 0)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
208 {
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
209 vfs_fclose (temp_file);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
210 return TRUE;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
211 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
212
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
213 vfs_fclose (temp_file);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
214 return FALSE;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
215 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
216
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
217 /* Synchronises a52 bitstream and set parameters.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
218
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
219 Starting from the current file pointer position, search up to
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
220 SYNC_SEARCH_LIMIT bytes for a valid frame, and set file pointer
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
221 to start of frame. file pointer will be set to an undefined position if
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
222 no valid frame found.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
223
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
224 Return 0 if successful.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
225 Return -1 if failed. */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
226
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
227 static int
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
228 synchronise_a52(VFSFile *file, int *l_flags, int *l_sample_rate,
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
229 int *l_bit_rate, int *l_frame_size)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
230 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
231 int count;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
232 char temp_buf[7];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
233
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
234 for (count=0; count <= SYNC_SEARCH_LIMIT; count++)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
235 {
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
236 if (vfs_fread(temp_buf, 7, 1, file) != 1)
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
237 return -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
238
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
239 if (vfs_fseek(file, -6, SEEK_CUR))
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
240 return -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
241
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
242 *l_frame_size = a52_syncinfo (temp_buf, l_flags, l_sample_rate, l_bit_rate);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
243 if (*l_frame_size != 0)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
244 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
245 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
246
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
247 // No valid frame found.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
248
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
249 if (count == SYNC_SEARCH_LIMIT)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
250 return -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
251
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
252 // Valid frame found. Go back 1 bytes to return to start of frame.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
253
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
254 if (vfs_fseek(file, -1, SEEK_CUR))
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
255 return -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
256
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
257 return 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
258 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
259
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
260 sample_t dynamic_range(sample_t recommend, void *nothing)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
261 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
262 switch (compression_type)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
263 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
264 case DRC_BOOST:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
265 if (recommend > 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
266 return pow(recommend, (double) compression_factor);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
267 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
268 return 1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
269 case DRC_REDUCE:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
270 if (recommend < 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
271 return pow(recommend, (double) compression_factor);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
272 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
273 return 1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
274 case DRC_BOTH:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
275 default:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
276 return pow(recommend, (double) compression_factor);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
277 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
278 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
279
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
280 static void *
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
281 play_loop (void *arg)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
282 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
283 int old_frame_size, old_bit_rate;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
284 a52_state_t *dec_state;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
285 char *filebuf;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
286 int16_t outbuf[256*6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
287 int sample_type;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
288 int first_run=1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
289 int tempcount;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
290 sample_t level=32766.0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
291
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
292 /* Re-initialise the a52 library. Without this, there will be
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
293 some noise when switching songs */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
294
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
295 dec_state = a52_init(0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
296 sample = a52_samples(dec_state);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
297
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
298 a52_run = 1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
299 lastset_time = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
300
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
301 old_frame_size = frame_size;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
302 old_bit_rate = bit_rate;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
303 filebuf = malloc(frame_size);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
304
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
305 while (a52_run)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
306 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
307 a52_not_eof = 1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
308
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
309 /* Lock the mutex before synch and read.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
310
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
311 This prevent a52_seek from calling an vfs_fseek between a
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
312 synch and read. */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
313
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
314 pthread_mutex_lock(&infile_lock);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
315
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
316 // Re-synchronise before reading each frame.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
317
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
318 if (synchronise_a52(in_file, &flags, &sample_rate,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
319 &bit_rate, &frame_size) == -1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
320 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
321 pthread_mutex_unlock(&infile_lock);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
322 a52_not_eof = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
323 xmms_usleep(1000);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
324 continue;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
325 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
326
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
327 // Check if frame_size has changed. If yes, realloc filebuf.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
328
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
329 if (frame_size != old_frame_size)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
330 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
331 filebuf = realloc(filebuf, frame_size);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
332 old_frame_size = frame_size;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
333 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
334
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
335 if(!vfs_fread(filebuf, frame_size, 1, in_file))
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
336 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
337 pthread_mutex_unlock(&infile_lock);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
338 a52_not_eof = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
339 xmms_usleep(1000);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
340 continue;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
341 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
342
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
343 pthread_mutex_unlock(&infile_lock);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
344
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
345 if (bit_rate != old_bit_rate)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
346 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
347 a52_ip.set_info (name, length / (bit_rate / 8 / 1000),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
348 bit_rate, sample_rate, output_nch);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
349 old_bit_rate = bit_rate;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
350 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
351
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
352 if (nodownmix_surround == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
353 sample_type = A52_3F2R | A52_ADJUST_LEVEL;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
354 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
355 sample_type = output_type | A52_ADJUST_LEVEL;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
356
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
357 if (nodownmix_lfe == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
358 sample_type |= A52_LFE;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
359 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
360 sample_type &= A52_CHANNEL_MASK;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
361
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
362 // The above is for non-5.1, for 5.1 we add in the LFE channel.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
363
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
364 sample_type |= output_type & A52_LFE;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
365
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
366 if(a52_frame(dec_state, filebuf, &sample_type, &level, 0.0))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
367 break; // Don't know how to deal with this properly.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
368
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
369 a52_dynrng (dec_state, dynamic_range, NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
370
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
371 for (tempcount = 0; tempcount < 6; tempcount++)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
372 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
373 a52_block(dec_state);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
374
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
375 convertsample(sample, outbuf, sample_type);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
376
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
377 /* Sleep while the buffer is full */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
378 while (a52_run && (a52_ip.output->buffer_free () < 512 * output_nch))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
379 xmms_usleep (10000);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
380
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
381 a52_ip.output->write_audio (outbuf, 512 * output_nch);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
382
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
383 /* Signal the play_a52 thread to let it know that we have
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
384 finished writing to buffer. It can safely exit now.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
385
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
386 Without this, get_time_a52 may run before we have started
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
387 playing anything. get_time_a52 will find that the buffer
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
388 is not playing (yet) and return -1 causing stop_a52 to
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
389 stop play_loop.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
390
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
391 We must only run this once, because play_a52 will destroy
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
392 the semaphore once it receive the signal. */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
393
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
394 if (first_run)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
395 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
396 sem_post(&play_loop_signal);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
397 first_run=0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
398 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
399
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
400 /* Add visualisation data. Do not use a52_ip.gettime()
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
401 for the time. Due to buffering, the time for which the
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
402 data is submitted and the current playing time is not
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
403 the same. The vis data is sent in advance and must be
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
404 set for the correct time. */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
405
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
406 a52_ip.add_vis_pcm (vfs_ftell(in_file) / (bit_rate / 8 / 1000),
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
407 FMT_S16_LE, output_nch, 512 * output_nch, outbuf);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
408 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
409 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
410
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
411 /* If sem_post didn't run above, we'll run it now */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
412
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
413 if (first_run)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
414 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
415 sem_post(&play_loop_signal);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
416 first_run=0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
417 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
418
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
419 // Free memory allocated by a52_init.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
420
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
421 a52_free(dec_state);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
422
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
423 /* If we break from the loop due to end of file, the music
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
424 is probably still playing, so we'll sleep and wait for
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
425 it to end. We'll set a52_not_eof to 0 to let get_time_a52
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
426 know that we have reached the end of file.*/
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
427
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
428 vfs_fclose (in_file);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
429 a52_not_eof=0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
430
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
431 pthread_exit (NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
432 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
433
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
434 void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
435 convertsample(sample_t *sample, int16_t *outbuf, int sample_type)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
436 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
437 int count;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
438 int lfe_offset;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
439
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
440 if (sample_type & A52_LFE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
441 lfe_offset = 256;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
442 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
443 lfe_offset = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
444
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
445 for (count = 0; count < 256; count++)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
446 if (output_type == A52_STEREO)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
447 switch (sample_type & A52_CHANNEL_MASK)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
448 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
449 case A52_MONO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
450 case A52_CHANNEL1:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
451 case A52_CHANNEL2:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
452 outbuf[count * 2] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
453 outbuf[count * 2 + 1] = outbuf[count * 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
454 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
455 case A52_CHANNEL:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
456 if (dualmono_channel == 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
457 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
458 outbuf[count * 2] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
459 outbuf[count * 2 + 1] = outbuf[count * 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
460 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
461 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
462 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
463 outbuf[count * 2] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
464 outbuf[count * 2 + 1] = outbuf[count * 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
465 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
466 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
467 case A52_STEREO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
468 case A52_DOLBY:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
469 case A52_2F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
470 case A52_2F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
471 outbuf[count * 2] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
472 outbuf[count * 2 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
473 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
474 case A52_3F:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
475 case A52_3F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
476 case A52_3F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
477 outbuf[count * 2] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
478 outbuf[count * 2 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
479 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
480 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
481 else if (output_type == A52_2F2R)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
482 switch (sample_type & A52_CHANNEL_MASK)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
483 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
484 case A52_MONO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
485 case A52_CHANNEL1:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
486 case A52_CHANNEL2:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
487 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
488 outbuf[count * 4 + 1] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
489 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
490 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
491 outbuf[count * 4 + 2] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
492 outbuf[count * 4 + 3] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
493 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
494 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
495 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
496 outbuf[count * 4 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
497 outbuf[count * 4 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
498 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
499 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
500 case A52_CHANNEL:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
501 if (dualmono_channel == 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
502 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
503 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
504 outbuf[count * 4 + 1] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
505 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
506 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
507 outbuf[count * 4 + 2] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
508 outbuf[count * 4 + 3] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
509 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
510 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
511 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
512 outbuf[count * 4 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
513 outbuf[count * 4 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
514 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
515 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
516 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
517 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
518 outbuf[count * 4] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
519 outbuf[count * 4 + 1] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
520 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
521 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
522 outbuf[count * 4 + 2] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
523 outbuf[count * 4 + 3] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
524 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
525 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
526 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
527 outbuf[count * 4 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
528 outbuf[count * 4 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
529 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
530 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
531 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
532 case A52_STEREO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
533 case A52_DOLBY:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
534 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
535 outbuf[count * 4 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
536 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
537 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
538 outbuf[count * 4 + 2] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
539 outbuf[count * 4 + 3] = outbuf[count * 4 + 1];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
540 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
541 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
542 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
543 outbuf[count * 4 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
544 outbuf[count * 4 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
545 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
546 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
547 case A52_3F:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
548 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
549 outbuf[count * 4 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
550 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
551 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
552 outbuf[count * 4 + 2] = outbuf[count * 4];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
553 outbuf[count * 4 + 3] = outbuf[count * 4 + 1];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
554 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
555 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
556 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
557 outbuf[count * 4 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
558 outbuf[count * 4 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
559 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
560 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
561 case A52_2F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
562 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
563 outbuf[count * 4 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
564 outbuf[count * 4 + 2] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
565 outbuf[count * 4 + 3] = outbuf[count * 4 + 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
566 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
567 case A52_2F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
568 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
569 outbuf[count * 4 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
570 outbuf[count * 4 + 2] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
571 outbuf[count * 4 + 3] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
572 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
573 case A52_3F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
574 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
575 outbuf[count * 4 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
576 outbuf[count * 4 + 2] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
577 outbuf[count * 4 + 3] = outbuf[count * 4 + 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
578 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
579 case A52_3F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
580 outbuf[count * 4] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
581 outbuf[count * 4 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
582 outbuf[count * 4 + 2] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
583 outbuf[count * 4 + 3] = float2int (sample[count + 1024 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
584 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
585 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
586 else if (output_type == A52_3F2R)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
587 switch (sample_type & A52_CHANNEL_MASK)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
588 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
589 case A52_MONO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
590 case A52_CHANNEL1:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
591 case A52_CHANNEL2:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
592 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
593 outbuf[count * 5 + 1] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
594 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
595 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
596 outbuf[count * 5 + 2] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
597 outbuf[count * 5 + 3] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
598 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
599 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
600 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
601 outbuf[count * 5 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
602 outbuf[count * 5 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
603 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
604 outbuf[count * 5 + 4] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
605 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
606 case A52_CHANNEL:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
607 if (dualmono_channel == 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
608 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
609 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
610 outbuf[count * 5 + 1] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
611 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
612 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
613 outbuf[count * 5 + 2] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
614 outbuf[count * 5 + 3] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
615 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
616 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
617 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
618 outbuf[count * 5 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
619 outbuf[count * 5 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
620 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
621 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
622 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
623 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
624 outbuf[count * 5] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
625 outbuf[count * 5 + 1] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
626 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
627 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
628 outbuf[count * 5 + 2] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
629 outbuf[count * 5 + 3] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
630 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
631 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
632 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
633 outbuf[count * 5 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
634 outbuf[count * 5 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
635 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
636 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
637 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
638 case A52_STEREO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
639 case A52_DOLBY:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
640 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
641 outbuf[count * 5 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
642 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
643 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
644 outbuf[count * 5 + 2] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
645 outbuf[count * 5 + 3] = outbuf[count * 5 + 1];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
646 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
647 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
648 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
649 outbuf[count * 5 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
650 outbuf[count * 5 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
651 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
652 outbuf[count * 5 + 4] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
653 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
654 case A52_3F:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
655 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
656 outbuf[count * 5 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
657 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
658 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
659 outbuf[count * 5 + 2] = outbuf[count * 5];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
660 outbuf[count * 5 + 3] = outbuf[count * 5 + 1];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
661 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
662 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
663 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
664 outbuf[count * 5 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
665 outbuf[count * 5 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
666 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
667 outbuf[count * 5 + 4] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
668 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
669 case A52_2F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
670 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
671 outbuf[count * 5 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
672 outbuf[count * 5 + 2] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
673 outbuf[count * 5 + 3] = outbuf[count * 5 + 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
674 outbuf[count * 5 + 4] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
675 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
676 case A52_2F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
677 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
678 outbuf[count * 5 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
679 outbuf[count * 5 + 2] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
680 outbuf[count * 5 + 3] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
681 outbuf[count * 5 + 4] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
682 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
683 case A52_3F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
684 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
685 outbuf[count * 5 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
686 outbuf[count * 5 + 2] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
687 outbuf[count * 5 + 3] = outbuf[count * 5 + 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
688 outbuf[count * 5 + 4] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
689 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
690 case A52_3F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
691 outbuf[count * 5] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
692 outbuf[count * 5 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
693 outbuf[count * 5 + 2] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
694 outbuf[count * 5 + 3] = float2int (sample[count + 1024 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
695 outbuf[count * 5 + 4] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
696 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
697 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
698 else if (output_type == (A52_3F2R | A52_LFE))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
699 switch (sample_type & A52_CHANNEL_MASK)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
700 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
701 case A52_MONO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
702 case A52_CHANNEL1:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
703 case A52_CHANNEL2:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
704 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
705 outbuf[count * 6 + 1] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
706 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
707 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
708 outbuf[count * 6 + 2] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
709 outbuf[count * 6 + 3] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
710 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
711 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
712 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
713 outbuf[count * 6 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
714 outbuf[count * 6 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
715 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
716 outbuf[count * 6 + 4] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
717 if (lfe_offset)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
718 outbuf[count * 6 + 5] = float2int (sample[count]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
719 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
720 outbuf[count * 6 + 5] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
721 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
722 case A52_CHANNEL:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
723 if (dualmono_channel == 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
724 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
725 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
726 outbuf[count * 6 + 1] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
727 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
728 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
729 outbuf[count * 6 + 2] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
730 outbuf[count * 6 + 3] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
731 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
732 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
733 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
734 outbuf[count * 6 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
735 outbuf[count * 6 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
736 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
737 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
738 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
739 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
740 outbuf[count * 6] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
741 outbuf[count * 6 + 1] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
742 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
743 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
744 outbuf[count * 6 + 2] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
745 outbuf[count * 6 + 3] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
746 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
747 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
748 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
749 outbuf[count * 6 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
750 outbuf[count * 6 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
751 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
752 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
753 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
754 case A52_STEREO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
755 case A52_DOLBY:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
756 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
757 outbuf[count * 6 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
758 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
759 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
760 outbuf[count * 6 + 2] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
761 outbuf[count * 6 + 3] = outbuf[count * 6 + 1];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
762 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
763 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
764 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
765 outbuf[count * 6 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
766 outbuf[count * 6 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
767 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
768 outbuf[count * 6 + 4] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
769 if (lfe_offset)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
770 outbuf[count * 6 + 5] = float2int (sample[count]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
771 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
772 outbuf[count * 6 + 5] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
773 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
774 case A52_3F:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
775 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
776 outbuf[count * 6 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
777 if (upmix_stereo == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
778 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
779 outbuf[count * 6 + 2] = outbuf[count * 6];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
780 outbuf[count * 6 + 3] = outbuf[count * 6 + 1];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
781 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
782 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
783 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
784 outbuf[count * 6 + 2] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
785 outbuf[count * 6 + 3] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
786 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
787 outbuf[count * 6 + 4] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
788 if (lfe_offset)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
789 outbuf[count * 6 + 5] = float2int (sample[count]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
790 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
791 outbuf[count * 6 + 5] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
792 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
793 case A52_2F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
794 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
795 outbuf[count * 6 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
796 outbuf[count * 6 + 2] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
797 outbuf[count * 6 + 3] = outbuf[count * 6 + 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
798 outbuf[count * 6 + 4] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
799 if (lfe_offset)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
800 outbuf[count * 6 + 5] = float2int (sample[count]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
801 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
802 outbuf[count * 6 + 5] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
803 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
804 case A52_2F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
805 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
806 outbuf[count * 6 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
807 outbuf[count * 6 + 2] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
808 outbuf[count * 6 + 3] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
809 outbuf[count * 6 + 4] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
810 if (lfe_offset)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
811 outbuf[count * 6 + 5] = float2int (sample[count]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
812 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
813 outbuf[count * 6 + 5] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
814 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
815 case A52_3F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
816 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
817 outbuf[count * 6 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
818 outbuf[count * 6 + 2] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
819 outbuf[count * 6 + 3] = outbuf[count * 6 + 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
820 outbuf[count * 6 + 4] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
821 if (lfe_offset)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
822 outbuf[count * 6 + 5] = float2int (sample[count]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
823 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
824 outbuf[count * 6 + 5] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
825 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
826 case A52_3F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
827 outbuf[count * 6] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
828 outbuf[count * 6 + 1] = float2int (sample[count + 512 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
829 outbuf[count * 6 + 2] = float2int (sample[count + 768 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
830 outbuf[count * 6 + 3] = float2int (sample[count + 1024 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
831 outbuf[count * 6 + 4] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
832 if (lfe_offset)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
833 outbuf[count * 6 + 5] = float2int (sample[count]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
834 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
835 outbuf[count * 6 + 5] = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
836 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
837 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
838 else if (output_type == A52_DOLBY)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
839 switch (sample_type & A52_CHANNEL_MASK)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
840 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
841 case A52_CHANNEL1:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
842 case A52_CHANNEL2:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
843 outbuf[count * 2] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
844 outbuf[count * 2 + 1] = outbuf[count * 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
845 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
846 case A52_CHANNEL:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
847 if (dualmono_channel == 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
848 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
849 outbuf[count * 2] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
850 outbuf[count * 2 + 1] = outbuf[count * 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
851 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
852 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
853 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
854 outbuf[count * 2] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
855 outbuf[count * 2 + 1] = outbuf[count * 2];
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
856 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
857 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
858 case A52_STEREO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
859 case A52_DOLBY:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
860 outbuf[count * 2] = float2int (sample[count + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
861 outbuf[count * 2 + 1] = float2int (sample[count + 256 + lfe_offset]);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
862 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
863 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
864 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
865
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
866 int16_t
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
867 float2int (float sample)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
868 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
869 if (sample > 32767.0)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
870 return 32767;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
871 else if (sample < -32767.0)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
872 return -32767;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
873 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
874 return (int16_t) sample;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
875 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
876
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
877 static void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
878 play_a52 (char *filename)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
879 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
880 char *temp;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
881
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
882 if (a52_run)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
883 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
884
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
885 in_file = vfs_fopen (filename, "r");
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
886
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
887 if (!in_file)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
888 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
889
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
890 if (synchronise_a52(in_file, &flags, &sample_rate,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
891 &bit_rate, &frame_size) == -1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
892 {
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
893 vfs_fclose(in_file);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
894 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
895 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
896
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
897 output_type = requested_output;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
898
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
899 if ((output_type & A52_STEREO) || (output_type & A52_DOLBY))
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
900 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
901 output_nch = a52_ip.output->open_audio (FMT_S16_NE, sample_rate, 2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
902 if (output_nch == 0)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
903 {
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
904 vfs_fclose (in_file);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
905 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
906 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
907 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
908
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
909 if (output_type != A52_DOLBY)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
910 output_type = A52_STEREO;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
911
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
912 /* don't ask. -nenolod */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
913 if (output_nch == 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
914 output_nch = 2;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
915
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
916 // Get song title
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
917
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
918 temp = strrchr (filename, '/');
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
919 if (!temp)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
920 temp = filename;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
921 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
922 temp++;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
923 name = malloc (strlen (temp) + 1);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
924 strcpy (name, temp);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
925 *strrchr (name, '.') = '\0';
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
926
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
927 // Get song length
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
928
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
929 vfs_fseek (in_file, 0, SEEK_END);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
930
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
931 /* If we can get the file length, we divide it by byterate (not bitrate)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
932 and multiply by 1000 to get time in milliseconds.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
933 If we can't get file length, we'll set it to -1
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
934
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
935 length (the variable) : file length
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
936 length (passed to set_info) : milliseconds
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
937 bit_rate : bits/second
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
938 sample_rate : sample/second */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
939
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
940 if ((length = vfs_ftell (in_file)) != -1)
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
941 a52_ip.set_info (name, length / (bit_rate / 8 / 1000),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
942 bit_rate, sample_rate, 2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
943 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
944 a52_ip.set_info (name, -1, bit_rate, sample_rate, 2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
945
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
946 free(name);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
947
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
948 // Return to start of file.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
949
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
950 vfs_fseek (in_file, 0, SEEK_SET);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
951
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
952 // Mutex will be used in play_loop.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
953
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
954 pthread_mutex_destroy(&infile_lock);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
955 pthread_mutex_init(&infile_lock, NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
956
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
957 /* Ensure that play_loop has written to the buffer before exiting.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
958 See play_loop for further details. */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
959
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
960 sem_init(&play_loop_signal, 0, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
961 pthread_create (&decode_thread, NULL, play_loop, NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
962 sem_wait(&play_loop_signal);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
963 sem_destroy(&play_loop_signal);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
964
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
965 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
966 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
967
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
968 static void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
969 stop_a52 (void)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
970 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
971 if (a52_run)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
972 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
973 a52_run = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
974 pthread_join (decode_thread, NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
975 a52_ip.output->close_audio ();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
976 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
977 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
978
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
979 static int
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
980 get_time_a52 (void)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
981 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
982 /* lastset_time is set when playing starts and
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
983 when seeking. We can't use it directly because
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
984 it's based on file position for reading. Due to
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
985 buffering, the file position is always ahead of
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
986 the play position.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
987
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
988 Instead, we set lastset_time when playing and
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
989 seeking, and use the output_time() as an offset. */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
990
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
991 a52_ip.output->buffer_free();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
992
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
993 if ((a52_run && a52_not_eof) || a52_ip.output->buffer_playing ())
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
994 return lastset_time + a52_ip.output->output_time ();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
995
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
996 return -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
997 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
998
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
999 static void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1000 pause_a52 (short paused)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1001 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1002 a52_ip.output->pause (paused);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1003 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1004
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1005 static void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1006 get_song_info_a52 (gchar * filename, gchar ** title, gint * info_length)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1007 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1008 int l_flags, l_sample_rate, l_bit_rate, l_frame_size;
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1009 VFSFile *temp_file;
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1010 char *temp_name, *temp;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1011
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1012 // Set the song title
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1013
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1014 temp = strrchr (filename, '/');
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1015 if (!temp)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1016 temp = filename;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1017 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1018 temp++;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1019 temp_name = malloc (strlen (temp) + 1);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1020 strcpy (temp_name, temp);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1021 *strrchr (temp_name, '.') = '\0';
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1022 (*title) = temp_name;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1023
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1024 // Determine the song length from filesize.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1025
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1026 temp_file = vfs_fopen (filename, "r");
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1027
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1028 if (synchronise_a52(temp_file, &l_flags, &l_sample_rate,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1029 &l_bit_rate, &l_frame_size) == -1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1030 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1031 *info_length = -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1032 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1033 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1034
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1035 vfs_fseek (temp_file, 0, SEEK_END);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1036
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1037 if ((*info_length = vfs_ftell (temp_file)) == -1)
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1038 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1039 // Can't get file position
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1040 *info_length = -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1041 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1042 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1043
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1044 // Song length in milliseconds
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1045
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1046 *info_length = *info_length / (l_bit_rate / 8 / 1000);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1047 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1048
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1049 static void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1050 seek_a52 (gint time)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1051 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1052 // time is in seconds.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1053
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1054 // Don't seek while play_loop is reading/synching.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1055
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1056 pthread_mutex_lock(&infile_lock);
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1057 vfs_fseek(in_file, time * bit_rate / 8, SEEK_SET);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1058 pthread_mutex_unlock(&infile_lock);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1059
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1060 a52_ip.output->flush (0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1061 lastset_time = time * 1000;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1062 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1063
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1064 void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1065 about_a52 (void)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1066 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1067 GdkPixmap *pixmap;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1068 GdkBitmap *mask;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1069 GtkStyle *style;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1070 static GtkWidget *dialog, *button, *label, *pixmapwid;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1071
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1072 if (dialog)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1073 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1074
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1075 dialog = gtk_dialog_new ();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1076 gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1077 GTK_SIGNAL_FUNC (gtk_widget_destroyed), &dialog);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1078 gtk_window_set_title (GTK_WINDOW (dialog), "About xmms-a52dec 1.0");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1079 gtk_window_set_policy (GTK_WINDOW (dialog), FALSE, FALSE, FALSE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1080 gtk_container_border_width (GTK_CONTAINER (dialog), 5);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1081 label = gtk_label_new ("\nXMMS-AC3DEC VERSION 1.0\n\n \
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1082 An A52/AC3 decoder plugin for xmms based on the a52dec package.\n \
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1083 \nCoded by Cort <ccwee@cyberway.com.sg>\nEnhanced by David Weisgerber <tnt@md.2y.net>");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1084
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1085 /* now for the pixmap from gdk */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1086 style = gtk_widget_get_style (dialog);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1087 pixmap = gdk_pixmap_create_from_xpm_d (dialog->window, &mask,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1088 &style->bg[GTK_STATE_NORMAL],
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1089 (gchar **) a52dec_xpm);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1090 /* a pixmap widget to contain the pixmap */
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1091 pixmapwid = gtk_pixmap_new (pixmap, NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1092 gtk_widget_show (pixmapwid);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1093 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), pixmapwid, TRUE,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1094 TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1095 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), label, TRUE, TRUE,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1096 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1097 gtk_widget_show (label);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1098
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1099 button = gtk_button_new_with_label (" Close ");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1100 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1101 GTK_SIGNAL_FUNC (gtk_widget_destroy),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1102 GTK_OBJECT (dialog));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1103 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1104 FALSE, FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1105
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1106 gtk_widget_show (button);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1107 gtk_widget_show (dialog);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1108 gtk_widget_grab_focus (button);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1109 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1110
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1111 static GtkWidget *drc_scale, *drc_both, *drc_boost, *drc_reduce;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1112 static GtkWidget *effect_surround, *effect_lfe, *effect_upmix;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1113 static GtkWidget *dualmono_channel1, *dualmono_channel2;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1114
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1115 void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1116 configure_a52 (void)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1117 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1118 static GtkWidget *dialog;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1119 static GtkWidget *button_cancel, *button_apply, *button_ok;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1120 static GtkWidget *hbox, *vbox, *vbox2;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1121 static GtkWidget *effect_vbox, *button_hbox, *dualmono_vbox;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1122 static GtkWidget *drc_vbox;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1123 static GtkWidget *range_frame, *effect_frame, *output_frame, *dualmono_frame;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1124 static GtkTooltips *tooltips;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1125
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1126 if (dialog)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1127 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1128
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1129 tooltips = gtk_tooltips_new();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1130
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1131 // Create dialog and set window parameters.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1132
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1133 dialog = gtk_dialog_new ();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1134 gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1135 GTK_SIGNAL_FUNC (gtk_widget_destroyed), &dialog);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1136 gtk_window_set_title (GTK_WINDOW (dialog), "xmms-a52dec Configuration");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1137 gtk_window_set_policy (GTK_WINDOW (dialog), FALSE, FALSE, FALSE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1138 gtk_container_border_width (GTK_CONTAINER (dialog), 5);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1139
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1140 // Prepare all the vbox and hbox.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1141
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1142 hbox = gtk_hbox_new(FALSE, 5);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1143 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1144 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1145 vbox = gtk_vbox_new(FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1146 gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1147 vbox2 = gtk_vbox_new(FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1148 gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1149
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1150 // Prepare all the frames.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1151
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1152 range_frame = gtk_frame_new("Dynamic Range Compression");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1153 effect_frame = gtk_frame_new("Effect");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1154 output_frame = gtk_frame_new("Output");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1155 dualmono_frame = gtk_frame_new("Dual Mono");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1156
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1157 // Pack the frames in.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1158
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1159 gtk_box_pack_start (GTK_BOX (vbox), range_frame, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1160 gtk_box_pack_start (GTK_BOX (vbox), effect_frame, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1161 gtk_box_pack_start (GTK_BOX (vbox2), output_frame, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1162 gtk_box_pack_start (GTK_BOX (vbox2), dualmono_frame, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1163
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1164 // Create Dynamic Range Compression options.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1165
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1166 drc_vbox = gtk_vbox_new(FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1167 drc_scale = gtk_hscale_new (GTK_ADJUSTMENT
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1168 (gtk_adjustment_new
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1169 (compression_factor, 0, 1, 0.01, 0.1, 0)));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1170 gtk_scale_set_digits (GTK_SCALE (drc_scale), 2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1171 drc_both = gtk_radio_button_new_with_label (NULL, "Boost and Reduce");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1172 drc_boost = gtk_radio_button_new_with_label_from_widget (
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1173 GTK_RADIO_BUTTON(drc_both), "Boost only");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1174 drc_reduce = gtk_radio_button_new_with_label_from_widget (
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1175 GTK_RADIO_BUTTON(drc_both), "Reduce only");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1176 gtk_box_pack_start (GTK_BOX (drc_vbox), drc_scale, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1177 gtk_box_pack_start (GTK_BOX (drc_vbox), drc_both, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1178 gtk_box_pack_start (GTK_BOX (drc_vbox), drc_boost, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1179 gtk_box_pack_start (GTK_BOX (drc_vbox), drc_reduce, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1180 gtk_container_add (GTK_CONTAINER(range_frame), drc_vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1181
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1182 if (compression_type == DRC_BOTH)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1183 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(drc_both), TRUE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1184 else if (compression_type == DRC_BOOST)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1185 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(drc_boost), TRUE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1186 else if (compression_type == DRC_REDUCE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1187 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(drc_reduce), TRUE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1188
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1189
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1190 // Create effect toggle button.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1191
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1192 effect_vbox = gtk_vbox_new(FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1193 effect_surround = gtk_check_button_new_with_label("No downmix of surround");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1194 effect_lfe = gtk_check_button_new_with_label("No downmix of LFE channel");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1195 effect_upmix = gtk_check_button_new_with_label("Upmix stereo to surround");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1196 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(effect_surround),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1197 nodownmix_surround);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1198 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(effect_lfe), nodownmix_lfe);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1199 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(effect_upmix), upmix_stereo);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1200 gtk_box_pack_start (GTK_BOX (effect_vbox), effect_surround, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1201 gtk_box_pack_start (GTK_BOX (effect_vbox), effect_lfe, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1202 gtk_box_pack_start (GTK_BOX (effect_vbox), effect_upmix, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1203 gtk_container_add (GTK_CONTAINER(effect_frame), effect_vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1204
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1205 // Create dualmono channel radio button.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1206
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1207 dualmono_vbox = gtk_vbox_new(FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1208 dualmono_channel1 = gtk_radio_button_new_with_label (NULL, "Play First channel");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1209 dualmono_channel2 = gtk_radio_button_new_with_label_from_widget (
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1210 GTK_RADIO_BUTTON(dualmono_channel1), "Play Second channel");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1211
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1212 if (dualmono_channel == 1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1213 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dualmono_channel1), TRUE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1214 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1215 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dualmono_channel2), TRUE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1216
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1217 gtk_box_pack_start (GTK_BOX (dualmono_vbox), dualmono_channel1, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1218 gtk_box_pack_start (GTK_BOX (dualmono_vbox), dualmono_channel2, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1219 gtk_container_add (GTK_CONTAINER(dualmono_frame), dualmono_vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1220
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1221 // Create hbuttonbox for buttons.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1222
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1223 button_hbox = gtk_hbutton_box_new();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1224
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1225 // Create cancel button.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1226
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1227 button_cancel = gtk_button_new_with_label ("Cancel");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1228 gtk_signal_connect_object (GTK_OBJECT (button_cancel), "clicked",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1229 GTK_SIGNAL_FUNC (gtk_widget_destroy),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1230 GTK_OBJECT (dialog));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1231 gtk_box_pack_start(GTK_BOX(button_hbox), button_cancel, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1232
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1233 // Create apply button.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1234
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1235 button_apply = gtk_button_new_with_label ("Apply");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1236 gtk_signal_connect_object (GTK_OBJECT (button_apply), "clicked",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1237 GTK_SIGNAL_FUNC (configure_apply),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1238 GTK_OBJECT (dialog));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1239 gtk_box_pack_start(GTK_BOX(button_hbox), button_apply, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1240
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1241 // Create ok button.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1242
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1243 button_ok = gtk_button_new_with_label ("Ok");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1244 gtk_signal_connect_object (GTK_OBJECT (button_ok), "clicked",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1245 GTK_SIGNAL_FUNC (configure_ok),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1246 GTK_OBJECT (dialog));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1247 gtk_box_pack_start(GTK_BOX(button_hbox), button_ok, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1248
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1249 // Pack hbuttonbox into dialog.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1250
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1251 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1252 button_hbox, TRUE, TRUE,0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1253
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1254 // Set tooltips.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1255
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1256 gtk_tooltips_set_tip(GTK_TOOLTIPS (tooltips), drc_scale,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1257 "Dynamic range compression is used to lower the\
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1258 volume of loud sounds and increase the volume of\
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1259 soft sounds.\nSet to 0.00 if you wish to disable this feature.", NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1260
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1261 gtk_tooltips_set_tip(GTK_TOOLTIPS (tooltips), drc_both,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1262 "Boost the volume of soft sounds and reduce the volume\
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1263 of loud sounds.", NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1264
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1265 gtk_tooltips_set_tip(GTK_TOOLTIPS (tooltips), drc_boost,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1266 "Boost the volume of soft sounds, but leave loud sounds\
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1267 unchanged.", NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1268
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1269 gtk_tooltips_set_tip(GTK_TOOLTIPS (tooltips), drc_reduce,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1270 "Reduce the volume of loud sounds, but leave soft sounds\
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1271 unchanged.", NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1272
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1273 gtk_tooltips_set_tip(GTK_TOOLTIPS (tooltips), dualmono_channel1,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1274 "Dualmono tracks contain 2 seperate mono channels. Select\
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1275 this option to play the first channels.", NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1276
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1277 gtk_tooltips_set_tip(GTK_TOOLTIPS (tooltips), dualmono_channel2,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1278 "Dualmono tracks contain 2 seperate mono channels. Select\
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1279 this option to play the second channels.", NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1280
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1281 // Show all of the above.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1282
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1283 gtk_widget_show (hbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1284 gtk_widget_show (vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1285 gtk_widget_show (vbox2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1286 gtk_widget_show (range_frame);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1287 gtk_widget_show (drc_scale);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1288 gtk_widget_show (drc_both);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1289 gtk_widget_show (drc_boost);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1290 gtk_widget_show (drc_reduce);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1291 gtk_widget_show (drc_vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1292 gtk_widget_show (effect_frame);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1293 gtk_widget_show (effect_surround);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1294 gtk_widget_show (effect_lfe);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1295 gtk_widget_show (effect_upmix);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1296 gtk_widget_show (effect_vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1297 gtk_widget_show (dualmono_vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1298 gtk_widget_show (dualmono_channel1);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1299 gtk_widget_show (dualmono_channel2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1300 gtk_widget_show (dualmono_frame);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1301 gtk_widget_show (button_hbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1302 gtk_widget_show (button_cancel);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1303 gtk_widget_show (button_apply);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1304 gtk_widget_show (button_ok);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1305 gtk_widget_show (dialog);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1306 gtk_widget_grab_focus (button_ok);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1307 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1308
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1309 static void configure_ok(GtkWidget * w, gpointer data)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1310 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1311 // Let configure_apply set and save compression_factor.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1312
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1313 configure_apply(NULL, NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1314
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1315 // Close the window.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1316
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1317 gtk_widget_destroy(w);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1318 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1319
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1320 static void configure_apply(GtkWidget * w, gpointer data)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1321 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1322 GtkAdjustment *scale_adj;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1323 ConfigDb *config;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1324
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1325 scale_adj = gtk_range_get_adjustment(GTK_RANGE(drc_scale));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1326 compression_factor = (gdouble) scale_adj->value;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1327
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1328 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(drc_both)) == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1329 compression_type = DRC_BOTH;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1330 else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(drc_boost)) == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1331 compression_type = DRC_BOOST;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1332 else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(drc_reduce)) == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1333 compression_type = DRC_REDUCE;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1334
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1335 nodownmix_surround = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(effect_surround));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1336 nodownmix_lfe = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(effect_lfe));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1337 upmix_stereo = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(effect_upmix));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1338 requested_output = A52_STEREO;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1339
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1340 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dualmono_channel1)) == TRUE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1341 dualmono_channel = 1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1342 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1343 dualmono_channel = 2;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1344
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1345 config = bmp_cfg_db_open();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1346 bmp_cfg_db_set_double(config, "xmms-a52dec", "compression_factor",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1347 compression_factor);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1348 bmp_cfg_db_set_int(config, "xmms-a52dec", "compression_type",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1349 compression_type);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1350 bmp_cfg_db_set_bool(config, "xmms-a52dec", "nodownmix_surround",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1351 nodownmix_surround);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1352 bmp_cfg_db_set_bool(config, "xmms-a52dec", "nodownmix_lfe",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1353 nodownmix_lfe);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1354 bmp_cfg_db_set_bool(config, "xmms-a52dec", "upmix_stereo",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1355 upmix_stereo);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1356 bmp_cfg_db_set_int(config, "xmms-a52dec", "requested_output",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1357 requested_output);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1358 bmp_cfg_db_close(config);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1359 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1360
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1361 void
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1362 info_a52 (char *filename)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1363 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1364 static GtkWidget *window;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1365 static GtkWidget *button_ok;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1366 static GtkWidget *hbox, *vbox, *label, *label2, *entry, *frame;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1367 static char *temp_text, *label2_text, *temp, *temp_name;
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1368 VFSFile *temp_file;
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1369 int l_flags, l_sample_rate, l_bit_rate, l_frame_size, l_length;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1370 int no_window = 0;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1371
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1372 if (!window)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1373 no_window = 1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1374
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1375 // Create window and set parameters.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1376
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1377 if (no_window)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1378 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1379 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1380 gtk_signal_connect (GTK_OBJECT (window), "destroy",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1381 GTK_SIGNAL_FUNC (gtk_widget_destroyed), &window);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1382 gtk_window_set_default_size (GTK_WINDOW (window), 485, -1);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1383 gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, TRUE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1384 gtk_container_border_width (GTK_CONTAINER (window), 5);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1385 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1386
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1387 temp = strrchr (filename, '/');
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1388 if (!temp)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1389 temp = filename;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1390 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1391 temp++;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1392 temp_name = malloc (strlen (temp) + 1);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1393 strcpy (temp_name, temp);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1394 *strrchr (temp_name, '.') = '\0';
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1395
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1396 sprintf(temp_text, "File Info - %s", temp_name);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1397 gtk_window_set_title (GTK_WINDOW (window), temp_text);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1398
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1399 free(temp_name);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1400 free(temp_text);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1401
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1402 // Create vbuttonbox for filename and fileinfo frame.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1403
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1404 if (no_window)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1405 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1406 vbox = gtk_vbox_new(FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1407
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1408 // Create label with a text entry containing filename.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1409
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1410 hbox = gtk_hbox_new(FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1411 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 8);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1412 label = gtk_label_new ("Filename: ");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1413 gtk_label_set_justify (GTK_LABEL(label), GTK_JUSTIFY_LEFT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1414 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1415 entry = gtk_entry_new ();
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1416 gtk_widget_set_usize (entry, 400, -1);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1417 gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1418 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1419 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1420 gtk_entry_set_text (GTK_ENTRY(entry), filename);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1421
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1422 // Determine the song length from filesize.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1423
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1424 temp_file = vfs_fopen (filename, "r");
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1425
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1426 if (synchronise_a52(temp_file, &l_flags, &l_sample_rate,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1427 &l_bit_rate, &l_frame_size) == -1)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1428 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1429 l_length = -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1430 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1431 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1432
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1433 vfs_fseek (temp_file, 0, SEEK_END);
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1434
124
f356655ed806 [svn] - push from p4://depot/svn-audacious-plugins-devel/virt-branches/trunk/a52dec:
nenolod
parents: 123
diff changeset
1435 if ((l_length = vfs_ftell (temp_file)) == -1)
123
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1436 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1437 // Can't get file position
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1438 l_length = -1;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1439 return;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1440 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1441
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1442 // Determine channel type.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1443
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1444 switch (l_flags & A52_CHANNEL_MASK)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1445 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1446 case A52_CHANNEL:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1447 sprintf(temp_text, "Channel");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1448 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1449 case A52_MONO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1450 sprintf(temp_text, "Mono");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1451 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1452 case A52_STEREO:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1453 sprintf(temp_text, "Stereo");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1454 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1455 case A52_3F:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1456 sprintf(temp_text, "3 Front");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1457 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1458 case A52_2F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1459 sprintf(temp_text, "2 Front 1 Rear");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1460 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1461 case A52_3F1R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1462 sprintf(temp_text, "3 Front 1 Rear");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1463 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1464 case A52_2F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1465 sprintf(temp_text, "2 Front 2 Rear");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1466 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1467 case A52_3F2R:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1468 sprintf(temp_text, "3 Front 2 Rear");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1469 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1470 case A52_CHANNEL1:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1471 sprintf(temp_text, "Channel1");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1472 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1473 case A52_CHANNEL2:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1474 sprintf(temp_text, "Channel2");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1475 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1476 case A52_DOLBY:
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1477 sprintf(temp_text, "Dolby");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1478 break;
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1479 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1480
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1481 // Create frame for file info.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1482
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1483 if (no_window)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1484 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1485 frame = gtk_frame_new ("A/52 Info:");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1486 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 8);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1487
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1488 // Create label inside frame.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1489
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1490 label2 = gtk_label_new (NULL);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1491 gtk_container_add(GTK_CONTAINER(frame), label2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1492 gtk_misc_set_alignment (GTK_MISC (label2), 0, 0);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1493 gtk_label_set_justify (GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1494
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1495 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1496
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1497 // Set text of label inside frame.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1498
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1499 if (l_flags & A52_LFE)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1500 sprintf(label2_text, "\n Bitrate: %d kb/s\n Samplerate: %d Hz\n Channel Type: %s\n Low Frequency Enhancement: Yes\n %d frames\n Filesize: %d B\n",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1501 l_bit_rate / 1000, l_sample_rate, temp_text, l_length / l_frame_size, l_length);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1502 else
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1503 sprintf(label2_text, "\n Bitrate: %d kb/s\n Samplerate: %d Hz\n Channel Type: %s\n Low Frequency Enhancement: No\n %d frames\n Filesize: %d B\n",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1504 l_bit_rate / 1000, l_sample_rate, temp_text, l_length / l_frame_size, l_length);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1505
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1506 gtk_label_set_text (GTK_LABEL(label2), label2_text);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1507
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1508 if (no_window)
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1509 {
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1510 // Create ok button.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1511
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1512 button_ok = gtk_button_new_with_label ("Ok");
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1513 gtk_signal_connect_object (GTK_OBJECT (button_ok), "clicked",
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1514 GTK_SIGNAL_FUNC (gtk_widget_destroy),
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1515 GTK_OBJECT (window));
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1516 gtk_widget_set_usize (button_ok, 100, -1);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1517 gtk_box_pack_start(GTK_BOX (vbox), button_ok,
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1518 TRUE, FALSE, 8);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1519
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1520 // Pack vbuttonbox into window.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1521
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1522 gtk_container_add (GTK_CONTAINER (window), vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1523
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1524 // Show all of the above.
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1525
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1526 gtk_widget_show (label2);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1527 gtk_widget_show (label);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1528 gtk_widget_show (entry);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1529 gtk_widget_show (frame);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1530 gtk_widget_show (hbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1531 gtk_widget_show (button_ok);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1532 gtk_widget_show (vbox);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1533 gtk_widget_show (window);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1534 gtk_widget_grab_focus (button_ok);
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1535 }
59a6cec7e9b1 [svn] - a52dec plugin port. *under construction; don't expect to work*
nenolod
parents:
diff changeset
1536 }