| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 } | 628 } |
| 629 return true; | 629 return true; |
| 630 } | 630 } |
| 631 | 631 |
| 632 void AudioBus::clearSilentFlag() | 632 void AudioBus::clearSilentFlag() |
| 633 { | 633 { |
| 634 for (size_t i = 0; i < m_channels.size(); ++i) | 634 for (size_t i = 0; i < m_channels.size(); ++i) |
| 635 m_channels[i]->clearSilentFlag(); | 635 m_channels[i]->clearSilentFlag(); |
| 636 } | 636 } |
| 637 | 637 |
| 638 PassRefPtr<AudioBus> decodeAudioFileData(const char* data, size_t size, double s
ampleRate) | 638 PassRefPtr<AudioBus> decodeAudioFileData(const char* data, size_t size) |
| 639 { | 639 { |
| 640 blink::WebAudioBus webAudioBus; | 640 blink::WebAudioBus webAudioBus; |
| 641 if (blink::Platform::current()->loadAudioResource(&webAudioBus, data, size,
sampleRate)) | 641 if (blink::Platform::current()->loadAudioResource(&webAudioBus, data, size)) |
| 642 return webAudioBus.release(); | 642 return webAudioBus.release(); |
| 643 return nullptr; | 643 return nullptr; |
| 644 } | 644 } |
| 645 | 645 |
| 646 PassRefPtr<AudioBus> AudioBus::loadPlatformResource(const char* name, float samp
leRate) | 646 PassRefPtr<AudioBus> AudioBus::loadPlatformResource(const char* name, float samp
leRate) |
| 647 { | 647 { |
| 648 const blink::WebData& resource = blink::Platform::current()->loadResource(na
me); | 648 const blink::WebData& resource = blink::Platform::current()->loadResource(na
me); |
| 649 if (resource.isEmpty()) | 649 if (resource.isEmpty()) |
| 650 return nullptr; | 650 return nullptr; |
| 651 | 651 |
| 652 // FIXME: the sampleRate parameter is ignored. It should be removed from the
API. | 652 RefPtr<AudioBus> audioBus = decodeAudioFileData(resource.data(), resource.si
ze()); |
| 653 RefPtr<AudioBus> audioBus = decodeAudioFileData(resource.data(), resource.si
ze(), sampleRate); | |
| 654 | 653 |
| 655 if (!audioBus.get()) | 654 if (!audioBus.get()) |
| 656 return nullptr; | 655 return nullptr; |
| 657 | 656 |
| 658 // If the bus is already at the requested sample-rate then return as is. | 657 // If the bus is already at the requested sample-rate then return as is. |
| 659 if (audioBus->sampleRate() == sampleRate) | 658 if (audioBus->sampleRate() == sampleRate) |
| 660 return audioBus; | 659 return audioBus; |
| 661 | 660 |
| 662 return AudioBus::createBySampleRateConverting(audioBus.get(), false, sampleR
ate); | 661 return AudioBus::createBySampleRateConverting(audioBus.get(), false, sampleR
ate); |
| 663 } | 662 } |
| 664 | 663 |
| 665 PassRefPtr<AudioBus> createBusFromInMemoryAudioFile(const void* data, size_t dat
aSize, bool mixToMono, float sampleRate) | 664 PassRefPtr<AudioBus> createBusFromInMemoryAudioFile(const void* data, size_t dat
aSize, bool mixToMono, float sampleRate) |
| 666 { | 665 { |
| 667 // FIXME: the sampleRate parameter is ignored. It should be removed from the
API. | 666 RefPtr<AudioBus> audioBus = decodeAudioFileData(static_cast<const char*>(dat
a), dataSize); |
| 668 RefPtr<AudioBus> audioBus = decodeAudioFileData(static_cast<const char*>(dat
a), dataSize, sampleRate); | |
| 669 if (!audioBus.get()) | 667 if (!audioBus.get()) |
| 670 return nullptr; | 668 return nullptr; |
| 671 | 669 |
| 672 // If the bus needs no conversion then return as is. | 670 // If the bus needs no conversion then return as is. |
| 673 if ((!mixToMono || audioBus->numberOfChannels() == 1) && audioBus->sampleRat
e() == sampleRate) | 671 if ((!mixToMono || audioBus->numberOfChannels() == 1) && audioBus->sampleRat
e() == sampleRate) |
| 674 return audioBus; | 672 return audioBus; |
| 675 | 673 |
| 676 return AudioBus::createBySampleRateConverting(audioBus.get(), mixToMono, sam
pleRate); | 674 return AudioBus::createBySampleRateConverting(audioBus.get(), mixToMono, sam
pleRate); |
| 677 } | 675 } |
| 678 | 676 |
| 679 } // WebCore | 677 } // WebCore |
| 680 | 678 |
| 681 #endif // ENABLE(WEB_AUDIO) | 679 #endif // ENABLE(WEB_AUDIO) |
| OLD | NEW |