Mercurial > libavcodec.hg
comparison alac.c @ 5368:a31f6ae7e83d libavcodec
Make deinterlace_16 receive an array as a parameter and not two separated vars
author | vitor |
---|---|
date | Wed, 18 Jul 2007 14:45:01 +0000 |
parents | 1a1f93a4e726 |
children | 04a9bb415804 |
comparison
equal
deleted
inserted
replaced
5367:1a1f93a4e726 | 5368:a31f6ae7e83d |
---|---|
397 buffer_out++; | 397 buffer_out++; |
398 } | 398 } |
399 } | 399 } |
400 } | 400 } |
401 | 401 |
402 static void deinterlace_16(int32_t *buffer_a, int32_t *buffer_b, | 402 static void deinterlace_16(int32_t *buffer[MAX_CHANNELS], |
403 int16_t *buffer_out, | 403 int16_t *buffer_out, |
404 int numchannels, int numsamples, | 404 int numchannels, int numsamples, |
405 uint8_t interlacing_shift, | 405 uint8_t interlacing_shift, |
406 uint8_t interlacing_leftweight) | 406 uint8_t interlacing_leftweight) |
407 { | 407 { |
414 for (i = 0; i < numsamples; i++) { | 414 for (i = 0; i < numsamples; i++) { |
415 int32_t difference, midright; | 415 int32_t difference, midright; |
416 int16_t left; | 416 int16_t left; |
417 int16_t right; | 417 int16_t right; |
418 | 418 |
419 midright = buffer_a[i]; | 419 midright = buffer[0][i]; |
420 difference = buffer_b[i]; | 420 difference = buffer[1][i]; |
421 | 421 |
422 | 422 |
423 right = midright - ((difference * interlacing_leftweight) >> interlacing_shift); | 423 right = midright - ((difference * interlacing_leftweight) >> interlacing_shift); |
424 left = right + difference; | 424 left = right + difference; |
425 | 425 |
432 | 432 |
433 /* otherwise basic interlacing took place */ | 433 /* otherwise basic interlacing took place */ |
434 for (i = 0; i < numsamples; i++) { | 434 for (i = 0; i < numsamples; i++) { |
435 int16_t left, right; | 435 int16_t left, right; |
436 | 436 |
437 left = buffer_a[i]; | 437 left = buffer[0][i]; |
438 right = buffer_b[i]; | 438 right = buffer[1][i]; |
439 | 439 |
440 buffer_out[i*numchannels] = left; | 440 buffer_out[i*numchannels] = left; |
441 buffer_out[i*numchannels + 1] = right; | 441 buffer_out[i*numchannels + 1] = right; |
442 } | 442 } |
443 } | 443 } |
600 } | 600 } |
601 | 601 |
602 switch(alac->setinfo_sample_size) { | 602 switch(alac->setinfo_sample_size) { |
603 case 16: { | 603 case 16: { |
604 if (channels == 2) { | 604 if (channels == 2) { |
605 deinterlace_16(alac->outputsamples_buffer[0], | 605 deinterlace_16(alac->outputsamples_buffer, |
606 alac->outputsamples_buffer[1], | |
607 (int16_t*)outbuffer, | 606 (int16_t*)outbuffer, |
608 alac->numchannels, | 607 alac->numchannels, |
609 outputsamples, | 608 outputsamples, |
610 interlacing_shift, | 609 interlacing_shift, |
611 interlacing_leftweight); | 610 interlacing_leftweight); |