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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 #include "modules/webaudio/PannerNode.h" | 25 #include "modules/webaudio/PannerNode.h" |
26 #include "bindings/core/v8/ExceptionMessages.h" | 26 #include "bindings/core/v8/ExceptionMessages.h" |
27 #include "bindings/core/v8/ExceptionState.h" | 27 #include "bindings/core/v8/ExceptionState.h" |
28 #include "core/dom/ExceptionCode.h" | 28 #include "core/dom/ExceptionCode.h" |
29 #include "core/dom/ExecutionContext.h" | 29 #include "core/dom/ExecutionContext.h" |
30 #include "modules/webaudio/AudioBufferSourceNode.h" | 30 #include "modules/webaudio/AudioBufferSourceNode.h" |
31 #include "modules/webaudio/AudioNodeInput.h" | 31 #include "modules/webaudio/AudioNodeInput.h" |
32 #include "modules/webaudio/AudioNodeOutput.h" | 32 #include "modules/webaudio/AudioNodeOutput.h" |
33 #include "modules/webaudio/BaseAudioContext.h" | 33 #include "modules/webaudio/BaseAudioContext.h" |
| 34 #include "modules/webaudio/PannerOptions.h" |
34 #include "platform/Histogram.h" | 35 #include "platform/Histogram.h" |
35 #include "platform/audio/HRTFPanner.h" | 36 #include "platform/audio/HRTFPanner.h" |
36 #include "wtf/MathExtras.h" | 37 #include "wtf/MathExtras.h" |
37 | 38 |
38 namespace blink { | 39 namespace blink { |
39 | 40 |
40 static void fixNANs(double& x) | 41 static void fixNANs(double& x) |
41 { | 42 { |
42 if (std::isnan(x) || std::isinf(x)) | 43 if (std::isnan(x) || std::isinf(x)) |
43 x = 0.0; | 44 x = 0.0; |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
661 DCHECK(isMainThread()); | 662 DCHECK(isMainThread()); |
662 | 663 |
663 if (context.isContextClosed()) { | 664 if (context.isContextClosed()) { |
664 context.throwExceptionForClosedState(exceptionState); | 665 context.throwExceptionForClosedState(exceptionState); |
665 return nullptr; | 666 return nullptr; |
666 } | 667 } |
667 | 668 |
668 return new PannerNode(context); | 669 return new PannerNode(context); |
669 } | 670 } |
670 | 671 |
| 672 PannerNode* PannerNode::create(BaseAudioContext* context, const PannerOptions& o
ptions, ExceptionState& exceptionState) |
| 673 { |
| 674 PannerNode* node = create(*context, exceptionState); |
| 675 |
| 676 if (!node) |
| 677 return nullptr; |
| 678 |
| 679 node->handleChannelOptions(options, exceptionState); |
| 680 |
| 681 if (options.hasPanningModel()) |
| 682 node->setPanningModel(options.panningModel()); |
| 683 if (options.hasDistanceModel()) |
| 684 node->setDistanceModel(options.distanceModel()); |
| 685 |
| 686 if (options.hasPositionX()) |
| 687 node->positionX()->setValue(options.positionX()); |
| 688 if (options.hasPositionY()) |
| 689 node->positionY()->setValue(options.positionY()); |
| 690 if (options.hasPositionZ()) |
| 691 node->positionZ()->setValue(options.positionZ()); |
| 692 |
| 693 if (options.hasOrientationX()) |
| 694 node->orientationX()->setValue(options.orientationX()); |
| 695 if (options.hasOrientationY()) |
| 696 node->orientationY()->setValue(options.orientationY()); |
| 697 if (options.hasOrientationZ()) |
| 698 node->orientationZ()->setValue(options.orientationZ()); |
| 699 |
| 700 if (options.hasRefDistance()) |
| 701 node->setRefDistance(options.refDistance()); |
| 702 if (options.hasMaxDistance()) |
| 703 node->setMaxDistance(options.maxDistance()); |
| 704 if (options.hasRolloffFactor()) |
| 705 node->setRolloffFactor(options.rolloffFactor()); |
| 706 if (options.hasConeInnerAngle()) |
| 707 node->setConeInnerAngle(options.coneInnerAngle()); |
| 708 if (options.hasConeOuterAngle()) |
| 709 node->setConeOuterAngle(options.coneOuterAngle()); |
| 710 if (options.hasConeOuterGain()) |
| 711 node->setConeOuterGain(options.coneOuterGain()); |
| 712 |
| 713 return node; |
| 714 } |
| 715 |
671 PannerHandler& PannerNode::pannerHandler() const | 716 PannerHandler& PannerNode::pannerHandler() const |
672 { | 717 { |
673 return static_cast<PannerHandler&>(handler()); | 718 return static_cast<PannerHandler&>(handler()); |
674 } | 719 } |
675 | 720 |
676 String PannerNode::panningModel() const | 721 String PannerNode::panningModel() const |
677 { | 722 { |
678 return pannerHandler().panningModel(); | 723 return pannerHandler().panningModel(); |
679 } | 724 } |
680 | 725 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 visitor->trace(m_positionZ); | 821 visitor->trace(m_positionZ); |
777 | 822 |
778 visitor->trace(m_orientationX); | 823 visitor->trace(m_orientationX); |
779 visitor->trace(m_orientationY); | 824 visitor->trace(m_orientationY); |
780 visitor->trace(m_orientationZ); | 825 visitor->trace(m_orientationZ); |
781 | 826 |
782 AudioNode::trace(visitor); | 827 AudioNode::trace(visitor); |
783 } | 828 } |
784 | 829 |
785 } // namespace blink | 830 } // namespace blink |
OLD | NEW |