Changeset 277 for pjproject/trunk/pjmedia/src/pjmedia/file_port.c
- Timestamp:
- Mar 4, 2006 2:52:44 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/file_port.c
r241 r277 28 28 29 29 #define SIGNATURE ('F'<<24|'I'<<16|'L'<<8|'E') 30 #define BUF_SIZE (320*10)31 30 32 31 struct file_port … … 60 59 port->base.info.pt = 0xFF; 61 60 port->base.info.encoding_name = pj_str("pcm"); 61 62 port->base.put_frame = &file_put_frame; 63 port->base.get_frame = &file_get_frame; 64 port->base.on_destroy = &file_on_destroy; 65 66 67 /* Put in default values. 68 * These will be overriden once the file is read. 69 */ 62 70 port->base.info.sample_rate = 8000; 63 71 port->base.info.bits_per_sample = 16; 64 72 port->base.info.samples_per_frame = 160; 65 73 port->base.info.bytes_per_frame = 320; 66 67 port->base.put_frame = &file_put_frame;68 port->base.get_frame = &file_get_frame;69 port->base.on_destroy = &file_on_destroy;70 74 71 75 return port; … … 137 141 if (wave_hdr.fmt_hdr.fmt_tag != 1 || 138 142 wave_hdr.fmt_hdr.nchan != 1 || 139 wave_hdr.fmt_hdr.sample_rate != 8000 || 140 wave_hdr.fmt_hdr.bytes_per_sec != 16000 || 141 wave_hdr.fmt_hdr.block_align != 2 || 142 wave_hdr.fmt_hdr.bits_per_sample != 16) 143 wave_hdr.fmt_hdr.bits_per_sample != 16 || 144 wave_hdr.fmt_hdr.block_align != 2) 143 145 { 144 146 pj_file_close(fd); … … 167 169 /* Initialize */ 168 170 file_port->base.user_data = user_data; 171 172 /* Update port info. */ 173 file_port->base.info.sample_rate = wave_hdr.fmt_hdr.sample_rate; 174 file_port->base.info.bits_per_sample = wave_hdr.fmt_hdr.bits_per_sample; 175 file_port->base.info.samples_per_frame = file_port->base.info.sample_rate * 176 20 / 1000; 177 file_port->base.info.bytes_per_frame = 178 file_port->base.info.samples_per_frame * 179 file_port->base.info.bits_per_sample / 8; 180 169 181 170 182 /* For this version, we only support reading the whole … … 223 235 { 224 236 struct file_port *port = (struct file_port*)this_port; 225 237 unsigned frame_size; 226 238 pj_assert(port->base.info.signature == SIGNATURE); 239 240 frame_size = port->base.info.bytes_per_frame; 227 241 228 242 /* Copy frame from buffer. */ 229 243 frame->type = PJMEDIA_FRAME_TYPE_AUDIO; 230 frame->size = 320;244 frame->size = frame_size; 231 245 frame->timestamp.u64 = 0; 232 246 233 if (port->readpos + 320<= port->buf + port->bufsize) {234 pj_memcpy(frame->buf, port->readpos, 320);235 port->readpos += 320;247 if (port->readpos + frame_size <= port->buf + port->bufsize) { 248 pj_memcpy(frame->buf, port->readpos, frame_size); 249 port->readpos += frame_size; 236 250 if (port->readpos == port->buf + port->bufsize) 237 251 port->readpos = port->buf; … … 241 255 endread = (port->buf+port->bufsize) - port->readpos; 242 256 pj_memcpy(frame->buf, port->readpos, endread); 243 pj_memcpy(((char*)frame->buf)+endread, port->buf, 320-endread);244 port->readpos = port->buf + ( 320-endread);257 pj_memcpy(((char*)frame->buf)+endread, port->buf, frame_size-endread); 258 port->readpos = port->buf + (frame_size - endread); 245 259 } 246 260 … … 249 263 250 264 /* 251 * 265 * Destroy port. 252 266 */ 253 267 static pj_status_t file_on_destroy(pjmedia_port *this_port)
Note: See TracChangeset
for help on using the changeset viewer.