comparison src/miscplay.c @ 444:576fb035e263 r21-2-37

Import from CVS: tag r21-2-37
author cvs
date Mon, 13 Aug 2007 11:36:19 +0200
parents abe6d1db359e
children 3d3049ae1304
comparison
equal deleted inserted replaced
443:a8296e22da4e 444:576fb035e263
379 rc = count; 379 rc = count;
380 src = (unsigned char *) *data; 380 src = (unsigned char *) *data;
381 *outbuf = 381 *outbuf =
382 dest = miscplay_sndbuf; 382 dest = miscplay_sndbuf;
383 while (count--) 383 while (count--)
384 *dest++ = (unsigned char)(((int)*((signed char *)(src++)) + 384 {
385 (int)*((signed char *)(src++))) / 2); 385 *dest++ = (unsigned char)(((int)*((signed char *)(src)) +
386 (int)*((signed char *)(src+1))) / 2);
387 src += 2;
388 }
386 *data = src; 389 *data = src;
387 return(rc); 390 return(rc);
388 } 391 }
389 392
390 /* Convert 8 bit signed stereo data to 8 bit unsigned mono data */ 393 /* Convert 8 bit signed stereo data to 8 bit unsigned mono data */
400 rc = count; 403 rc = count;
401 src = (unsigned char *) *data; 404 src = (unsigned char *) *data;
402 *outbuf = 405 *outbuf =
403 dest = miscplay_sndbuf; 406 dest = miscplay_sndbuf;
404 while (count--) 407 while (count--)
405 *dest++ = (unsigned char)(((int)*((signed char *)(src++)) + 408 {
406 (int)*((signed char *)(src++))) / 2) ^ 0x80; 409 *dest++ = (unsigned char)(((int)*((signed char *)(src)) +
410 (int)*((signed char *)(src+1))) / 2) ^ 0x80;
411 src += 2;
412 }
407 *data = src; 413 *data = src;
408 return(rc); 414 return(rc);
409 } 415 }
410 416
411 /* Convert 8 bit signed mono data to 8 bit unsigned mono data */ 417 /* Convert 8 bit signed mono data to 8 bit unsigned mono data */
491 }; 497 };
492 unsigned char *p=(unsigned char *)*data; 498 unsigned char *p=(unsigned char *)*data;
493 499
494 *outbuf = *data; 500 *outbuf = *data;
495 while ((*sz)--) 501 while ((*sz)--)
496 *p++ = ulaw_dsp[*p]; 502 {
503 *p = ulaw_dsp[*p];
504 p++;
505 }
497 *sz = 0; 506 *sz = 0;
498 *data = p; 507 *data = p;
499 return p - (unsigned char *)*outbuf; 508 return p - (unsigned char *)*outbuf;
500 } 509 }
501 510
548 rc = count; 557 rc = count;
549 src = (unsigned char *) *data; 558 src = (unsigned char *) *data;
550 *outbuf = 559 *outbuf =
551 dest = miscplay_sndbuf; 560 dest = miscplay_sndbuf;
552 while (count--) 561 while (count--)
553 /* it is not possible to directly interpolate between two ulaw encoded 562 {
554 data bytes, thus we need to convert to linear format first and later 563 /* it is not possible to directly interpolate between two ulaw encoded
555 we convert back to ulaw format */ 564 data bytes, thus we need to convert to linear format first and later
556 *dest++ = int2ulaw(ulaw2int[*(src)++] + 565 we convert back to ulaw format */
557 ulaw2int[*(src)++]); 566 *dest++ = int2ulaw(ulaw2int[*src] +
567 ulaw2int[*(src+1)]);
568 src += 2;
569 }
558 *data = src; 570 *data = src;
559 return(rc); 571 return(rc);
560 } 572 }
561 573
562 size_t sndcnv16swap(void **data,size_t *sz,void **outbuf) 574 size_t sndcnv16swap(void **data,size_t *sz,void **outbuf)
564 size_t cnt = *sz / 2; 576 size_t cnt = *sz / 2;
565 unsigned short *p; 577 unsigned short *p;
566 578
567 *outbuf = *data; 579 *outbuf = *data;
568 p = (unsigned short *) *outbuf; 580 p = (unsigned short *) *outbuf;
569 while (cnt--) { 581 while (cnt--)
570 *p++ = ((*p & 0x00ff) << 8) | (*p >> 8); 582 {
571 } 583 *p = ((*p & 0x00ff) << 8) | (*p >> 8);
584 p++;
585 }
572 *data = p; 586 *data = p;
573 cnt = *sz; 587 cnt = *sz;
574 *sz = 0; 588 *sz = 0;
575 return cnt; 589 return cnt;
576 } 590 }