24
24
#include "avifmt.h"
25
25
#include "avifmt2.h"
27
#include "ADM_audio/aviaudio.hxx"
29
typedef struct audioInfo
27
#include "../ADM_audio/aviaudio.hxx"
28
#include "ADM_compressedImage.h"
31
31
uint32_t encoding; // Same as in wavheader
32
32
uint32_t bitrate; // In kbits
33
33
uint32_t channels; //
34
34
uint32_t frequency; // In hertz
35
35
int32_t av_sync; // in ms
38
typedef struct aviInfo
40
40
uint32_t width,height;
42
42
uint32_t nb_frames;
46
47
uint8_t WAV2AudioInfo(WAVHeader *hdr,audioInfo *info);
50
The base class for all demuxers
51
MainAVIHeader _mainaviheader;
52
uint8_t _isvideopresent;
53
AVIStreamHeader _videostream;
54
BITMAPINFOHEADER _video_bih;
55
uint8_t _isaudiopresent;
56
AVIStreamHeader _audiostream;
57
void *_audiostreaminfo;
59
uint32_t _videoExtraLen;
60
uint8_t *_videoExtraData;
56
MainAVIHeader _mainaviheader;
57
uint8_t _isvideopresent;
58
AVIStreamHeader _videostream;
59
BITMAPINFOHEADER _video_bih;
60
uint8_t _isaudiopresent;
61
AVIStreamHeader _audiostream;
62
void *_audiostreaminfo;
64
uint32_t _videoExtraLen;
65
uint8_t *_videoExtraData;
63
68
// static int checkFourCC(uint8_t *in, uint8_t *fourcc);
65
70
virtual ~vidHeader() ;
66
virtual void Dump(void)=0;
67
virtual uint32_t getNbStream(void)=0;
68
virtual uint8_t needDecompress(void)=0;
69
virtual uint8_t getExtraHeaderData(uint32_t *len, uint8_t **data);
71
virtual uint8_t hasPtsDts(void) {return 0;}; // Return 1 if the container gives PTS & DTS info
72
virtual uint32_t ptsDtsDelta(uint32_t framenum) ;
73
virtual void Dump(void)=0;
74
virtual uint8_t getExtraHeaderData(uint32_t *len, uint8_t **data);
71
virtual uint8_t open(char *name)=0;
72
virtual uint8_t close(void)=0;
76
virtual uint8_t open(char *name)=0;
77
virtual uint8_t close(void)=0;
73
78
virtual uint8_t reorder( void ) { return 0;} // by default we don"t do frame re-ordering
74
79
virtual uint8_t isReordered( void ) { return 0;} // by default we don"t do frame re-ordering
75
80
//__________________________
77
82
//__________________________
78
uint8_t getVideoInfo(aviInfo *info);
79
uint32_t getWidth( void ) { return _mainaviheader.dwWidth;};
80
uint32_t getHeight( void ) { return _mainaviheader.dwHeight;};
81
uint8_t setMyName( char *name);
82
char *getMyName( void);
83
uint8_t getVideoInfo(aviInfo *info);
84
uint32_t getWidth( void ) { return _mainaviheader.dwWidth;};
85
uint32_t getHeight( void ) { return _mainaviheader.dwHeight;};
86
uint8_t setMyName( char *name);
87
char *getMyName( void);
83
88
//__________________________
85
90
//__________________________
87
92
virtual WAVHeader *getAudioInfo(void ) =0 ;
88
virtual uint8_t getAudioStream(AVDMGenericAudioStream **audio)=0;
93
virtual uint8_t getAudioStream(AVDMGenericAudioStream **audio)=0;
89
94
virtual uint8_t getAudioStreamsInfo(uint32_t *nbStreams, audioInfo **info);
90
95
virtual uint8_t changeAudioStream(uint32_t newstream);
91
96
virtual uint32_t getCurrentAudioStreamNumber(void) { return 0;}
97
102
virtual uint8_t setFlag(uint32_t frame,uint32_t flags)=0;
98
103
virtual uint8_t getFrameSize(uint32_t frame,uint32_t *size);
99
104
virtual uint32_t getFlags(uint32_t frame,uint32_t *flags)=0;
100
virtual uint8_t getFrameNoAlloc(uint32_t framenum,uint8_t *ptr,uint32_t* framelen,
102
virtual uint8_t getFrameNoAlloc(uint32_t framenum,uint8_t *ptr,uint32_t* framelen)=0 ;
103
virtual uint8_t getRaw(uint32_t framenum,uint8_t *ptr,uint32_t* framelen)
105
return getFrameNoAlloc(framenum,ptr,framelen) ;
105
virtual uint8_t getFrameNoAlloc(uint32_t framenum,ADMCompressedImage *img)=0 ;
106
virtual uint8_t getRaw(uint32_t framenum,uint8_t *ptr,uint32_t* framelen)
108
ADMCompressedImage img;
111
r=getFrameNoAlloc(framenum,&img) ;
112
*framelen=img.dataLength;
107
115
virtual uint8_t getRawStart(uint8_t *ptr,uint32_t *len);
108
uint32_t getTime(uint32_t frame);
116
uint32_t getTime(uint32_t frame);
111
119
// index and stuff
113
121
// New write avi engine
114
AVIStreamHeader *getVideoStreamHeader(void ) { return &_videostream;}
115
MainAVIHeader *getMainHeader(void ) { return &_mainaviheader;}
116
BITMAPINFOHEADER *getBIH(void ) { return &_video_bih;}
122
AVIStreamHeader *getVideoStreamHeader(void ) { return &_videostream;}
123
MainAVIHeader *getMainHeader(void ) { return &_mainaviheader;}
124
BITMAPINFOHEADER *getBIH(void ) { return &_video_bih;}