mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-06-27 07:25:23 -04:00
Summary: Add in timing code. The captured audio is now decoded.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/trunk@41 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
db838694d8
commit
43cb15d438
@ -3,6 +3,7 @@
|
|||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <alsa/asoundlib.h>
|
#include <alsa/asoundlib.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#define ALSA_LOG
|
#define ALSA_LOG
|
||||||
@ -27,6 +28,10 @@ typedef struct alsa_driver_s {
|
|||||||
int16_t *app_buffer_y2;
|
int16_t *app_buffer_y2;
|
||||||
int *app_buffer_offset;
|
int *app_buffer_offset;
|
||||||
int app_buffer_length;
|
int app_buffer_length;
|
||||||
|
double *Tsec;
|
||||||
|
double *tbuf;
|
||||||
|
int *ibuf;
|
||||||
|
|
||||||
snd_pcm_uframes_t buffer_size;
|
snd_pcm_uframes_t buffer_size;
|
||||||
snd_pcm_uframes_t period_size;
|
snd_pcm_uframes_t period_size;
|
||||||
int32_t mmap;
|
int32_t mmap;
|
||||||
@ -301,20 +306,31 @@ int playback_callback(alsa_driver_t *alsa_driver_playback) {
|
|||||||
alsa_driver_t *this = alsa_driver_playback;
|
alsa_driver_t *this = alsa_driver_playback;
|
||||||
printf("playback callback\n");
|
printf("playback callback\n");
|
||||||
//snd_pcm_writen(this->audio_fd, alsa_buffers, this->period_size);
|
//snd_pcm_writen(this->audio_fd, alsa_buffers, this->period_size);
|
||||||
|
//fivehztx_(); //Call fortran routine
|
||||||
}
|
}
|
||||||
|
|
||||||
int capture_callback(alsa_driver_t *alsa_driver_capture) {
|
int capture_callback(alsa_driver_t *alsa_driver_capture) {
|
||||||
alsa_driver_t *this = alsa_driver_capture;
|
alsa_driver_t *this = alsa_driver_capture;
|
||||||
int result;
|
int result;
|
||||||
|
struct timeval tv;
|
||||||
|
double stime;
|
||||||
|
int ib;
|
||||||
#ifdef ALSA_LOG
|
#ifdef ALSA_LOG
|
||||||
printf("capture callback %d samples\n", this->period_size);
|
printf("capture callback %d samples\n", this->period_size);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ALSA_LOG
|
||||||
snd_pcm_status_t *pcm_stat;
|
snd_pcm_status_t *pcm_stat;
|
||||||
snd_pcm_status_alloca(&pcm_stat);
|
snd_pcm_status_alloca(&pcm_stat);
|
||||||
#ifdef ALSA_LOG
|
|
||||||
snd_pcm_status(this->audio_fd, pcm_stat);
|
snd_pcm_status(this->audio_fd, pcm_stat);
|
||||||
snd_pcm_status_dump(pcm_stat, jcd_out);
|
snd_pcm_status_dump(pcm_stat, jcd_out);
|
||||||
#endif
|
#endif
|
||||||
|
gettimeofday(&tv, NULL);
|
||||||
|
stime = (double) tv.tv_sec + ((double)tv.tv_usec / 1000.0);
|
||||||
|
ib=*(this->ibuf);
|
||||||
|
this->tbuf[ib++]=stime;
|
||||||
|
if(ib>=1024) ib=0;
|
||||||
|
*(this->ibuf)=ib;
|
||||||
|
|
||||||
alsa_buffers[0]=this->app_buffer_y1 + *(this->app_buffer_offset);
|
alsa_buffers[0]=this->app_buffer_y1 + *(this->app_buffer_offset);
|
||||||
alsa_buffers[1]=this->app_buffer_y2 + *(this->app_buffer_offset);
|
alsa_buffers[1]=this->app_buffer_y2 + *(this->app_buffer_offset);
|
||||||
result = snd_pcm_readn(this->audio_fd, alsa_buffers, this->period_size);
|
result = snd_pcm_readn(this->audio_fd, alsa_buffers, this->period_size);
|
||||||
@ -326,6 +342,7 @@ int capture_callback(alsa_driver_t *alsa_driver_capture) {
|
|||||||
snd_pcm_status(this->audio_fd, pcm_stat);
|
snd_pcm_status(this->audio_fd, pcm_stat);
|
||||||
snd_pcm_status_dump(pcm_stat, jcd_out);
|
snd_pcm_status_dump(pcm_stat, jcd_out);
|
||||||
#endif
|
#endif
|
||||||
|
fivehz_(); //Call fortran routine
|
||||||
}
|
}
|
||||||
|
|
||||||
int capture_xrun(alsa_driver_t *alsa_driver_capture) {
|
int capture_xrun(alsa_driver_t *alsa_driver_capture) {
|
||||||
@ -407,7 +424,10 @@ int start_threads_(int *ndevin, int *ndevout, short y1[], short y2[],
|
|||||||
alsa_driver_capture.app_buffer_y1=y1;
|
alsa_driver_capture.app_buffer_y1=y1;
|
||||||
alsa_driver_capture.app_buffer_y2=y2;
|
alsa_driver_capture.app_buffer_y2=y2;
|
||||||
alsa_driver_capture.app_buffer_offset=iwrite;
|
alsa_driver_capture.app_buffer_offset=iwrite;
|
||||||
alsa_driver_capture.app_buffer_length=nsamperbuf;
|
alsa_driver_capture.app_buffer_length=*nsamperbuf;
|
||||||
|
alsa_driver_capture.Tsec=Tsec;
|
||||||
|
alsa_driver_capture.tbuf=tbuf;
|
||||||
|
alsa_driver_capture.ibuf=ibuf;
|
||||||
|
|
||||||
printf("start threads called\n");
|
printf("start threads called\n");
|
||||||
iret1 = pthread_create(&thread1,NULL,decode1_,&iarg1);
|
iret1 = pthread_create(&thread1,NULL,decode1_,&iarg1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user