summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/applets/vmemo/vmemo.cpp42
1 files changed, 24 insertions, 18 deletions
diff --git a/core/applets/vmemo/vmemo.cpp b/core/applets/vmemo/vmemo.cpp
index 73bd996..83f19f5 100644
--- a/core/applets/vmemo/vmemo.cpp
+++ b/core/applets/vmemo/vmemo.cpp
@@ -32,6 +32,7 @@ typedef struct _waveheader {
32 u_long chunk_type; /* 'WAVE' */ 32 u_long chunk_type; /* 'WAVE' */
33
34 u_long sub_chunk; /* 'fmt ' */ 33 u_long sub_chunk; /* 'fmt ' */
35 u_long sc_len; /* length of sub_chunk, =16 (chunckSize) */ 34 u_long sc_len; /* length of sub_chunk, =16
35 (chunckSize) format len */
36 u_short format; /* should be 1 for PCM-code (formatTag) */ 36 u_short format; /* should be 1 for PCM-code (formatTag) */
37
37 u_short modus; /* 1 Mono, 2 Stereo (channels) */ 38 u_short modus; /* 1 Mono, 2 Stereo (channels) */
@@ -43,2 +44,3 @@ typedef struct _waveheader {
43 u_long data_chunk; /* 'data' */ 44 u_long data_chunk; /* 'data' */
45
44 u_long data_length;/* samplecount */ 46 u_long data_length;/* samplecount */
@@ -244,3 +246,3 @@ int VMemo::openDSP()
244 channels = cfg.readNumEntry("Stereo", 1) ? 2 : 1; // 1 = stereo(2), 0 = mono(1) 246 channels = cfg.readNumEntry("Stereo", 1) ? 2 : 1; // 1 = stereo(2), 0 = mono(1)
245 if (cfg.readNumEntry("SixteenBit", 1)) 247 if (cfg.readNumEntry("SixteenBit", 1)==1)
246 { 248 {
@@ -256,3 +258,6 @@ int VMemo::openDSP()
256 if(systemZaurus) 258 if(systemZaurus)
259 {
257 dsp = open("/dev/dsp1", O_RDWR); //Zaurus needs /dev/dsp1 260 dsp = open("/dev/dsp1", O_RDWR); //Zaurus needs /dev/dsp1
261 channels=1; //zaurus has one input channel
262 }
258 else 263 else
@@ -303,18 +308,16 @@ int VMemo::openWAV(const char *filename)
303 308
304 wh.main_chunk = RIFF; 309 wh.main_chunk = RIFF;// RIFF
305 wh.length = 0; 310 wh.chunk_type = WAVE;//WAVE
306 wh.chunk_type = WAVE; 311 wh.sub_chunk = FMT;// fmt
307 312 wh.sc_len = 16;// format length = 16
308 wh.sub_chunk = FMT; 313 wh.format = PCM_CODE;// PCM
309 wh.sc_len = 16; 314 wh.modus = channels;// channels
310 wh.format = PCM_CODE; 315 wh.sample_fq = speed;//samplerate
311 wh.modus = channels; 316 wh.byte_p_sec = speed * channels * resolution/8;// av bytes per second
312 wh.sample_fq = speed; 317 wh.byte_p_spl = channels * (resolution / 8); //block align
313 wh.bit_p_spl = resolution; 318 wh.bit_p_spl = resolution;//bits per sample 8, or 16
314 wh.byte_p_sec = wh.sample_fq * wh.bit_p_spl;
315 wh.byte_p_spl = channels * (wh.bit_p_spl % 8);
316
317 wh.data_chunk = DATA; 319 wh.data_chunk = DATA;
318 wh.data_length= 0; 320 wh.data_length= 0; // <---
319 321// qDebug("Write header channels %d, speed %d, b/s %d, blockalign %d, bitrate %d"
322// , wh.modus, wh.sample_fq, wh.byte_p_sec, wh.byte_p_spl, wh.bit_p_spl );
320 write (wav, &wh, sizeof(WaveHeader)); 323 write (wav, &wh, sizeof(WaveHeader));
@@ -339,2 +342,4 @@ void VMemo::record(void)
339 qApp->processEvents(); 342 qApp->processEvents();
343// printf("%d\r",length);
344// fflush(stdout);
340 } 345 }
@@ -349,2 +354,3 @@ void VMemo::record(void)
349 write(wav, &length, 4); 354 write(wav, &length, 4);
355// qDebug("File length %d, samplecount %d", value, length);
350 track.close(); 356 track.close();