Mercurial > libavcodec.hg
comparison pcm.c @ 5422:ad384eda0cb7 libavcodec
support silly PCM variant used by zork nemesis
fixes audio decoding of T000A11C.AVI
author | michael |
---|---|
date | Mon, 30 Jul 2007 02:05:16 +0000 |
parents | 91015dc624ad |
children | 13039fd7cf10 |
comparison
equal
deleted
inserted
replaced
5421:0e593c7d0ebc | 5422:ad384eda0cb7 |
---|---|
289 for(;n>0;n--) { | 289 for(;n>0;n--) { |
290 v = *samples++; | 290 v = *samples++; |
291 *dst++ = (v >> 8) + 128; | 291 *dst++ = (v >> 8) + 128; |
292 } | 292 } |
293 break; | 293 break; |
294 case CODEC_ID_PCM_ZORK: | |
295 for(;n>0;n--) { | |
296 v= *samples++ >> 8; | |
297 if(v<0) v = -v; | |
298 else v+= 128; | |
299 *dst++ = v; | |
300 } | |
301 break; | |
294 case CODEC_ID_PCM_ALAW: | 302 case CODEC_ID_PCM_ALAW: |
295 for(;n>0;n--) { | 303 for(;n>0;n--) { |
296 v = *samples++; | 304 v = *samples++; |
297 *dst++ = linear_to_alaw[(v + 32768) >> 2]; | 305 *dst++ = linear_to_alaw[(v + 32768) >> 2]; |
298 } | 306 } |
448 break; | 456 break; |
449 case CODEC_ID_PCM_U8: | 457 case CODEC_ID_PCM_U8: |
450 n = buf_size; | 458 n = buf_size; |
451 for(;n>0;n--) { | 459 for(;n>0;n--) { |
452 *samples++ = ((int)*src++ - 128) << 8; | 460 *samples++ = ((int)*src++ - 128) << 8; |
461 } | |
462 break; | |
463 case CODEC_ID_PCM_ZORK: | |
464 n = buf_size; | |
465 for(;n>0;n--) { | |
466 int x= *src++; | |
467 if(x&128) x-= 128; | |
468 else x = -x; | |
469 *samples++ = x << 8; | |
453 } | 470 } |
454 break; | 471 break; |
455 case CODEC_ID_PCM_ALAW: | 472 case CODEC_ID_PCM_ALAW: |
456 case CODEC_ID_PCM_MULAW: | 473 case CODEC_ID_PCM_MULAW: |
457 n = buf_size; | 474 n = buf_size; |
503 PCM_CODEC(CODEC_ID_PCM_U16BE, pcm_u16be); | 520 PCM_CODEC(CODEC_ID_PCM_U16BE, pcm_u16be); |
504 PCM_CODEC(CODEC_ID_PCM_S8, pcm_s8); | 521 PCM_CODEC(CODEC_ID_PCM_S8, pcm_s8); |
505 PCM_CODEC(CODEC_ID_PCM_U8, pcm_u8); | 522 PCM_CODEC(CODEC_ID_PCM_U8, pcm_u8); |
506 PCM_CODEC(CODEC_ID_PCM_ALAW, pcm_alaw); | 523 PCM_CODEC(CODEC_ID_PCM_ALAW, pcm_alaw); |
507 PCM_CODEC(CODEC_ID_PCM_MULAW, pcm_mulaw); | 524 PCM_CODEC(CODEC_ID_PCM_MULAW, pcm_mulaw); |
525 PCM_CODEC(CODEC_ID_PCM_ZORK, pcm_zork); | |
508 | 526 |
509 #undef PCM_CODEC | 527 #undef PCM_CODEC |