summaryrefslogtreecommitdiffstats
path: root/mpeglib/lib/input/cddaInputStream.h
blob: 55989c6553b36a2ba9ecff3f9139fa82aced4ef5 (plain)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
  cdda input class based on cdparanoia
  Copyright (C) 2000  Martin Vogt

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU Library General Public License as published by
  the Free Software Foundation.

  For more information look at the file COPYRIGHT in this package

 */




#ifndef __CDDAINPUTSTREAM_H
#define __CDDAINPUTSTREAM_H


#include "inputStream.h"

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifndef CDDA_PARANOIA
class CDDAInputStream : public InputStream {
};
#else

#include <sys/types.h>
typedef int16_t size16;
typedef int32_t size32;

extern "C" {
#include <cdda_interface.h>
#include <cdda_paranoia.h>
void paranoiaCallback(long, int);
}
//#define CDDA_INCLUDE


class CDDAInputStream : public InputStream {

//#ifdef CDDA_INCLUDE
  cdrom_paranoia * paranoia;
  struct cdrom_drive * drive;
//#else
//  void * drive;
//  void * paranoia;
//#endif
    

  char* device;
  int track;

  int firstSector;
  int lastSector;
  int currentSector;

 public:
  CDDAInputStream();
   ~CDDAInputStream();

   int open(const char* dest);
   void close();
   int isOpen();

   int eof();
   int read(char* ptr,int size);
   int seek(long bytePos);
   // clears possible input buffers
   // (called by the decoderPlugin after a resyncCommit)
   void clear();

   long getByteLength();
   long getBytePosition();
 private:
   int getTrackAndDevice(const char* url);
 
};
#endif
//CDDA_PARANOIA

#endif