File: cdda.h

package info (click to toggle)
djplay 0.5.0-3.1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 3,448 kB
  • ctags: 1,390
  • sloc: cpp: 13,382; sh: 7,104; makefile: 814; sed: 16
file content (51 lines) | stat: -rw-r--r-- 1,090 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#ifndef _CDDA_STREAM_SOURCE_H_INCLUDED
#define _CDDA_STREAM_SOURCE_H_INCLUDED

#include "config.h"

#ifdef HAVE_LIBCDDA_PARANOIA

#include "jack.h"
#include <pthread.h>
extern "C" {
#include <cdda_interface.h>
#include <cdda_paranoia.h>
}

#define PREBUFFER 256

class CDDAStreamSource : public StreamSource
{
Q_OBJECT

public:
	CDDAStreamSource(QWidget *dest);
	~CDDAStreamSource();

	int attach(QString name);
	int get_buffer(char *, int);
	int play(unsigned long start_frame, unsigned long samples, bool loop=false);
	int stop(void);
	void exit_loop(void);
	StreamSource *get_source(void);
	void prefetch();
	virtual void generate_wave(void);
	virtual void get_wave_pixmap(QPixmap *pm, int display_width);
	virtual bool can_do_multiple_reads();
private:
	void bumpCDRom();
	static pthread_mutex_t cdlock;
	void fillBuffer(void);
	cdrom_drive *drive;
	cdrom_paranoia *p;
	int track;
	int sector;
	int offset;
	int buffer_first_sector;
	int secs_in_buffer;
	short buffer[CD_FRAMESAMPLES * PREBUFFER * 2];
	unsigned sample_pos;
	QString device;
};
#endif /* HAVE_LIBCDDA_PARANOIA */
#endif