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 |