Rev 576 | Rev 799 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 576 | Rev 646 | ||
---|---|---|---|
Line 77... | Line 77... | ||
77 | 77 | ||
78 | rd->filelen = fileinfo.size; |
78 | rd->filelen = fileinfo.size; |
79 | rd->strpos = 0; |
79 | rd->strpos = 0; |
Line 80... | Line 80... | ||
80 | retval=read_file (file,rd->buffer,0,0x10000,&bytes); |
80 | retval=read_file (file,rd->buffer,0,0x10000,&bytes); |
81 | 81 | ||
82 | if (retval) return 0; |
82 | if( (retval==0)||(retval==6)) |
83 | 83 | { |
|
- | 84 | rd->strremain=bytes; |
|
84 | rd->strremain = bytes; |
85 | rd->filepos=bytes; |
85 | rd->filepos = bytes; |
86 | rd->strpos = 0; |
- | 87 | return 1; |
|
- | 88 | }; |
|
Line 86... | Line 89... | ||
86 | return 1; |
89 | return 0; |
87 | }; |
90 | }; |
88 | 91 | ||
Line -... | Line 92... | ||
- | 92 | static int fill_reader(struct reader *rd) |
|
89 | static int fill_reader(struct reader *rd) |
93 | { int retval; |
90 | { int retval; |
- | |
Line -... | Line 94... | ||
- | 94 | int bytes; |
|
91 | int bytes; |
95 | |
92 | 96 | if(rd->strremain > 0) |
|
93 | mem_cpy(rd->buffer,rd->stream,rd->strremain); |
97 | mem_cpy(rd->buffer,rd->stream,rd->strremain); |
94 | rd->stream = rd->buffer; |
98 | |
95 | 99 | rd->stream = rd->buffer; |
|
96 | retval=read_file (rd->hFile,rd->buffer+rd->strremain,rd->filepos, |
100 | retval=read_file (rd->hFile,rd->buffer+rd->strremain,rd->filepos, |
97 | 0x10000-rd->strremain,&bytes); |
101 | 0x10000-rd->strremain,&bytes); |
- | 102 | if( (retval==0)||(retval==6)) |
|
- | 103 | { |
|
98 | if (retval) return 0; |
104 | rd->strremain+=bytes; |
99 | if(!bytes) return 0; |
105 | rd->filepos+=bytes; |
Line 100... | Line 106... | ||
100 | rd->strremain+=bytes; |
106 | rd->strpos = 0; |
101 | rd->filepos+=bytes; |
107 | return bytes; |
102 | rd->strpos = 0; |
108 | }; |
103 | return 1; |
109 | return 0; |
104 | }; |
110 | }; |
- | 111 | ||
105 | 112 | int __stdcall set_reader(struct reader *rd, unsigned int filepos) |
|
106 | int __stdcall set_reader(struct reader *rd, unsigned int filepos) |
113 | { int retval; |
107 | { int retval; |
114 | unsigned int bytes; |
108 | unsigned int bytes; |
115 | retval=read_file (rd->hFile,rd->buffer,filepos,0x10000,&bytes); |
Line 121... | Line 128... | ||
121 | ssize=0; |
128 | ssize=0; |
122 | oldhead=0; |
129 | oldhead=0; |
123 | memset(bsspace,0,sizeof(bsspace)); |
130 | memset(bsspace,0,sizeof(bsspace)); |
124 | return 1; |
131 | return 1; |
125 | }; |
132 | }; |
- | 133 | return 0; |
|
- | 134 | }; |
|
Line 126... | Line 135... | ||
126 | 135 | ||
127 | static int stream_head_read(struct reader *rd,unsigned long *newhead) |
136 | static int stream_head_read(struct reader *rd,unsigned long *newhead) |
128 | { |
137 | { |
129 | if(rd->strremain < 4) |
138 | if(rd->strremain < 4) |
Line 137... | Line 146... | ||
137 | return TRUE; |
146 | return TRUE; |
138 | }; |
147 | }; |
Line 139... | Line 148... | ||
139 | 148 | ||
140 | int stream_read_raw(struct reader *rd,unsigned char *buf, int size) |
149 | int stream_read_raw(struct reader *rd,unsigned char *buf, int size) |
141 | { |
- | |
142 | if(rd->strremain < size) |
- | |
143 | if( !fill_reader(rd)) |
- | |
Line -... | Line 150... | ||
- | 150 | { |
|
- | 151 | ||
- | 152 | if(rd->strremain < size) fill_reader(rd); |
|
- | 153 | ||
- | 154 | if(size > rd->strremain) size=rd->strremain; |
|
- | 155 | ||
144 | return 0; |
156 | if(size>0) |
145 | 157 | { |
|
146 | mem_cpy(buf,rd->stream,size); |
158 | mem_cpy(buf,rd->stream,size); |
147 | rd->strpos+=size; |
159 | rd->strpos+=size; |
- | 160 | rd->stream+=size; |
|
- | 161 | rd->strremain-=size; |
|
148 | rd->stream+=size; |
162 | return size; |
149 | rd->strremain-=size; |
163 | }; |
Line 150... | Line 164... | ||
150 | return 1; |
164 | return 0; |
151 | }; |
165 | }; |
152 | 166 | ||
Line 489... | Line 503... | ||
489 | /* if filepos is invalid, so is framepos */ |
503 | /* if filepos is invalid, so is framepos */ |
490 | //framepos = rd->filepos - 4; |
504 | //framepos = rd->filepos - 4; |
491 | /* read main data into memory */ |
505 | /* read main data into memory */ |
492 | /* 0 is error! */ |
506 | /* 0 is error! */ |
Line 493... | Line 507... | ||
493 | 507 | ||
494 | if(!rd->read_frame_body(rd,bsbuf,fr->framesize)) |
508 | if(rd->read_frame_body(rd,bsbuf,fr->framesize) < fr->framesize) |
Line 495... | Line 509... | ||
495 | return 0; |
509 | return 0; |
496 | 510 | ||
497 | #if 0 |
511 | #if 0 |
Line 919... | Line 933... | ||
919 | unsigned char* tagdata = NULL; |
933 | unsigned char* tagdata = NULL; |
920 | unsigned char major = header & 0xff; |
934 | unsigned char major = header & 0xff; |
Line 921... | Line 935... | ||
921 | 935 | ||
Line 922... | Line 936... | ||
922 | if(major == 0xff) return -1; |
936 | if(major == 0xff) return -1; |
923 | 937 | ||
924 | if (!rd->read_frame_body(rd,buf,6)) |
938 | if (rd->read_frame_body(rd,buf,6)<6) |
925 | return 0; |
939 | return 0; |
Line 926... | Line 940... | ||
926 | if(buf[0] == 0xff) /* major version, will never be 0xff */ |
940 | if(buf[0] == 0xff) /* major version, will never be 0xff */ |