Subversion Repositories svnkaklik

Rev

Details | Last modification | View Log

Rev Author Line No. Line
516 kaklik 1
	#include <stdio.h>
2
	#include <stdlib.h>
3
	#include <alsa/asoundlib.h>
4
 
519 kaklik 5
	int exact_rate = 44100;
521 kaklik 6
#define BUFFER_SIZE	1024
7
 
516 kaklik 8
	main (int argc, char *argv[])
9
	{
521 kaklik 10
		int i,j;
519 kaklik 11
		int err;
521 kaklik 12
		short buf[BUFFER_SIZE];
519 kaklik 13
		snd_pcm_t *capture_handle;
516 kaklik 14
		snd_pcm_hw_params_t *hw_params;
15
 
519 kaklik 16
		if ((err = snd_pcm_open (&capture_handle, argv[1], SND_PCM_STREAM_CAPTURE, 0)) < 0) {
516 kaklik 17
			fprintf (stderr, "cannot open audio device %s (%s)\n", 
18
				 argv[1],
19
				 snd_strerror (err));
20
			exit (1);
21
		}
22
 
521 kaklik 23
fprintf (stdout,"nastaveni formatu\n");
520 kaklik 24
 
516 kaklik 25
		if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
26
			fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n",
27
				 snd_strerror (err));
28
			exit (1);
29
		}
30
 
519 kaklik 31
		if ((err = snd_pcm_hw_params_any (capture_handle, hw_params)) < 0) {
516 kaklik 32
			fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n",
33
				 snd_strerror (err));
34
			exit (1);
35
		}
36
 
519 kaklik 37
		if ((err = snd_pcm_hw_params_set_access (capture_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
516 kaklik 38
			fprintf (stderr, "cannot set access type (%s)\n",
39
				 snd_strerror (err));
40
			exit (1);
41
		}
42
 
519 kaklik 43
		if ((err = snd_pcm_hw_params_set_format (capture_handle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) {
516 kaklik 44
			fprintf (stderr, "cannot set sample format (%s)\n",
45
				 snd_strerror (err));
46
			exit (1);
47
		}
521 kaklik 48
fprintf (stdout,"nastaveni formatu\n");
519 kaklik 49
 
50
		if ((err = snd_pcm_hw_params_set_rate_near (capture_handle, hw_params, &exact_rate, 0)) < 0) {
516 kaklik 51
			fprintf (stderr, "cannot set sample rate (%s)\n",
52
				 snd_strerror (err));
53
			exit (1);
54
		}
521 kaklik 55
fprintf (stdout,"nastaveni vzorkovani\n");
516 kaklik 56
 
519 kaklik 57
		if ((err = snd_pcm_hw_params_set_channels (capture_handle, hw_params, 2)) < 0) {
516 kaklik 58
			fprintf (stderr, "cannot set channel count (%s)\n",
59
				 snd_strerror (err));
60
			exit (1);
61
		}
62
 
521 kaklik 63
fprintf (stdout,"nastaveni poctu kanalu\n");
519 kaklik 64
 
65
		if ((err = snd_pcm_hw_params (capture_handle, hw_params)) < 0) {
516 kaklik 66
			fprintf (stderr, "cannot set parameters (%s)\n",
67
				 snd_strerror (err));
68
			exit (1);
69
		}
519 kaklik 70
 
521 kaklik 71
fprintf (stdout,"nastaveni parametru\n");
516 kaklik 72
 
73
		snd_pcm_hw_params_free (hw_params);
74
 
519 kaklik 75
		if ((err = snd_pcm_prepare (capture_handle)) < 0) {
516 kaklik 76
			fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
77
				 snd_strerror (err));
78
			exit (1);
79
		}
521 kaklik 80
fprintf (stdout,"povoleni audia\n");
516 kaklik 81
 
521 kaklik 82
 
83
		if ((err = snd_pcm_readi (capture_handle, buf, BUFFER_SIZE)) != BUFFER_SIZE) {
519 kaklik 84
				fprintf (stderr, "read from audio interface failed (%s)\n",
85
					 snd_strerror (err));
86
				exit (1);
87
 
521 kaklik 88
		}	
89
		for (j=0; j < 500; j=j+2) fprintf (stdout,"%u:%d %d\n ",j,buf[j], buf[j+1]);	
90
 
519 kaklik 91
		snd_pcm_close (capture_handle);
516 kaklik 92
		exit (0);
93
	}
521 kaklik 94