@sendbird/uikit-react 3.3.7 → 3.4.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/App.js +60 -34
- package/App.js.map +1 -1
- package/CHANGELOG.md +150 -0
- package/Channel/components/ChannelHeader.js +20 -18
- package/Channel/components/ChannelHeader.js.map +1 -1
- package/Channel/components/ChannelUI.js +48 -29
- package/Channel/components/ChannelUI.js.map +1 -1
- package/Channel/components/FileViewer.js +15 -14
- package/Channel/components/FileViewer.js.map +1 -1
- package/Channel/components/FrozenNotification.js +4 -4
- package/Channel/components/Message.js +33 -24
- package/Channel/components/Message.js.map +1 -1
- package/Channel/components/MessageInput.js +62 -20
- package/Channel/components/MessageInput.js.map +1 -1
- package/Channel/components/MessageList.js +36 -27
- package/Channel/components/MessageList.js.map +1 -1
- package/Channel/components/RemoveMessageModal.js +21 -17
- package/Channel/components/RemoveMessageModal.js.map +1 -1
- package/Channel/components/SuggestedMentionList.js +17 -16
- package/Channel/components/SuggestedMentionList.js.map +1 -1
- package/Channel/components/TypingIndicator.js +15 -14
- package/Channel/components/TypingIndicator.js.map +1 -1
- package/Channel/components/UnreadCount.js +4 -4
- package/Channel/context.js +14 -13
- package/Channel/context.js.map +1 -1
- package/Channel.js +43 -28
- package/Channel.js.map +1 -1
- package/ChannelList/components/AddChannel.js +15 -15
- package/ChannelList/components/ChannelListHeader.js +7 -7
- package/ChannelList/components/ChannelListUI.js +29 -28
- package/ChannelList/components/ChannelListUI.js.map +1 -1
- package/ChannelList/components/ChannelPreview.js +26 -25
- package/ChannelList/components/ChannelPreview.js.map +1 -1
- package/ChannelList/components/ChannelPreviewAction.js +14 -14
- package/ChannelList/context.js +8 -8
- package/ChannelList.js +29 -28
- package/ChannelList.js.map +1 -1
- package/{ChannelListProvider-eb4708a3.js → ChannelListProvider-3c78429f.js} +8 -8
- package/{ChannelListProvider-eb4708a3.js.map → ChannelListProvider-3c78429f.js.map} +1 -1
- package/{ChannelProvider-1e540c0e.js → ChannelProvider-1d70b8a0.js} +88 -13
- package/ChannelProvider-1d70b8a0.js.map +1 -0
- package/ChannelSettings/components/ChannelProfile.js +12 -12
- package/ChannelSettings/components/ChannelSettingsUI.js +18 -18
- package/ChannelSettings/components/EditDetailsModal.js +12 -12
- package/ChannelSettings/components/LeaveChannel.js +12 -12
- package/ChannelSettings/components/ModerationPanel.js +15 -15
- package/ChannelSettings/components/UserListItem.js +11 -11
- package/ChannelSettings/components/UserPanel.js +18 -15
- package/ChannelSettings/components/UserPanel.js.map +1 -1
- package/ChannelSettings/context.js +3 -3
- package/ChannelSettings.js +18 -18
- package/CreateChannel/components/CreateChannelUI.js +14 -14
- package/CreateChannel/components/InviteUsers.js +14 -14
- package/CreateChannel/components/SelectChannelType.js +11 -11
- package/CreateChannel/context.js +4 -4
- package/CreateChannel.js +14 -14
- package/{CreateChannelProvider-ed2e3cb4.js → CreateChannelProvider-946fb371.js} +1 -1
- package/{CreateChannelProvider-ed2e3cb4.js.map → CreateChannelProvider-946fb371.js.map} +1 -1
- package/CreateOpenChannel/components/CreateOpenChannelUI.js +10 -10
- package/CreateOpenChannel/context.js +1 -1
- package/CreateOpenChannel.js +10 -10
- package/EditUserProfile/components/EditUserProfileUI.js +13 -13
- package/EditUserProfile.js +13 -13
- package/{LocalizationContext-4c2faa9a.js → LocalizationContext-539093a9.js} +3 -3
- package/{LocalizationContext-4c2faa9a.js.map → LocalizationContext-539093a9.js.map} +1 -1
- package/{MediaQueryContext-97a21b7e.js → MediaQueryContext-79c8ad08.js} +1 -1
- package/{MediaQueryContext-97a21b7e.js.map → MediaQueryContext-79c8ad08.js.map} +1 -1
- package/{MemberList-6483a7db.js → MemberList-1350e670.js} +10 -7
- package/MemberList-1350e670.js.map +1 -0
- package/MessageSearch/components/MessageSearchUI.js +13 -11
- package/MessageSearch/components/MessageSearchUI.js.map +1 -1
- package/MessageSearch/context.js +2 -2
- package/MessageSearch.js +13 -11
- package/MessageSearch.js.map +1 -1
- package/OpenChannel/components/FrozenChannelNotification.js +4 -4
- package/OpenChannel/components/OpenChannelHeader.js +13 -13
- package/OpenChannel/components/OpenChannelInput.js +16 -15
- package/OpenChannel/components/OpenChannelInput.js.map +1 -1
- package/OpenChannel/components/OpenChannelMessage.js +22 -22
- package/OpenChannel/components/OpenChannelMessageList.js +24 -24
- package/OpenChannel/components/OpenChannelUI.js +24 -24
- package/OpenChannel/context.js +9 -9
- package/OpenChannel.js +24 -24
- package/OpenChannelList/components/OpenChannelListUI.js +13 -13
- package/OpenChannelList/components/OpenChannelPreview.js +4 -4
- package/OpenChannelList/context.js +4 -4
- package/OpenChannelList.js +13 -13
- package/{OpenChannelListProvider-95808e48.js → OpenChannelListProvider-64e2ca27.js} +3 -3
- package/{OpenChannelListProvider-95808e48.js.map → OpenChannelListProvider-64e2ca27.js.map} +1 -1
- package/{OpenChannelProvider-e3137432.js → OpenChannelProvider-5a54a791.js} +7 -7
- package/{OpenChannelProvider-e3137432.js.map → OpenChannelProvider-5a54a791.js.map} +1 -1
- package/OpenChannelSettings/components/EditDetailsModal.js +13 -13
- package/OpenChannelSettings/components/OpenChannelProfile.js +13 -13
- package/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
- package/OpenChannelSettings/components/OperatorUI.js +17 -17
- package/OpenChannelSettings/components/ParticipantUI.js +15 -15
- package/OpenChannelSettings/context.js +3 -3
- package/OpenChannelSettings.js +18 -18
- package/README.md +8 -0
- package/{RemoveMessageModal-0baf3553.js → RemoveMessageModal-cd536405.js} +3 -3
- package/{RemoveMessageModal-0baf3553.js.map → RemoveMessageModal-cd536405.js.map} +1 -1
- package/SendbirdProvider.js +29 -11
- package/SendbirdProvider.js.map +1 -1
- package/Thread/components/ParentMessageInfo.js +32 -22
- package/Thread/components/ParentMessageInfo.js.map +1 -1
- package/Thread/components/ParentMessageInfoItem.js +33 -16
- package/Thread/components/ParentMessageInfoItem.js.map +1 -1
- package/Thread/components/ThreadHeader.js +6 -6
- package/Thread/components/ThreadList.js +33 -24
- package/Thread/components/ThreadList.js.map +1 -1
- package/Thread/components/ThreadListItem.js +40 -25
- package/Thread/components/ThreadListItem.js.map +1 -1
- package/Thread/components/ThreadMessageInput.js +71 -21
- package/Thread/components/ThreadMessageInput.js.map +1 -1
- package/Thread/components/ThreadUI.js +49 -31
- package/Thread/components/ThreadUI.js.map +1 -1
- package/Thread/context.js +9 -8
- package/Thread/context.js.map +1 -1
- package/Thread.js +47 -29
- package/Thread.js.map +1 -1
- package/{ThreadProvider-a1413f01.js → ThreadProvider-9f8652df.js} +91 -11
- package/ThreadProvider-9f8652df.js.map +1 -0
- package/{UserProfileContext-e5d90f15.js → UserProfileContext-bd8525b7.js} +1 -1
- package/{UserProfileContext-e5d90f15.js.map → UserProfileContext-bd8525b7.js.map} +1 -1
- package/VoiceMessageInputWrapper-b149ff89.js +173 -0
- package/VoiceMessageInputWrapper-b149ff89.js.map +1 -0
- package/VoicePlayer/context.js +5 -0
- package/VoicePlayer/context.js.map +1 -0
- package/VoicePlayer/useVoicePlayer.js +87 -0
- package/VoicePlayer/useVoicePlayer.js.map +1 -0
- package/VoiceRecorder/context.js +243 -0
- package/VoiceRecorder/context.js.map +1 -0
- package/VoiceRecorder/useVoiceRecorder.js +117 -0
- package/VoiceRecorder/useVoiceRecorder.js.map +1 -0
- package/{_rollupPluginBabelHelpers-b45d3824.js → _rollupPluginBabelHelpers-09618dc3.js} +1 -1
- package/_rollupPluginBabelHelpers-09618dc3.js.map +1 -0
- package/{actionTypes-c69daac1.js → actionTypes-0dd0c34b.js} +1 -1
- package/{actionTypes-c69daac1.js.map → actionTypes-0dd0c34b.js.map} +1 -1
- package/cjs/App.js +60 -34
- package/cjs/App.js.map +1 -1
- package/cjs/Channel/components/ChannelHeader.js +20 -18
- package/cjs/Channel/components/ChannelHeader.js.map +1 -1
- package/cjs/Channel/components/ChannelUI.js +48 -29
- package/cjs/Channel/components/ChannelUI.js.map +1 -1
- package/cjs/Channel/components/FileViewer.js +15 -14
- package/cjs/Channel/components/FileViewer.js.map +1 -1
- package/cjs/Channel/components/FrozenNotification.js +4 -4
- package/cjs/Channel/components/Message.js +33 -24
- package/cjs/Channel/components/Message.js.map +1 -1
- package/cjs/Channel/components/MessageInput.js +62 -20
- package/cjs/Channel/components/MessageInput.js.map +1 -1
- package/cjs/Channel/components/MessageList.js +36 -27
- package/cjs/Channel/components/MessageList.js.map +1 -1
- package/cjs/Channel/components/RemoveMessageModal.js +21 -17
- package/cjs/Channel/components/RemoveMessageModal.js.map +1 -1
- package/cjs/Channel/components/SuggestedMentionList.js +17 -16
- package/cjs/Channel/components/SuggestedMentionList.js.map +1 -1
- package/cjs/Channel/components/TypingIndicator.js +15 -14
- package/cjs/Channel/components/TypingIndicator.js.map +1 -1
- package/cjs/Channel/components/UnreadCount.js +4 -4
- package/cjs/Channel/context.js +14 -13
- package/cjs/Channel/context.js.map +1 -1
- package/cjs/Channel.js +43 -28
- package/cjs/Channel.js.map +1 -1
- package/cjs/ChannelList/components/AddChannel.js +15 -15
- package/cjs/ChannelList/components/ChannelListHeader.js +7 -7
- package/cjs/ChannelList/components/ChannelListUI.js +29 -28
- package/cjs/ChannelList/components/ChannelListUI.js.map +1 -1
- package/cjs/ChannelList/components/ChannelPreview.js +26 -25
- package/cjs/ChannelList/components/ChannelPreview.js.map +1 -1
- package/cjs/ChannelList/components/ChannelPreviewAction.js +14 -14
- package/cjs/ChannelList/context.js +8 -8
- package/cjs/ChannelList.js +29 -28
- package/cjs/ChannelList.js.map +1 -1
- package/cjs/{ChannelListProvider-94df9f01.js → ChannelListProvider-7df03e2a.js} +8 -8
- package/cjs/{ChannelListProvider-94df9f01.js.map → ChannelListProvider-7df03e2a.js.map} +1 -1
- package/cjs/{ChannelProvider-3fbf7c5e.js → ChannelProvider-56b10dd6.js} +87 -12
- package/cjs/ChannelProvider-56b10dd6.js.map +1 -0
- package/cjs/ChannelSettings/components/ChannelProfile.js +12 -12
- package/cjs/ChannelSettings/components/ChannelSettingsUI.js +18 -18
- package/cjs/ChannelSettings/components/EditDetailsModal.js +12 -12
- package/cjs/ChannelSettings/components/LeaveChannel.js +12 -12
- package/cjs/ChannelSettings/components/ModerationPanel.js +15 -15
- package/cjs/ChannelSettings/components/UserListItem.js +11 -11
- package/cjs/ChannelSettings/components/UserPanel.js +18 -15
- package/cjs/ChannelSettings/components/UserPanel.js.map +1 -1
- package/cjs/ChannelSettings/context.js +3 -3
- package/cjs/ChannelSettings.js +18 -18
- package/cjs/CreateChannel/components/CreateChannelUI.js +14 -14
- package/cjs/CreateChannel/components/InviteUsers.js +14 -14
- package/cjs/CreateChannel/components/SelectChannelType.js +11 -11
- package/cjs/CreateChannel/context.js +4 -4
- package/cjs/CreateChannel.js +14 -14
- package/cjs/{CreateChannelProvider-70422add.js → CreateChannelProvider-359f35d1.js} +1 -1
- package/cjs/{CreateChannelProvider-70422add.js.map → CreateChannelProvider-359f35d1.js.map} +1 -1
- package/cjs/CreateOpenChannel/components/CreateOpenChannelUI.js +10 -10
- package/cjs/CreateOpenChannel/context.js +1 -1
- package/cjs/CreateOpenChannel.js +10 -10
- package/cjs/EditUserProfile/components/EditUserProfileUI.js +13 -13
- package/cjs/EditUserProfile.js +13 -13
- package/cjs/{LocalizationContext-a0f833e9.js → LocalizationContext-7d2c13ee.js} +3 -3
- package/cjs/{LocalizationContext-a0f833e9.js.map → LocalizationContext-7d2c13ee.js.map} +1 -1
- package/cjs/{MediaQueryContext-770ae8bc.js → MediaQueryContext-36855cf6.js} +1 -1
- package/cjs/{MediaQueryContext-770ae8bc.js.map → MediaQueryContext-36855cf6.js.map} +1 -1
- package/cjs/{MemberList-4a0910dd.js → MemberList-cf4488bc.js} +10 -7
- package/cjs/MemberList-cf4488bc.js.map +1 -0
- package/cjs/MessageSearch/components/MessageSearchUI.js +13 -11
- package/cjs/MessageSearch/components/MessageSearchUI.js.map +1 -1
- package/cjs/MessageSearch/context.js +2 -2
- package/cjs/MessageSearch.js +13 -11
- package/cjs/MessageSearch.js.map +1 -1
- package/cjs/OpenChannel/components/FrozenChannelNotification.js +4 -4
- package/cjs/OpenChannel/components/OpenChannelHeader.js +13 -13
- package/cjs/OpenChannel/components/OpenChannelInput.js +16 -15
- package/cjs/OpenChannel/components/OpenChannelInput.js.map +1 -1
- package/cjs/OpenChannel/components/OpenChannelMessage.js +22 -22
- package/cjs/OpenChannel/components/OpenChannelMessageList.js +24 -24
- package/cjs/OpenChannel/components/OpenChannelUI.js +24 -24
- package/cjs/OpenChannel/context.js +9 -9
- package/cjs/OpenChannel.js +24 -24
- package/cjs/OpenChannelList/components/OpenChannelListUI.js +13 -13
- package/cjs/OpenChannelList/components/OpenChannelPreview.js +4 -4
- package/cjs/OpenChannelList/context.js +4 -4
- package/cjs/OpenChannelList.js +13 -13
- package/cjs/{OpenChannelListProvider-e97c8ed9.js → OpenChannelListProvider-d0e494e8.js} +3 -3
- package/cjs/{OpenChannelListProvider-e97c8ed9.js.map → OpenChannelListProvider-d0e494e8.js.map} +1 -1
- package/cjs/{OpenChannelProvider-9b453ac0.js → OpenChannelProvider-84d45a52.js} +7 -7
- package/cjs/{OpenChannelProvider-9b453ac0.js.map → OpenChannelProvider-84d45a52.js.map} +1 -1
- package/cjs/OpenChannelSettings/components/EditDetailsModal.js +13 -13
- package/cjs/OpenChannelSettings/components/OpenChannelProfile.js +13 -13
- package/cjs/OpenChannelSettings/components/OpenChannelSettingsUI.js +18 -18
- package/cjs/OpenChannelSettings/components/OperatorUI.js +17 -17
- package/cjs/OpenChannelSettings/components/ParticipantUI.js +15 -15
- package/cjs/OpenChannelSettings/context.js +3 -3
- package/cjs/OpenChannelSettings.js +18 -18
- package/cjs/{RemoveMessageModal-7bde69be.js → RemoveMessageModal-44018509.js} +3 -3
- package/cjs/{RemoveMessageModal-7bde69be.js.map → RemoveMessageModal-44018509.js.map} +1 -1
- package/cjs/SendbirdProvider.js +29 -11
- package/cjs/SendbirdProvider.js.map +1 -1
- package/cjs/Thread/components/ParentMessageInfo.js +34 -24
- package/cjs/Thread/components/ParentMessageInfo.js.map +1 -1
- package/cjs/Thread/components/ParentMessageInfoItem.js +33 -16
- package/cjs/Thread/components/ParentMessageInfoItem.js.map +1 -1
- package/cjs/Thread/components/ThreadHeader.js +6 -6
- package/cjs/Thread/components/ThreadList.js +33 -24
- package/cjs/Thread/components/ThreadList.js.map +1 -1
- package/cjs/Thread/components/ThreadListItem.js +41 -26
- package/cjs/Thread/components/ThreadListItem.js.map +1 -1
- package/cjs/Thread/components/ThreadMessageInput.js +73 -23
- package/cjs/Thread/components/ThreadMessageInput.js.map +1 -1
- package/cjs/Thread/components/ThreadUI.js +49 -31
- package/cjs/Thread/components/ThreadUI.js.map +1 -1
- package/cjs/Thread/context.js +9 -8
- package/cjs/Thread/context.js.map +1 -1
- package/cjs/Thread.js +47 -29
- package/cjs/Thread.js.map +1 -1
- package/cjs/{ThreadProvider-71441c16.js → ThreadProvider-e8591a61.js} +90 -10
- package/cjs/ThreadProvider-e8591a61.js.map +1 -0
- package/cjs/{UserProfileContext-74e6409b.js → UserProfileContext-89b8a98d.js} +1 -1
- package/cjs/{UserProfileContext-74e6409b.js.map → UserProfileContext-89b8a98d.js.map} +1 -1
- package/cjs/VoiceMessageInputWrapper-6d309e8c.js +179 -0
- package/cjs/VoiceMessageInputWrapper-6d309e8c.js.map +1 -0
- package/cjs/VoicePlayer/context.js +14 -0
- package/cjs/VoicePlayer/context.js.map +1 -0
- package/cjs/VoicePlayer/useVoicePlayer.js +91 -0
- package/cjs/VoicePlayer/useVoicePlayer.js.map +1 -0
- package/cjs/VoiceRecorder/context.js +253 -0
- package/cjs/VoiceRecorder/context.js.map +1 -0
- package/cjs/VoiceRecorder/useVoiceRecorder.js +122 -0
- package/cjs/VoiceRecorder/useVoiceRecorder.js.map +1 -0
- package/cjs/{_rollupPluginBabelHelpers-25763ef8.js → _rollupPluginBabelHelpers-9807f0cb.js} +1 -1
- package/cjs/_rollupPluginBabelHelpers-9807f0cb.js.map +1 -0
- package/cjs/{actionTypes-85a652e4.js → actionTypes-64f969d0.js} +1 -1
- package/cjs/{actionTypes-85a652e4.js.map → actionTypes-64f969d0.js.map} +1 -1
- package/cjs/{color-51fd9a0c.js → color-ae15b40e.js} +1 -1
- package/cjs/{color-51fd9a0c.js.map → color-ae15b40e.js.map} +1 -1
- package/cjs/{compareIds-44844f10.js → compareIds-88a3abee.js} +1 -1
- package/cjs/{compareIds-44844f10.js.map → compareIds-88a3abee.js.map} +1 -1
- package/cjs/{const-4761421a.js → const-6d993a66.js} +1 -1
- package/cjs/{const-4761421a.js.map → const-6d993a66.js.map} +1 -1
- package/cjs/{const-618dd4f4.js → const-98ae036e.js} +1 -1
- package/cjs/{const-618dd4f4.js.map → const-98ae036e.js.map} +1 -1
- package/cjs/consts-7142bdfe.js +36 -0
- package/cjs/consts-7142bdfe.js.map +1 -0
- package/cjs/{context-4b1de73e.js → context-9f945182.js} +2 -2
- package/cjs/{context-4b1de73e.js.map → context-9f945182.js.map} +1 -1
- package/cjs/dist/index.css +413 -16
- package/cjs/dist/index.css.map +1 -1
- package/cjs/{index-32b39be6.js → index-1f2ac00b.js} +5 -5
- package/cjs/{index-32b39be6.js.map → index-1f2ac00b.js.map} +1 -1
- package/cjs/{index-4dc29990.js → index-31135e46.js} +1 -1
- package/cjs/{index-4dc29990.js.map → index-31135e46.js.map} +1 -1
- package/cjs/{index-9f6a474c.js → index-318ca5bb.js} +2 -2
- package/cjs/{index-9f6a474c.js.map → index-318ca5bb.js.map} +1 -1
- package/cjs/{index-0e76934f.js → index-45c199d5.js} +8 -8
- package/cjs/index-45c199d5.js.map +1 -0
- package/cjs/{index-bfe8bdde.js → index-6691da2c.js} +49 -3
- package/cjs/index-6691da2c.js.map +1 -0
- package/cjs/{index-97532335.js → index-80ec94b9.js} +2 -2
- package/cjs/{index-97532335.js.map → index-80ec94b9.js.map} +1 -1
- package/cjs/{index-2c095d94.js → index-86b55059.js} +2 -2
- package/cjs/{index-2c095d94.js.map → index-86b55059.js.map} +1 -1
- package/cjs/{index-c4738d8b.js → index-9d2d5d23.js} +3 -3
- package/cjs/{index-c4738d8b.js.map → index-9d2d5d23.js.map} +1 -1
- package/cjs/{index-756baf20.js → index-9f074bb0.js} +7 -7
- package/cjs/{index-756baf20.js.map → index-9f074bb0.js.map} +1 -1
- package/cjs/{index-4d6f2a4e.js → index-a34a53d3.js} +4 -4
- package/cjs/{index-4d6f2a4e.js.map → index-a34a53d3.js.map} +1 -1
- package/cjs/{index-67134275.js → index-c34f34a2.js} +2 -2
- package/cjs/{index-67134275.js.map → index-c34f34a2.js.map} +1 -1
- package/cjs/index-e0971532.js +280 -0
- package/cjs/index-e0971532.js.map +1 -0
- package/cjs/index-fa531baa.js +175 -0
- package/cjs/index-fa531baa.js.map +1 -0
- package/cjs/{index-7d4e7ad9.js → index-fb42d34c.js} +1 -1
- package/cjs/{index-7d4e7ad9.js.map → index-fb42d34c.js.map} +1 -1
- package/cjs/index.js +51 -39
- package/cjs/index.js.map +1 -1
- package/cjs/lame.all.js +14498 -0
- package/cjs/lame.all.js.map +1 -0
- package/cjs/sendbirdSelectors.js +2 -2
- package/cjs/{stringSet-87e51d08.js → stringSet-d4071e23.js} +5 -1
- package/cjs/stringSet-d4071e23.js.map +1 -0
- package/cjs/{topics-d9091126.js → topics-7108f68f.js} +1 -1
- package/cjs/{topics-d9091126.js.map → topics-7108f68f.js.map} +1 -1
- package/cjs/{tslib.es6-0b4c49f8.js → tslib.es6-23b4ef32.js} +1 -1
- package/cjs/{tslib.es6-0b4c49f8.js.map → tslib.es6-23b4ef32.js.map} +1 -1
- package/cjs/types-8f7bbb00.js +11 -0
- package/cjs/types-8f7bbb00.js.map +1 -0
- package/cjs/ui/Accordion.js +3 -3
- package/cjs/ui/AccordionGroup.js +2 -2
- package/cjs/ui/AdminMessage.js +3 -3
- package/cjs/ui/Avatar.js +2 -2
- package/cjs/ui/Badge.js +5 -5
- package/cjs/ui/BottomSheet.js +1 -1
- package/cjs/ui/Button.js +3 -3
- package/cjs/ui/ChannelAvatar.js +3 -3
- package/cjs/ui/ConnectionStatus.js +4 -4
- package/cjs/ui/ContextMenu.js +5 -5
- package/cjs/ui/DateSeparator.js +4 -4
- package/cjs/ui/EmojiReactions.js +7 -7
- package/cjs/ui/FileMessageItemBody.js +6 -6
- package/cjs/ui/FileViewer.js +8 -8
- package/cjs/ui/Icon.js +354 -314
- package/cjs/ui/Icon.js.map +1 -1
- package/cjs/ui/IconButton.js +1 -1
- package/cjs/ui/ImageRenderer.js +1 -1
- package/cjs/ui/Input.js +2 -2
- package/cjs/ui/Label.js +2 -2
- package/cjs/ui/LinkLabel.js +2 -2
- package/cjs/ui/Loader.js +1 -1
- package/cjs/ui/MentionLabel.js +11 -11
- package/cjs/ui/MessageContent.js +35 -20
- package/cjs/ui/MessageContent.js.map +1 -1
- package/cjs/ui/MessageInput.js +35 -16
- package/cjs/ui/MessageInput.js.map +1 -1
- package/cjs/ui/MessageItemMenu.js +9 -8
- package/cjs/ui/MessageItemMenu.js.map +1 -1
- package/cjs/ui/MessageItemReactionMenu.js +5 -5
- package/cjs/ui/MessageSearchFileItem.js +17 -14
- package/cjs/ui/MessageSearchFileItem.js.map +1 -1
- package/cjs/ui/MessageSearchItem.js +9 -9
- package/cjs/ui/MessageStatus.js +10 -10
- package/cjs/ui/Modal.js +7 -7
- package/cjs/ui/OGMessageItemBody.js +36 -26
- package/cjs/ui/OGMessageItemBody.js.map +1 -1
- package/cjs/ui/OpenChannelAdminMessage.js +3 -3
- package/cjs/ui/OpenChannelAvatar.js +6 -6
- package/cjs/ui/OpenchannelConversationHeader.js +6 -6
- package/cjs/ui/OpenchannelFileMessage.js +16 -16
- package/cjs/ui/OpenchannelOGMessage.js +16 -16
- package/cjs/ui/OpenchannelThumbnailMessage.js +15 -15
- package/cjs/ui/OpenchannelUserMessage.js +16 -16
- package/cjs/ui/PlaceHolder.js +6 -6
- package/cjs/ui/PlaybackTime.js +36 -0
- package/cjs/ui/PlaybackTime.js.map +1 -0
- package/cjs/ui/ProgressBar.js +41 -0
- package/cjs/ui/ProgressBar.js.map +1 -0
- package/cjs/ui/QuoteMessage.js +14 -8
- package/cjs/ui/QuoteMessage.js.map +1 -1
- package/cjs/ui/QuoteMessageInput.js +12 -11
- package/cjs/ui/QuoteMessageInput.js.map +1 -1
- package/cjs/ui/ReactionBadge.js +3 -3
- package/cjs/ui/ReactionButton.js +1 -1
- package/cjs/ui/SortByRow.js +2 -2
- package/cjs/ui/TextButton.js +2 -2
- package/cjs/ui/TextMessageItemBody.js +11 -11
- package/cjs/ui/ThreadReplies.js +6 -6
- package/cjs/ui/ThumbnailMessageItemBody.js +2 -2
- package/cjs/ui/Tooltip.js +3 -3
- package/cjs/ui/TooltipWrapper.js +1 -1
- package/cjs/ui/UnknownMessageItemBody.js +6 -6
- package/cjs/ui/UserListItem.js +11 -11
- package/cjs/ui/UserProfile.js +10 -10
- package/cjs/ui/VoiceMessageItemBody.js +119 -0
- package/cjs/ui/VoiceMessageItemBody.js.map +1 -0
- package/cjs/ui/VoiceMessgeInput.js +23 -0
- package/cjs/ui/VoiceMessgeInput.js.map +1 -0
- package/cjs/ui/Word.js +11 -11
- package/cjs/{useLongPress-ff6353a1.js → useLongPress-62a89444.js} +3 -3
- package/cjs/{useLongPress-ff6353a1.js.map → useLongPress-62a89444.js.map} +1 -1
- package/cjs/useSendbirdStateContext.js +1 -1
- package/cjs/utils/message/isVoiceMessage.js +10 -0
- package/cjs/utils/message/isVoiceMessage.js.map +1 -0
- package/cjs/{utils-aa1597cc.js → utils-178ccede.js} +1 -1
- package/cjs/{utils-aa1597cc.js.map → utils-178ccede.js.map} +1 -1
- package/cjs/{utils-edb40a10.js → utils-41fef560.js} +2 -2
- package/cjs/{utils-edb40a10.js.map → utils-41fef560.js.map} +1 -1
- package/cjs/{utils-c948ddfe.js → utils-7bec6eaa.js} +1 -1
- package/cjs/{utils-c948ddfe.js.map → utils-7bec6eaa.js.map} +1 -1
- package/cjs/{utils-72ab488f.js → utils-b691a058.js} +1 -1
- package/cjs/{utils-72ab488f.js.map → utils-b691a058.js.map} +1 -1
- package/cjs/{uuid-0b5f4e5e.js → uuid-42040a5c.js} +1 -1
- package/cjs/{uuid-0b5f4e5e.js.map → uuid-42040a5c.js.map} +1 -1
- package/cjs/withSendbird.js +1 -1
- package/{color-1b42e49d.js → color-f2370c85.js} +1 -1
- package/{color-1b42e49d.js.map → color-f2370c85.js.map} +1 -1
- package/{compareIds-df760ae2.js → compareIds-a4557492.js} +1 -1
- package/{compareIds-df760ae2.js.map → compareIds-a4557492.js.map} +1 -1
- package/{const-c269fd32.js → const-593595f5.js} +1 -1
- package/{const-c269fd32.js.map → const-593595f5.js.map} +1 -1
- package/{const-11ae0dd9.js → const-ce447fcf.js} +1 -1
- package/{const-11ae0dd9.js.map → const-ce447fcf.js.map} +1 -1
- package/consts-d2d25dac.js +23 -0
- package/consts-d2d25dac.js.map +1 -0
- package/{context-2c35a852.js → context-95839b09.js} +2 -2
- package/{context-2c35a852.js.map → context-95839b09.js.map} +1 -1
- package/dist/index.css +413 -16
- package/dist/index.css.map +1 -1
- package/{index-6a8be188.js → index-2aaa784a.js} +7 -7
- package/{index-6a8be188.js.map → index-2aaa784a.js.map} +1 -1
- package/{index-e2994193.js → index-4a977e7d.js} +2 -2
- package/{index-e2994193.js.map → index-4a977e7d.js.map} +1 -1
- package/{index-6491c190.js → index-4b51e7af.js} +5 -5
- package/{index-6491c190.js.map → index-4b51e7af.js.map} +1 -1
- package/{index-30726ee1.js → index-4c6a2064.js} +2 -2
- package/{index-30726ee1.js.map → index-4c6a2064.js.map} +1 -1
- package/index-60d3992b.js +271 -0
- package/index-60d3992b.js.map +1 -0
- package/{index-8c38f9d0.js → index-620331eb.js} +2 -2
- package/{index-8c38f9d0.js.map → index-620331eb.js.map} +1 -1
- package/index-7b5efb26.js +168 -0
- package/index-7b5efb26.js.map +1 -0
- package/{index-a53d78b6.js → index-999fdb64.js} +1 -1
- package/{index-a53d78b6.js.map → index-999fdb64.js.map} +1 -1
- package/{index-1f0b91f3.js → index-9c2d0ccd.js} +2 -2
- package/{index-1f0b91f3.js.map → index-9c2d0ccd.js.map} +1 -1
- package/{index-fd5a03a3.js → index-b8e990b4.js} +1 -1
- package/{index-fd5a03a3.js.map → index-b8e990b4.js.map} +1 -1
- package/{index-425e5f17.js → index-bbab31f0.js} +48 -4
- package/index-bbab31f0.js.map +1 -0
- package/{index-aa4edbe2.js → index-daccde5e.js} +8 -8
- package/index-daccde5e.js.map +1 -0
- package/{index-6d541758.js → index-ed1f765b.js} +3 -3
- package/{index-6d541758.js.map → index-ed1f765b.js.map} +1 -1
- package/{index-aecdd02c.js → index-eefaf935.js} +4 -4
- package/{index-aecdd02c.js.map → index-eefaf935.js.map} +1 -1
- package/index.d.ts +16 -1
- package/index.js +51 -39
- package/index.js.map +1 -1
- package/lame.all.js +14492 -0
- package/lame.all.js.map +1 -0
- package/package.json +1 -1
- package/sendbirdSelectors.js +2 -2
- package/{stringSet-c2443946.js → stringSet-f9763488.js} +5 -1
- package/stringSet-f9763488.js.map +1 -0
- package/{topics-0ba43ee8.js → topics-1ec669f0.js} +1 -1
- package/{topics-0ba43ee8.js.map → topics-1ec669f0.js.map} +1 -1
- package/{tslib.es6-13412863.js → tslib.es6-fc4a2658.js} +1 -1
- package/{tslib.es6-13412863.js.map → tslib.es6-fc4a2658.js.map} +1 -1
- package/types-e86f9fca.js +9 -0
- package/types-e86f9fca.js.map +1 -0
- package/ui/Accordion.js +3 -3
- package/ui/AccordionGroup.js +2 -2
- package/ui/AdminMessage.js +3 -3
- package/ui/Avatar.js +2 -2
- package/ui/Badge.js +5 -5
- package/ui/BottomSheet.js +1 -1
- package/ui/Button.js +3 -3
- package/ui/ChannelAvatar.js +3 -3
- package/ui/ConnectionStatus.js +4 -4
- package/ui/ContextMenu.js +5 -5
- package/ui/DateSeparator.js +4 -4
- package/ui/EmojiReactions.js +7 -7
- package/ui/FileMessageItemBody.js +6 -6
- package/ui/FileViewer.js +8 -8
- package/ui/Icon.js +341 -299
- package/ui/Icon.js.map +1 -1
- package/ui/IconButton.js +1 -1
- package/ui/ImageRenderer.js +1 -1
- package/ui/Input.js +2 -2
- package/ui/Label.js +2 -2
- package/ui/LinkLabel.js +2 -2
- package/ui/Loader.js +1 -1
- package/ui/MentionLabel.js +11 -11
- package/ui/MessageContent.js +35 -20
- package/ui/MessageContent.js.map +1 -1
- package/ui/MessageInput.js +35 -16
- package/ui/MessageInput.js.map +1 -1
- package/ui/MessageItemMenu.js +9 -8
- package/ui/MessageItemMenu.js.map +1 -1
- package/ui/MessageItemReactionMenu.js +5 -5
- package/ui/MessageSearchFileItem.js +17 -14
- package/ui/MessageSearchFileItem.js.map +1 -1
- package/ui/MessageSearchItem.js +9 -9
- package/ui/MessageStatus.js +10 -10
- package/ui/Modal.js +7 -7
- package/ui/OGMessageItemBody.js +37 -27
- package/ui/OGMessageItemBody.js.map +1 -1
- package/ui/OpenChannelAdminMessage.js +3 -3
- package/ui/OpenChannelAvatar.js +6 -6
- package/ui/OpenchannelConversationHeader.js +6 -6
- package/ui/OpenchannelFileMessage.js +16 -16
- package/ui/OpenchannelOGMessage.js +16 -16
- package/ui/OpenchannelThumbnailMessage.js +15 -15
- package/ui/OpenchannelUserMessage.js +16 -16
- package/ui/PlaceHolder.js +6 -6
- package/ui/PlaybackTime.js +27 -0
- package/ui/PlaybackTime.js.map +1 -0
- package/ui/ProgressBar.js +31 -0
- package/ui/ProgressBar.js.map +1 -0
- package/ui/QuoteMessage.js +14 -8
- package/ui/QuoteMessage.js.map +1 -1
- package/ui/QuoteMessageInput.js +12 -11
- package/ui/QuoteMessageInput.js.map +1 -1
- package/ui/ReactionBadge.js +3 -3
- package/ui/ReactionButton.js +1 -1
- package/ui/SortByRow.js +2 -2
- package/ui/TextButton.js +2 -2
- package/ui/TextMessageItemBody.js +11 -11
- package/ui/ThreadReplies.js +6 -6
- package/ui/ThumbnailMessageItemBody.js +2 -2
- package/ui/Tooltip.js +3 -3
- package/ui/TooltipWrapper.js +1 -1
- package/ui/UnknownMessageItemBody.js +6 -6
- package/ui/UserListItem.js +11 -11
- package/ui/UserProfile.js +10 -10
- package/ui/VoiceMessageItemBody.js +110 -0
- package/ui/VoiceMessageItemBody.js.map +1 -0
- package/ui/VoiceMessgeInput.js +15 -0
- package/ui/VoiceMessgeInput.js.map +1 -0
- package/ui/Word.js +11 -11
- package/{useLongPress-fbe83e54.js → useLongPress-6fc8312a.js} +3 -3
- package/{useLongPress-fbe83e54.js.map → useLongPress-6fc8312a.js.map} +1 -1
- package/useSendbirdStateContext.js +1 -1
- package/utils/message/isVoiceMessage.js +7 -0
- package/utils/message/isVoiceMessage.js.map +1 -0
- package/{utils-87d19647.js → utils-2570c397.js} +1 -1
- package/{utils-87d19647.js.map → utils-2570c397.js.map} +1 -1
- package/{utils-dd13f89e.js → utils-6c7dd397.js} +1 -1
- package/{utils-dd13f89e.js.map → utils-6c7dd397.js.map} +1 -1
- package/{utils-9c95a786.js → utils-8c242c8c.js} +2 -2
- package/{utils-9c95a786.js.map → utils-8c242c8c.js.map} +1 -1
- package/{utils-87dce5dd.js → utils-c1d219fa.js} +1 -1
- package/{utils-87dce5dd.js.map → utils-c1d219fa.js.map} +1 -1
- package/{uuid-7a5e68ed.js → uuid-6ca64623.js} +1 -1
- package/{uuid-7a5e68ed.js.map → uuid-6ca64623.js.map} +1 -1
- package/withSendbird.js +1 -1
- package/ChannelProvider-1e540c0e.js.map +0 -1
- package/MemberList-6483a7db.js.map +0 -1
- package/ThreadProvider-a1413f01.js.map +0 -1
- package/_rollupPluginBabelHelpers-b45d3824.js.map +0 -1
- package/cjs/ChannelProvider-3fbf7c5e.js.map +0 -1
- package/cjs/MemberList-4a0910dd.js.map +0 -1
- package/cjs/ThreadProvider-71441c16.js.map +0 -1
- package/cjs/_rollupPluginBabelHelpers-25763ef8.js.map +0 -1
- package/cjs/index-0e76934f.js.map +0 -1
- package/cjs/index-bfe8bdde.js.map +0 -1
- package/cjs/stringSet-87e51d08.js.map +0 -1
- package/index-425e5f17.js.map +0 -1
- package/index-aa4edbe2.js.map +0 -1
- package/stringSet-c2443946.js.map +0 -1
package/lame.all.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lame.all.js","sources":["../src/_externals/lamejs/js/common.js","../src/_externals/lamejs/js/NewMDCT.js","../src/_externals/lamejs/js/III_psy_xmin.js","../src/_externals/lamejs/js/III_psy_ratio.js","../src/_externals/lamejs/js/MPEGMode.js","../src/_externals/lamejs/js/Encoder.js","../src/_externals/lamejs/js/FFT.js","../src/_externals/lamejs/js/PsyModel.js","../src/_externals/lamejs/js/LameGlobalFlags.js","../src/_externals/lamejs/js/L3Side.js","../src/_externals/lamejs/js/GrInfo.js","../src/_externals/lamejs/js/IIISideInfo.js","../src/_externals/lamejs/js/ScaleFac.js","../src/_externals/lamejs/js/NsPsy.js","../src/_externals/lamejs/js/VBRSeekInfo.js","../src/_externals/lamejs/js/LameInternalFlags.js","../src/_externals/lamejs/js/ATH.js","../src/_externals/lamejs/js/GainAnalysis.js","../src/_externals/lamejs/js/ReplayGain.js","../src/_externals/lamejs/js/MeanBits.js","../src/_externals/lamejs/js/CBRNewIterationLoop.js","../src/_externals/lamejs/js/Tables.js","../src/_externals/lamejs/js/QuantizePVT.js","../src/_externals/lamejs/js/Takehiro.js","../src/_externals/lamejs/js/BitStream.js","../src/_externals/lamejs/js/Lame.js","../src/_externals/lamejs/js/Presets.js","../src/_externals/lamejs/js/VBRQuantize.js","../src/_externals/lamejs/js/CalcNoiseResult.js","../src/_externals/lamejs/js/CalcNoiseData.js","../src/_externals/lamejs/js/Quantize.js","../src/_externals/lamejs/js/Reservoir.js","../src/_externals/lamejs/js/Version.js","../src/_externals/lamejs/js/VBRTag.js","../src/_externals/lamejs/js/index.js"],"sourcesContent":["function new_byte(count) {\n return new Int8Array(count);\n}\n\nfunction new_short(count) {\n return new Int16Array(count);\n}\n\nfunction new_int(count) {\n return new Int32Array(count);\n}\n\nfunction new_float(count) {\n return new Float32Array(count);\n}\n\nfunction new_double(count) {\n return new Float64Array(count);\n}\n\nfunction new_float_n(args) {\n if (args.length == 1) {\n return new_float(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_float_n(args));\n }\n return A;\n}\nfunction new_int_n(args) {\n if (args.length == 1) {\n return new_int(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_int_n(args));\n }\n return A;\n}\n\nfunction new_short_n(args) {\n if (args.length == 1) {\n return new_short(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_short_n(args));\n }\n return A;\n}\n\nfunction new_array_n(args) {\n if (args.length == 1) {\n return new Array(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_array_n(args));\n }\n return A;\n}\n\n\nvar Arrays = {};\n\nArrays.fill = function (a, fromIndex, toIndex, val) {\n if (arguments.length == 2) {\n for (var i = 0; i < a.length; i++) {\n a[i] = arguments[1];\n }\n } else {\n for (var i = fromIndex; i < toIndex; i++) {\n a[i] = val;\n }\n }\n};\n\nvar System = {};\n\nSystem.arraycopy = function (src, srcPos, dest, destPos, length) {\n var srcEnd = srcPos + length;\n while (srcPos < srcEnd)\n dest[destPos++] = src[srcPos++];\n};\n\nSystem.out = {};\nSystem.out.println = function (message) {\n console.log(message);\n}\n\nSystem.out.printf = function () {\n console.log.apply(console, arguments);\n}\n\n\nvar Util = {};\nUtil.SQRT2 = 1.41421356237309504880;\nUtil.FAST_LOG10 = function (x) {\n return Math.log10(x);\n};\n\nUtil.FAST_LOG10_X = function (x, y) {\n return Math.log10(x) * y;\n};\n\nfunction ShortBlock(ordinal) {\n this.ordinal = ordinal;\n}\n/**\n * LAME may use them, even different block types for L/R.\n */\nShortBlock.short_block_allowed = new ShortBlock(0);\n/**\n * LAME may use them, but always same block types in L/R.\n */\nShortBlock.short_block_coupled = new ShortBlock(1);\n/**\n * LAME will not use short blocks, long blocks only.\n */\nShortBlock.short_block_dispensed = new ShortBlock(2);\n/**\n * LAME will not use long blocks, short blocks only.\n */\nShortBlock.short_block_forced = new ShortBlock(3);\n\nvar Float = {};\nFloat.MAX_VALUE = 3.4028235e+38;\n\nfunction VbrMode(ordinal) {\n this.ordinal = ordinal;\n}\nVbrMode.vbr_off = new VbrMode(0);\nVbrMode.vbr_mt = new VbrMode(1);\nVbrMode.vbr_rh = new VbrMode(2);\nVbrMode.vbr_abr = new VbrMode(3);\nVbrMode.vbr_mtrh = new VbrMode(4);\nVbrMode.vbr_default = VbrMode.vbr_mtrh;\n\nvar assert = function (x) {\n //console.assert(x);\n};\n\nmodule.exports = {\n \"System\": System,\n \"VbrMode\": VbrMode,\n \"Float\": Float,\n \"ShortBlock\": ShortBlock,\n \"Util\": Util,\n \"Arrays\": Arrays,\n \"new_array_n\": new_array_n,\n \"new_byte\": new_byte,\n \"new_double\": new_double,\n \"new_float\": new_float,\n \"new_float_n\": new_float_n,\n \"new_int\": new_int,\n \"new_int_n\": new_int_n,\n \"new_short\": new_short,\n \"new_short_n\": new_short_n,\n \"assert\": assert\n};\n","/*\n * MP3 window subband -> subband filtering -> mdct routine\n *\n * Copyright (c) 1999-2000 Takehiro Tominaga\n *\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Library General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n/*\n * Special Thanks to Patrick De Smet for your advices.\n */\n\n/* $Id: NewMDCT.java,v 1.11 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\n\nfunction NewMDCT() {\n\n\tvar enwindow = [\n\t\t\t-4.77e-07 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.03951e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.53674e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.841473e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.5758972e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.401756e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.83715e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.740951125354959 / 2.384e-06, /* 15 */\n\t\t\t1.2398e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.91212e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.283096e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.6994476e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.8756866e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.630711e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.47478e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.4782e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.063471690191471e-01, 1.960342806591213e-01,\n\n\t\t\t-4.77e-07 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.05858e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.30786e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.521515e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.5694122e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.643036e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.91821e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.6321e-05 * 0.773010453362737 / 2.384e-06, /* 14 */\n\t\t\t1.1444e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.65462e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.110004e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.6112804e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.9634247e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.803326e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.77042e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.6689e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t8.206787908286602e-01, 3.901806440322567e-01,\n\n\t\t\t-4.77e-07 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.07288e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.02653e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t2.174854e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.5586357e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.858566e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.95159e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.3460e-05 * 0.803207531480645 / 2.384e-06, /* 13 */\n\t\t\t1.0014e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.40190e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.937389e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.5233517e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.0506859e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.974033e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t-3.07560e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t-1.8120e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t7.416505462720353e-01, 5.805693545089249e-01,\n\n\t\t\t-4.77e-07 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t8.68797e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.800537e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t3.5435200e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t4.049301e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.94205e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.0599e-05 * 0.831469612302545 / 2.384e-06, /* 12 */\n\t\t\t9.060e-06 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.16348e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.766682e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.4358521e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-2.1372318e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.14188e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.39031e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t-1.9550e-05 * 0.831469612302545 / 2.384e-06,\n\t\t\t6.681786379192989e-01, 7.653668647301797e-01,\n\n\t\t\t-4.77e-07 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.29220e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.399517e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t3.5242081e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t4.215240e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.89437e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.7261e-05 * 0.857728610000272 / 2.384e-06, /* 11 */\n\t\t\t8.106e-06 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.3937e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.597881e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.3489246e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.2228718e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.306866e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.71456e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.1458e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t5.993769336819237e-01, 9.427934736519954e-01,\n\n\t\t\t-4.77e-07 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.8392e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.71317e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t3.5007000e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t4.357815e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.80854e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t8.3923e-05 * 0.881921264348355 / 2.384e-06, /* 10 */\n\t\t\t7.629e-06 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.2956e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.432419e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.2627602e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3074150e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-3.467083e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t-4.04358e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3365e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t5.345111359507916e-01, 1.111140466039205e+00,\n\n\t\t\t-9.54e-07 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t7.31945e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.15938e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t3.4730434e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.477024e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t9.68933e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t8.0585e-05 * 0.903989293123443 / 2.384e-06, /* 9 */\n\t\t\t6.676e-06 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.269817e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.1775017e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.3907185e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-3.622532e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t-4.38213e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.5272e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.729647758913199e-01, 1.268786568327291e+00,\n\n\t\t\t-9.54e-07 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.06812e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.74248e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.3379e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4412861e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.573822e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t9.54151e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t7.6771e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.199e-06 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4332e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.111031e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.0933399e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.4725437e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-3.771782e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-4.72546e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.7657e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.1421356237309504879e-01, /* tan(PI/8) */\n\t\t\t1.414213562373095e+00,\n\n\t\t\t-9.54e-07 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.05381e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t6.10352e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-4.75883e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.4055710e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t4.649162e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.35555e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t7.3433e-05 * 0.941544065183021 / 2.384e-06, /* 7 */\n\t\t\t5.245e-06 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.7166e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.56535e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.0103703e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-2.5527000e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.914356e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t-5.07355e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.0041e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.578057213145241e-01, 1.546020906725474e+00,\n\n\t\t\t-9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t1.02520e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t5.39303e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-1.011848e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.3659935e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t4.703045e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.15051e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t7.0095e-05 * 0.956940335732209 / 2.384e-06, /* 6 */\n\t\t\t4.768e-06 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t8.06808e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.287834e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-2.6310921e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t-4.048824e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-5.42164e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-3.2425e-05 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.033466836073424e-01, 1.662939224605090e+00,\n\n\t\t\t-1.431e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.62532e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.573563e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t3.3225536e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.737377e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.91685e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.6280e-05 * 0.970031253194544 / 2.384e-06, /* 5 */\n\t\t\t4.292e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.3828e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.61850e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.487225e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-2.7073860e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t-4.174709e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-5.76973e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-3.4809e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t2.504869601913055e-01, 1.763842528696710e+00,\n\n\t\t\t-1.431e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t9.5367e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.78609e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.161503e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.2754898e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t4.752159e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t8.66413e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t6.2943e-05 * 0.98078528040323 / 2.384e-06, /* 4 */\n\t\t\t3.815e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.718e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t5.22137e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t7.703304e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.7815342e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t-4.290581e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-6.11782e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-3.7670e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t1.989123673796580e-01, 1.847759065022573e+00,\n\n\t\t\t-1.907e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t9.0122e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t2.88486e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.774239e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.2248020e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t4.748821e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t8.38757e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t5.9605e-05 * 0.989176509964781 / 2.384e-06, /* 3 */\n\t\t\t3.338e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t-3.9577e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.88145e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t6.937027e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.8532982e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.395962e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-6.46591e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.0531e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t1.483359875383474e-01, 1.913880671464418e+00,\n\n\t\t\t-1.907e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.4400e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t1.91689e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-3.411293e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.1706810e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t4.728317e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.09669e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t5.579e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.338e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t-5.0545e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t2.59876e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t6.189346e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-2.9224873e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.489899e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-6.80923e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.3392e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t9.849140335716425e-02, 1.961570560806461e+00,\n\n\t\t\t-2.384e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.7724e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t8.8215e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.072189e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t3.1132698e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.691124e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.79152e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t2.861e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t-6.0558e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t1.37329e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.462170e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-2.9890060e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.570484e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-7.14302e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.6253e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.912684976946725e-02, 1.990369453344394e+00,\n\n\t\t\t3.5780907e-02 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.7876148e-02 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t3.134727e-03 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.457142e-03 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t9.71317e-04 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.18868e-04 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.01566e-04 * Util.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.3828e-05 * Util.SQRT2 * 0.5 / 2.384e-06,\n\n\t\t\t3.0526638e-02 / 2.384e-06, 4.638195e-03 / 2.384e-06,\n\t\t\t7.47204e-04 / 2.384e-06, 4.9591e-05 / 2.384e-06,\n\t\t\t4.756451e-03 / 2.384e-06, 2.1458e-05 / 2.384e-06,\n\t\t\t-6.9618e-05 / 2.384e-06, /* 2.384e-06/2.384e-06 */\n\t];\n\n\tvar NS = 12;\n\tvar NL = 36;\n\n\tvar win = [\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049690e-13,\n\t 6.423305872147839e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943412e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758252e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558783e-12,\n\t 8.371015190102974e-13,\n\t 2.599706096327376e-13,\n\n\t -5.456116108943412e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758252e-12,\n\t -2.858043359288076e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558783e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347923e-13,\n\t -6.423305872147843e-13,\n\t -9.400849094049696e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049694e-13,\n\t -6.423305872147840e-13,\n\t -2.382191739347918e-13,\n\t ],\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049688e-13,\n\t 6.423305872147841e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943413e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758253e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558782e-12,\n\t 8.371015190102975e-13,\n\t 2.599706096327376e-13,\n\n\t -5.461314069809755e-12,\n\t -4.921085770524055e-12,\n\t -4.343405037091838e-12,\n\t -3.732668368707687e-12,\n\t -3.093523840190885e-12,\n\t -2.430835727329465e-12,\n\t -1.734679010007751e-12,\n\t -9.748253656609281e-13,\n\t -2.797435120168326e-13,\n\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t -2.283748241799531e-13,\n\t -4.037858874020686e-13,\n\t -2.146547464825323e-13,\n\t ],\n\t [\n\t 1.316524975873958e-01, /* win[SHORT_TYPE] */\n\t 4.142135623730950e-01,\n\t 7.673269879789602e-01,\n\n\t 1.091308501069271e+00, /* tantab_l */\n\t 1.303225372841206e+00,\n\t 1.569685577117490e+00,\n\t 1.920982126971166e+00,\n\t 2.414213562373094e+00,\n\t 3.171594802363212e+00,\n\t 4.510708503662055e+00,\n\t 7.595754112725146e+00,\n\t 2.290376554843115e+01,\n\n\t 0.98480775301220802032, /* cx */\n\t 0.64278760968653936292,\n\t 0.34202014332566882393,\n\t 0.93969262078590842791,\n\t -0.17364817766693030343,\n\t -0.76604444311897790243,\n\t 0.86602540378443870761,\n\t 0.500000000000000e+00,\n\n\t -5.144957554275265e-01, /* ca */\n\t -4.717319685649723e-01,\n\t -3.133774542039019e-01,\n\t -1.819131996109812e-01,\n\t -9.457419252642064e-02,\n\t -4.096558288530405e-02,\n\t -1.419856857247115e-02,\n\t -3.699974673760037e-03,\n\n\t 8.574929257125442e-01, /* cs */\n\t 8.817419973177052e-01,\n\t 9.496286491027329e-01,\n\t 9.833145924917901e-01,\n\t 9.955178160675857e-01,\n\t 9.991605581781475e-01,\n\t 9.998991952444470e-01,\n\t 9.999931550702802e-01,\n\t ],\n\t [\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 2.283748241799531e-13,\n\t 4.037858874020686e-13,\n\t 2.146547464825323e-13,\n\n\t 5.461314069809755e-12,\n\t 4.921085770524055e-12,\n\t 4.343405037091838e-12,\n\t 3.732668368707687e-12,\n\t 3.093523840190885e-12,\n\t 2.430835727329466e-12,\n\t 1.734679010007751e-12,\n\t 9.748253656609281e-13,\n\t 2.797435120168326e-13,\n\n\t -5.456116108943413e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758253e-12,\n\t -2.858043359288075e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558782e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347913e-13,\n\t -6.423305872147834e-13,\n\t -9.400849094049688e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049688e-13,\n\t -6.423305872147841e-13,\n\t -2.382191739347918e-13,\n\t ]\n\t];\n\n\tvar tantab_l = win[Encoder.SHORT_TYPE];\n\tvar cx = win[Encoder.SHORT_TYPE];\n\tvar ca = win[Encoder.SHORT_TYPE];\n\tvar cs = win[Encoder.SHORT_TYPE];\n\n\t/**\n\t * new IDCT routine written by Takehiro TOMINAGA\n\t *\n\t * PURPOSE: Overlapping window on PCM samples<BR>\n\t *\n\t * SEMANTICS:<BR>\n\t * 32 16-bit pcm samples are scaled to fractional 2's complement and\n\t * concatenated to the end of the window buffer #x#. The updated window\n\t * buffer #x# is then windowed by the analysis window #c# to produce the\n\t * windowed sample #z#\n\t */\n\tvar order = [\n\t 0, 1, 16, 17, 8, 9, 24, 25, 4, 5, 20, 21, 12, 13, 28, 29,\n\t 2, 3, 18, 19, 10, 11, 26, 27, 6, 7, 22, 23, 14, 15, 30, 31\n\t];\n\n\t/**\n\t * returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32\n\t */\n\tfunction window_subband(x1, x1Pos, a) {\n\t\tvar wp = 10;\n\n\t\tvar x2 = x1Pos + 238 - 14 - 286;\n\n\t\tfor (var i = -15; i < 0; i++) {\n\t\t\tvar w, s, t;\n\n\t\t\tw = enwindow[wp + -10];\n\t\t\ts = x1[x2 + -224] * w;\n\t\t\tt = x1[x1Pos + 224] * w;\n\t\t\tw = enwindow[wp + -9];\n\t\t\ts += x1[x2 + -160] * w;\n\t\t\tt += x1[x1Pos + 160] * w;\n\t\t\tw = enwindow[wp + -8];\n\t\t\ts += x1[x2 + -96] * w;\n\t\t\tt += x1[x1Pos + 96] * w;\n\t\t\tw = enwindow[wp + -7];\n\t\t\ts += x1[x2 + -32] * w;\n\t\t\tt += x1[x1Pos + 32] * w;\n\t\t\tw = enwindow[wp + -6];\n\t\t\ts += x1[x2 + 32] * w;\n\t\t\tt += x1[x1Pos + -32] * w;\n\t\t\tw = enwindow[wp + -5];\n\t\t\ts += x1[x2 + 96] * w;\n\t\t\tt += x1[x1Pos + -96] * w;\n\t\t\tw = enwindow[wp + -4];\n\t\t\ts += x1[x2 + 160] * w;\n\t\t\tt += x1[x1Pos + -160] * w;\n\t\t\tw = enwindow[wp + -3];\n\t\t\ts += x1[x2 + 224] * w;\n\t\t\tt += x1[x1Pos + -224] * w;\n\n\t\t\tw = enwindow[wp + -2];\n\t\t\ts += x1[x1Pos + -256] * w;\n\t\t\tt -= x1[x2 + 256] * w;\n\t\t\tw = enwindow[wp + -1];\n\t\t\ts += x1[x1Pos + -192] * w;\n\t\t\tt -= x1[x2 + 192] * w;\n\t\t\tw = enwindow[wp + 0];\n\t\t\ts += x1[x1Pos + -128] * w;\n\t\t\tt -= x1[x2 + 128] * w;\n\t\t\tw = enwindow[wp + 1];\n\t\t\ts += x1[x1Pos + -64] * w;\n\t\t\tt -= x1[x2 + 64] * w;\n\t\t\tw = enwindow[wp + 2];\n\t\t\ts += x1[x1Pos + 0] * w;\n\t\t\tt -= x1[x2 + 0] * w;\n\t\t\tw = enwindow[wp + 3];\n\t\t\ts += x1[x1Pos + 64] * w;\n\t\t\tt -= x1[x2 + -64] * w;\n\t\t\tw = enwindow[wp + 4];\n\t\t\ts += x1[x1Pos + 128] * w;\n\t\t\tt -= x1[x2 + -128] * w;\n\t\t\tw = enwindow[wp + 5];\n\t\t\ts += x1[x1Pos + 192] * w;\n\t\t\tt -= x1[x2 + -192] * w;\n\n\t\t\t/*\n\t\t\t * this multiplyer could be removed, but it needs more 256 FLOAT\n\t\t\t * data. thinking about the data cache performance, I think we\n\t\t\t * should not use such a huge table. tt 2000/Oct/25\n\t\t\t */\n\t\t\ts *= enwindow[wp + 6];\n\t\t\tw = t - s;\n\t\t\ta[30 + i * 2] = t + s;\n\t\t\ta[31 + i * 2] = enwindow[wp + 7] * w;\n\t\t\twp += 18;\n\t\t\tx1Pos--;\n\t\t\tx2++;\n\t\t}\n\t\t{\n\t\t\tvar s, t, u, v;\n\t\t\tt = x1[x1Pos + -16] * enwindow[wp + -10];\n\t\t\ts = x1[x1Pos + -32] * enwindow[wp + -2];\n\t\t\tt += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9];\n\t\t\ts += x1[x1Pos + -96] * enwindow[wp + -1];\n\t\t\tt += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8];\n\t\t\ts += x1[x1Pos + -160] * enwindow[wp + 0];\n\t\t\tt += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7];\n\t\t\ts += x1[x1Pos + -224] * enwindow[wp + 1];\n\t\t\tt += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6];\n\t\t\ts -= x1[x1Pos + 32] * enwindow[wp + 2];\n\t\t\tt += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5];\n\t\t\ts -= x1[x1Pos + 96] * enwindow[wp + 3];\n\t\t\tt += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4];\n\t\t\ts -= x1[x1Pos + 160] * enwindow[wp + 4];\n\t\t\tt += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3];\n\t\t\ts -= x1[x1Pos + 224];\n\n\t\t\tu = s - t;\n\t\t\tv = s + t;\n\n\t\t\tt = a[14];\n\t\t\ts = a[15] - t;\n\n\t\t\ta[31] = v + t; /* A0 */\n\t\t\ta[30] = u + s; /* A1 */\n\t\t\ta[15] = u - s; /* A2 */\n\t\t\ta[14] = v - t; /* A3 */\n\t\t}\n\t\t{\n\t\t\tvar xr;\n\t\t\txr = a[28] - a[0];\n\t\t\ta[0] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -2 * 18 + 7];\n\t\t\txr = a[29] - a[1];\n\t\t\ta[1] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -2 * 18 + 7];\n\n\t\t\txr = a[26] - a[2];\n\t\t\ta[2] += a[26];\n\t\t\ta[26] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[27] - a[3];\n\t\t\ta[3] += a[27];\n\t\t\ta[27] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = a[24] - a[4];\n\t\t\ta[4] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -6 * 18 + 7];\n\t\t\txr = a[25] - a[5];\n\t\t\ta[5] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -6 * 18 + 7];\n\n\t\t\txr = a[22] - a[6];\n\t\t\ta[6] += a[22];\n\t\t\ta[22] = xr * Util.SQRT2;\n\t\t\txr = a[23] - a[7];\n\t\t\ta[7] += a[23];\n\t\t\ta[23] = xr * Util.SQRT2 - a[7];\n\t\t\ta[7] -= a[6];\n\t\t\ta[22] -= a[7];\n\t\t\ta[23] -= a[22];\n\n\t\t\txr = a[6];\n\t\t\ta[6] = a[31] - xr;\n\t\t\ta[31] = a[31] + xr;\n\t\t\txr = a[7];\n\t\t\ta[7] = a[30] - xr;\n\t\t\ta[30] = a[30] + xr;\n\t\t\txr = a[22];\n\t\t\ta[22] = a[15] - xr;\n\t\t\ta[15] = a[15] + xr;\n\t\t\txr = a[23];\n\t\t\ta[23] = a[14] - xr;\n\t\t\ta[14] = a[14] + xr;\n\n\t\t\txr = a[20] - a[8];\n\t\t\ta[8] += a[20];\n\t\t\ta[20] = xr * enwindow[wp + -10 * 18 + 7];\n\t\t\txr = a[21] - a[9];\n\t\t\ta[9] += a[21];\n\t\t\ta[21] = xr * enwindow[wp + -10 * 18 + 7];\n\n\t\t\txr = a[18] - a[10];\n\t\t\ta[10] += a[18];\n\t\t\ta[18] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[19] - a[11];\n\t\t\ta[11] += a[19];\n\t\t\ta[19] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[16] - a[12];\n\t\t\ta[12] += a[16];\n\t\t\ta[16] = xr * enwindow[wp + -14 * 18 + 7];\n\t\t\txr = a[17] - a[13];\n\t\t\ta[13] += a[17];\n\t\t\ta[17] = xr * enwindow[wp + -14 * 18 + 7];\n\n\t\t\txr = -a[20] + a[24];\n\t\t\ta[20] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = -a[21] + a[25];\n\t\t\ta[21] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[4] - a[8];\n\t\t\ta[4] += a[8];\n\t\t\ta[8] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[5] - a[9];\n\t\t\ta[5] += a[9];\n\t\t\ta[9] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[0] - a[12];\n\t\t\ta[0] += a[12];\n\t\t\ta[12] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[1] - a[13];\n\t\t\ta[1] += a[13];\n\t\t\ta[13] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[16] - a[28];\n\t\t\ta[16] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = -a[17] + a[29];\n\t\t\ta[17] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = Util.SQRT2 * (a[2] - a[10]);\n\t\t\ta[2] += a[10];\n\t\t\ta[10] = xr;\n\t\t\txr = Util.SQRT2 * (a[3] - a[11]);\n\t\t\ta[3] += a[11];\n\t\t\ta[11] = xr;\n\t\t\txr = Util.SQRT2 * (-a[18] + a[26]);\n\t\t\ta[18] += a[26];\n\t\t\ta[26] = xr - a[18];\n\t\t\txr = Util.SQRT2 * (-a[19] + a[27]);\n\t\t\ta[19] += a[27];\n\t\t\ta[27] = xr - a[19];\n\n\t\t\txr = a[2];\n\t\t\ta[19] -= a[3];\n\t\t\ta[3] -= xr;\n\t\t\ta[2] = a[31] - xr;\n\t\t\ta[31] += xr;\n\t\t\txr = a[3];\n\t\t\ta[11] -= a[19];\n\t\t\ta[18] -= xr;\n\t\t\ta[3] = a[30] - xr;\n\t\t\ta[30] += xr;\n\t\t\txr = a[18];\n\t\t\ta[27] -= a[11];\n\t\t\ta[19] -= xr;\n\t\t\ta[18] = a[15] - xr;\n\t\t\ta[15] += xr;\n\n\t\t\txr = a[19];\n\t\t\ta[10] -= xr;\n\t\t\ta[19] = a[14] - xr;\n\t\t\ta[14] += xr;\n\t\t\txr = a[10];\n\t\t\ta[11] -= xr;\n\t\t\ta[10] = a[23] - xr;\n\t\t\ta[23] += xr;\n\t\t\txr = a[11];\n\t\t\ta[26] -= xr;\n\t\t\ta[11] = a[22] - xr;\n\t\t\ta[22] += xr;\n\t\t\txr = a[26];\n\t\t\ta[27] -= xr;\n\t\t\ta[26] = a[7] - xr;\n\t\t\ta[7] += xr;\n\n\t\t\txr = a[27];\n\t\t\ta[27] = a[6] - xr;\n\t\t\ta[6] += xr;\n\n\t\t\txr = Util.SQRT2 * (a[0] - a[4]);\n\t\t\ta[0] += a[4];\n\t\t\ta[4] = xr;\n\t\t\txr = Util.SQRT2 * (a[1] - a[5]);\n\t\t\ta[1] += a[5];\n\t\t\ta[5] = xr;\n\t\t\txr = Util.SQRT2 * (a[16] - a[20]);\n\t\t\ta[16] += a[20];\n\t\t\ta[20] = xr;\n\t\t\txr = Util.SQRT2 * (a[17] - a[21]);\n\t\t\ta[17] += a[21];\n\t\t\ta[21] = xr;\n\n\t\t\txr = -Util.SQRT2 * (a[8] - a[12]);\n\t\t\ta[8] += a[12];\n\t\t\ta[12] = xr - a[8];\n\t\t\txr = -Util.SQRT2 * (a[9] - a[13]);\n\t\t\ta[9] += a[13];\n\t\t\ta[13] = xr - a[9];\n\t\t\txr = -Util.SQRT2 * (a[25] - a[29]);\n\t\t\ta[25] += a[29];\n\t\t\ta[29] = xr - a[25];\n\t\t\txr = -Util.SQRT2 * (a[24] + a[28]);\n\t\t\ta[24] -= a[28];\n\t\t\ta[28] = xr - a[24];\n\n\t\t\txr = a[24] - a[16];\n\t\t\ta[24] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\n\t\t\txr = a[25] - a[17];\n\t\t\ta[25] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[17] - a[1];\n\t\t\ta[17] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[1] - a[0];\n\t\t\ta[1] = xr;\n\t\t\txr = a[16] - xr;\n\t\t\ta[16] = xr;\n\t\t\txr = a[17] - xr;\n\t\t\ta[17] = xr;\n\t\t\txr = a[8] - xr;\n\t\t\ta[8] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[24] - xr;\n\t\t\ta[24] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[4] - xr;\n\t\t\ta[4] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[12] - xr;\n\t\t\ta[12] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[0];\n\t\t\ta[0] += a[31];\n\t\t\ta[31] -= xr;\n\t\t\txr = a[1];\n\t\t\ta[1] += a[30];\n\t\t\ta[30] -= xr;\n\t\t\txr = a[16];\n\t\t\ta[16] += a[15];\n\t\t\ta[15] -= xr;\n\t\t\txr = a[17];\n\t\t\ta[17] += a[14];\n\t\t\ta[14] -= xr;\n\t\t\txr = a[8];\n\t\t\ta[8] += a[23];\n\t\t\ta[23] -= xr;\n\t\t\txr = a[9];\n\t\t\ta[9] += a[22];\n\t\t\ta[22] -= xr;\n\t\t\txr = a[24];\n\t\t\ta[24] += a[7];\n\t\t\ta[7] -= xr;\n\t\t\txr = a[25];\n\t\t\ta[25] += a[6];\n\t\t\ta[6] -= xr;\n\t\t\txr = a[4];\n\t\t\ta[4] += a[27];\n\t\t\ta[27] -= xr;\n\t\t\txr = a[5];\n\t\t\ta[5] += a[26];\n\t\t\ta[26] -= xr;\n\t\t\txr = a[20];\n\t\t\ta[20] += a[11];\n\t\t\ta[11] -= xr;\n\t\t\txr = a[21];\n\t\t\ta[21] += a[10];\n\t\t\ta[10] -= xr;\n\t\t\txr = a[12];\n\t\t\ta[12] += a[19];\n\t\t\ta[19] -= xr;\n\t\t\txr = a[13];\n\t\t\ta[13] += a[18];\n\t\t\ta[18] -= xr;\n\t\t\txr = a[28];\n\t\t\ta[28] += a[3];\n\t\t\ta[3] -= xr;\n\t\t\txr = a[29];\n\t\t\ta[29] += a[2];\n\t\t\ta[2] -= xr;\n\t\t}\n\t}\n\n\t/**\n\t * Function: Calculation of the MDCT In the case of long blocks (type 0,1,3)\n\t * there are 36 coefficents in the time domain and 18 in the frequency\n\t * domain.<BR>\n\t * In the case of short blocks (type 2) there are 3 transformations with\n\t * short length. This leads to 12 coefficents in the time and 6 in the\n\t * frequency domain. In this case the results are stored side by side in the\n\t * vector out[].\n\t *\n\t * New layer3\n\t */\n\tfunction mdct_short(inout, inoutPos) {\n\t\tfor (var l = 0; l < 3; l++) {\n\t\t\tvar tc0, tc1, tc2, ts0, ts1, ts2;\n\n\t\t\tts0 = inout[inoutPos + 2 * 3] * win[Encoder.SHORT_TYPE][0]\n\t\t\t\t\t- inout[inoutPos + 5 * 3];\n\t\t\ttc0 = inout[inoutPos + 0 * 3] * win[Encoder.SHORT_TYPE][2]\n\t\t\t\t\t- inout[inoutPos + 3 * 3];\n\t\t\ttc1 = ts0 + tc0;\n\t\t\ttc2 = ts0 - tc0;\n\n\t\t\tts0 = inout[inoutPos + 5 * 3] * win[Encoder.SHORT_TYPE][0]\n\t\t\t\t\t+ inout[inoutPos + 2 * 3];\n\t\t\ttc0 = inout[inoutPos + 3 * 3] * win[Encoder.SHORT_TYPE][2]\n\t\t\t\t\t+ inout[inoutPos + 0 * 3];\n\t\t\tts1 = ts0 + tc0;\n\t\t\tts2 = -ts0 + tc0;\n\n\t\t\ttc0 = (inout[inoutPos + 1 * 3] * win[Encoder.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tts0 = (inout[inoutPos + 4 * 3] * win[Encoder.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 0] = tc1 * 1.907525191737280e-11 + tc0;\n\t\t\t/*\n\t\t\t * tritab_s[ 2 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 5] = -ts1 * 1.907525191737280e-11 + ts0;\n\t\t\t/*\n\t\t\t * tritab_s[0 ]\n\t\t\t */\n\t\t\ttc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 2]\n\t\t\t */\n\t\t\tts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0;\n\t\t\tinout[inoutPos + 3 * 1] = tc2 - ts1;\n\t\t\tinout[inoutPos + 3 * 2] = tc2 + ts1;\n\n\t\t\ttc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0;\n\t\t\tts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 0]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 3] = tc1 + ts2;\n\t\t\tinout[inoutPos + 3 * 4] = tc1 - ts2;\n\n\t\t\tinoutPos++;\n\t\t}\n\t}\n\n\tfunction mdct_long(out, outPos, _in) {\n\t\tvar ct, st;\n\t\t{\n\t\t\tvar tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8;\n\t\t\t/* 1,2, 5,6, 9,10, 13,14, 17 */\n\t\t\ttc1 = _in[17] - _in[9];\n\t\t\ttc3 = _in[15] - _in[11];\n\t\t\ttc4 = _in[14] - _in[12];\n\t\t\tts5 = _in[0] + _in[8];\n\t\t\tts6 = _in[1] + _in[7];\n\t\t\tts7 = _in[2] + _in[6];\n\t\t\tts8 = _in[3] + _in[5];\n\n\t\t\tout[outPos + 17] = (ts5 + ts7 - ts8) - (ts6 - _in[4]);\n\t\t\tst = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]);\n\t\t\tct = (tc1 - tc3 - tc4) * cx[12 + 6];\n\t\t\tout[outPos + 5] = ct + st;\n\t\t\tout[outPos + 6] = ct - st;\n\n\t\t\ttc2 = (_in[16] - _in[10]) * cx[12 + 6];\n\t\t\tts6 = ts6 * cx[12 + 7] + _in[4];\n\t\t\tct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2];\n\t\t\tst = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3];\n\t\t\tout[outPos + 1] = ct + st;\n\t\t\tout[outPos + 2] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0];\n\t\t\tst = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4];\n\t\t\tout[outPos + 9] = ct + st;\n\t\t\tout[outPos + 10] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1];\n\t\t\tst = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5];\n\t\t\tout[outPos + 13] = ct + st;\n\t\t\tout[outPos + 14] = ct - st;\n\t\t}\n\t\t{\n\t\t\tvar ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8;\n\n\t\t\tts1 = _in[8] - _in[0];\n\t\t\tts3 = _in[6] - _in[2];\n\t\t\tts4 = _in[5] - _in[3];\n\t\t\ttc5 = _in[17] + _in[9];\n\t\t\ttc6 = _in[16] + _in[10];\n\t\t\ttc7 = _in[15] + _in[11];\n\t\t\ttc8 = _in[14] + _in[12];\n\n\t\t\tout[outPos + 0] = (tc5 + tc7 + tc8) + (tc6 + _in[13]);\n\t\t\tct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]);\n\t\t\tst = (ts1 - ts3 + ts4) * cx[12 + 6];\n\t\t\tout[outPos + 11] = ct + st;\n\t\t\tout[outPos + 12] = ct - st;\n\n\t\t\tts2 = (_in[7] - _in[1]) * cx[12 + 6];\n\t\t\ttc6 = _in[13] - tc6 * cx[12 + 7];\n\t\t\tct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5];\n\t\t\tst = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1];\n\t\t\tout[outPos + 3] = ct + st;\n\t\t\tout[outPos + 4] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4];\n\t\t\tst = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0];\n\t\t\tout[outPos + 7] = ct + st;\n\t\t\tout[outPos + 8] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3];\n\t\t\tst = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2];\n\t\t\tout[outPos + 15] = ct + st;\n\t\t\tout[outPos + 16] = ct - st;\n\t\t}\n\t}\n\n\tthis.mdct_sub48 = function(gfc, w0, w1) {\n\t\tvar wk = w0;\n\t\tvar wkPos = 286;\n\t\t/* thinking cache performance, ch->gr loop is better than gr->ch loop */\n\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\t\t\t\tvar band;\n\t\t\t\tvar gi = (gfc.l3_side.tt[gr][ch]);\n\t\t\t\tvar mdct_enc = gi.xr;\n\t\t\t\tvar mdct_encPos = 0;\n\t\t\t\tvar samp = gfc.sb_sample[ch][1 - gr];\n\t\t\t\tvar sampPos = 0;\n\n\t\t\t\tfor (var k = 0; k < 18 / 2; k++) {\n\t\t\t\t\twindow_subband(wk, wkPos, samp[sampPos]);\n\t\t\t\t\twindow_subband(wk, wkPos + 32, samp[sampPos + 1]);\n\t\t\t\t\tsampPos += 2;\n\t\t\t\t\twkPos += 64;\n\t\t\t\t\t/*\n\t\t\t\t\t * Compensate for inversion in the analysis filter\n\t\t\t\t\t */\n\t\t\t\t\tfor (band = 1; band < 32; band += 2) {\n\t\t\t\t\t\tsamp[sampPos - 1][band] *= -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Perform imdct of 18 previous subband samples + 18 current\n\t\t\t\t * subband samples\n\t\t\t\t */\n\t\t\t\tfor (band = 0; band < 32; band++, mdct_encPos += 18) {\n\t\t\t\t\tvar type = gi.block_type;\n\t\t\t\t\tvar band0 = gfc.sb_sample[ch][gr];\n\t\t\t\t\tvar band1 = gfc.sb_sample[ch][1 - gr];\n\t\t\t\t\tif (gi.mixed_block_flag != 0 && band < 2)\n\t\t\t\t\t\ttype = 0;\n\t\t\t\t\tif (gfc.amp_filter[band] < 1e-12) {\n\t\t\t\t\t\tArrays.fill(mdct_enc, mdct_encPos + 0,\n\t\t\t\t\t\t\t\tmdct_encPos + 18, 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (gfc.amp_filter[band] < 1.0) {\n\t\t\t\t\t\t\tfor (var k = 0; k < 18; k++)\n\t\t\t\t\t\t\t\tband1[k][order[band]] *= gfc.amp_filter[band];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type == Encoder.SHORT_TYPE) {\n\t\t\t\t\t\t\tfor (var k = -NS / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar w = win[Encoder.SHORT_TYPE][k + 3];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band0[15 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[14 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[3 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band1[2 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[9 + k][order[band]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmdct_short(mdct_enc, mdct_encPos);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar work = new_float(18);\n\t\t\t\t\t\t\tfor (var k = -NL / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar a, b;\n\t\t\t\t\t\t\t\ta = win[type][k + 27]\n\t\t\t\t\t\t\t\t\t\t* band1[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t+ win[type][k + 36]\n\t\t\t\t\t\t\t\t\t\t* band1[8 - k][order[band]];\n\t\t\t\t\t\t\t\tb = win[type][k + 9]\n\t\t\t\t\t\t\t\t\t\t* band0[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t- win[type][k + 18]\n\t\t\t\t\t\t\t\t\t\t* band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\twork[k + 9] = a - b * tantab_l[3 + k + 9];\n\t\t\t\t\t\t\t\twork[k + 18] = a * tantab_l[3 + k + 9] + b;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmdct_long(mdct_enc, mdct_encPos, work);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t/*\n\t\t\t\t\t * Perform aliasing reduction butterfly\n\t\t\t\t\t */\n\t\t\t\t\tif (type != Encoder.SHORT_TYPE && band != 0) {\n\t\t\t\t\t\tfor (var k = 7; k >= 0; --k) {\n\t\t\t\t\t\t\tvar bu, bd;\n\t\t\t\t\t\t\tbu = mdct_enc[mdct_encPos + k] * ca[20 + k]\n\t\t\t\t\t\t\t\t\t+ mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* cs[28 + k];\n\t\t\t\t\t\t\tbd = mdct_enc[mdct_encPos + k] * cs[28 + k]\n\t\t\t\t\t\t\t\t\t- mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* ca[20 + k];\n\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + -1 - k] = bu;\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k] = bd;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twk = w1;\n\t\t\twkPos = 286;\n\t\t\tif (gfc.mode_gr == 1) {\n\t\t\t\tfor (var i = 0; i < 18; i++) {\n\t\t\t\t\tSystem.arraycopy(gfc.sb_sample[ch][1][i], 0,\n\t\t\t\t\t\t\tgfc.sb_sample[ch][0][i], 0, 32);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nmodule.exports = NewMDCT;\n","var Encoder = require('./Encoder.js');\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nfunction III_psy_xmin() {\n this.l = new_float(Encoder.SBMAX_l);\n this.s = new_float_n([Encoder.SBMAX_s, 3]);\n\n var self = this;\n this.assign = function (iii_psy_xmin) {\n System.arraycopy(iii_psy_xmin.l, 0, self.l, 0, Encoder.SBMAX_l);\n for (var i = 0; i < Encoder.SBMAX_s; i++) {\n for (var j = 0; j < 3; j++) {\n self.s[i][j] = iii_psy_xmin.s[i][j];\n }\n }\n }\n}\n\nmodule.exports = III_psy_xmin;\n","//package mp3;\n\nvar III_psy_xmin = require('./III_psy_xmin.js');\n\nfunction III_psy_ratio() {\n\tthis.thm = new III_psy_xmin();\n\tthis.en = new III_psy_xmin();\n}\n\nmodule.exports = III_psy_ratio;\n","//package mp3;\n\n/* MPEG modes */\nfunction MPEGMode(ordinal) {\n var _ordinal = ordinal;\n this.ordinal = function () {\n return _ordinal;\n }\n}\n\nMPEGMode.STEREO = new MPEGMode(0);\nMPEGMode.JOINT_STEREO = new MPEGMode(1);\nMPEGMode.DUAL_CHANNEL = new MPEGMode(2);\nMPEGMode.MONO = new MPEGMode(3);\nMPEGMode.NOT_SET = new MPEGMode(4);\n\nmodule.exports = MPEGMode;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\n/**\n * ENCDELAY The encoder delay.\n *\n * Minimum allowed is MDCTDELAY (see below)\n *\n * The first 96 samples will be attenuated, so using a value less than 96\n * will result in corrupt data for the first 96-ENCDELAY samples.\n *\n * suggested: 576 set to 1160 to sync with FhG.\n */\nEncoder.ENCDELAY = 576;\n/**\n * make sure there is at least one complete frame after the last frame\n * containing real data\n *\n * Using a value of 288 would be sufficient for a a very sophisticated\n * decoder that can decode granule-by-granule instead of frame by frame. But\n * lets not assume this, and assume the decoder will not decode frame N\n * unless it also has data for frame N+1\n */\nEncoder.POSTDELAY = 1152;\n\n/**\n * delay of the MDCT used in mdct.c original ISO routines had a delay of\n * 528! Takehiro's routines:\n */\nEncoder.MDCTDELAY = 48;\nEncoder.FFTOFFSET = (224 + Encoder.MDCTDELAY);\n\n/**\n * Most decoders, including the one we use, have a delay of 528 samples.\n */\nEncoder.DECDELAY = 528;\n\n/**\n * number of subbands\n */\nEncoder.SBLIMIT = 32;\n\n/**\n * parition bands bands\n */\nEncoder.CBANDS = 64;\n\n/**\n * number of critical bands/scale factor bands where masking is computed\n */\nEncoder.SBPSY_l = 21;\nEncoder.SBPSY_s = 12;\n\n/**\n * total number of scalefactor bands encoded\n */\nEncoder.SBMAX_l = 22;\nEncoder.SBMAX_s = 13;\nEncoder.PSFB21 = 6;\nEncoder.PSFB12 = 6;\n\n/**\n * FFT sizes\n */\nEncoder.BLKSIZE = 1024;\nEncoder.HBLKSIZE = (Encoder.BLKSIZE / 2 + 1);\nEncoder.BLKSIZE_s = 256;\nEncoder.HBLKSIZE_s = (Encoder.BLKSIZE_s / 2 + 1);\n\nEncoder.NORM_TYPE = 0;\nEncoder.START_TYPE = 1;\nEncoder.SHORT_TYPE = 2;\nEncoder.STOP_TYPE = 3;\n\n/**\n * <PRE>\n * Mode Extention:\n * When we are in stereo mode, there are 4 possible methods to store these\n * two channels. The stereo modes -m? are using a subset of them.\n *\n * -ms: MPG_MD_LR_LR\n * -mj: MPG_MD_LR_LR and MPG_MD_MS_LR\n * -mf: MPG_MD_MS_LR\n * -mi: all\n * </PRE>\n */\nEncoder.MPG_MD_LR_LR = 0;\nEncoder.MPG_MD_LR_I = 1;\nEncoder.MPG_MD_MS_LR = 2;\nEncoder.MPG_MD_MS_I = 3;\n\nEncoder.fircoef = [-0.0207887 * 5, -0.0378413 * 5,\n -0.0432472 * 5, -0.031183 * 5, 7.79609e-18 * 5, 0.0467745 * 5,\n 0.10091 * 5, 0.151365 * 5, 0.187098 * 5];\n\nfunction Encoder() {\n var NewMDCT = require('./NewMDCT.js');\n var III_psy_ratio = require('./III_psy_ratio.js');\n var MPEGMode = require('./MPEGMode.js');\n var FFTOFFSET = Encoder.FFTOFFSET;\n var MPG_MD_MS_LR = Encoder.MPG_MD_MS_LR;\n //BitStream bs;\n //PsyModel psy;\n //VBRTag vbr;\n //QuantizePVT qupvt;\n var bs = null;\n this.psy = null;\n var psy = null;\n var vbr = null;\n var qupvt = null;\n\n //public final void setModules(BitStream bs, PsyModel psy, QuantizePVT qupvt,\n // VBRTag vbr) {\n this.setModules = function (_bs, _psy, _qupvt, _vbr) {\n bs = _bs;\n this.psy = _psy;\n psy = _psy;\n vbr = _vbr;\n qupvt = _qupvt;\n };\n\n var newMDCT = new NewMDCT();\n\n /***********************************************************************\n *\n * encoder and decoder delays\n *\n ***********************************************************************/\n\n /**\n * <PRE>\n * layer III enc->dec delay: 1056 (1057?) (observed)\n * layer II enc->dec delay: 480 (481?) (observed)\n *\n * polyphase 256-16 (dec or enc) = 240\n * mdct 256+32 (9*32) (dec or enc) = 288\n * total: 512+16\n *\n * My guess is that delay of polyphase filterbank is actualy 240.5\n * (there are technical reasons for this, see postings in mp3encoder).\n * So total Encode+Decode delay = ENCDELAY + 528 + 1\n * </PRE>\n */\n\n\n /**\n * auto-adjust of ATH, useful for low volume Gabriel Bouvigne 3 feb 2001\n *\n * modifies some values in gfp.internal_flags.ATH (gfc.ATH)\n */\n//private void adjust_ATH(final LameInternalFlags gfc) {\n function adjust_ATH(gfc) {\n var gr2_max, max_pow;\n\n if (gfc.ATH.useAdjust == 0) {\n gfc.ATH.adjust = 1.0;\n /* no adjustment */\n return;\n }\n\n /* jd - 2001 mar 12, 27, jun 30 */\n /* loudness based on equal loudness curve; */\n /* use granule with maximum combined loudness */\n max_pow = gfc.loudness_sq[0][0];\n gr2_max = gfc.loudness_sq[1][0];\n if (gfc.channels_out == 2) {\n max_pow += gfc.loudness_sq[0][1];\n gr2_max += gfc.loudness_sq[1][1];\n } else {\n max_pow += max_pow;\n gr2_max += gr2_max;\n }\n if (gfc.mode_gr == 2) {\n max_pow = Math.max(max_pow, gr2_max);\n }\n max_pow *= 0.5;\n /* max_pow approaches 1.0 for full band noise */\n\n /* jd - 2001 mar 31, jun 30 */\n /* user tuning of ATH adjustment region */\n max_pow *= gfc.ATH.aaSensitivityP;\n\n /*\n * adjust ATH depending on range of maximum value\n */\n\n /* jd - 2001 feb27, mar12,20, jun30, jul22 */\n /* continuous curves based on approximation */\n /* to GB's original values. */\n /* For an increase in approximate loudness, */\n /* set ATH adjust to adjust_limit immediately */\n /* after a delay of one frame. */\n /* For a loudness decrease, reduce ATH adjust */\n /* towards adjust_limit gradually. */\n /* max_pow is a loudness squared or a power. */\n if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */\n if (gfc.ATH.adjust >= 1.0) {\n gfc.ATH.adjust = 1.0;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n /* in case there is leading low volume */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n gfc.ATH.adjustLimit = 1.0;\n } else { /* adjustment curve */\n /* about 32 dB maximum adjust (0.000625) */\n var adj_lim_new = 31.98 * max_pow + 0.000625;\n if (gfc.ATH.adjust >= adj_lim_new) { /* descend gradually */\n gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925;\n if (gfc.ATH.adjust < adj_lim_new) { /* stop descent */\n gfc.ATH.adjust = adj_lim_new;\n }\n } else { /* ascend */\n if (gfc.ATH.adjustLimit >= adj_lim_new) {\n gfc.ATH.adjust = adj_lim_new;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n }\n gfc.ATH.adjustLimit = adj_lim_new;\n }\n }\n\n /**\n * <PRE>\n * some simple statistics\n *\n * bitrate index 0: free bitrate . not allowed in VBR mode\n * : bitrates, kbps depending on MPEG version\n * bitrate index 15: forbidden\n *\n * mode_ext:\n * 0: LR\n * 1: LR-i\n * 2: MS\n * 3: MS-i\n * </PRE>\n */\n function updateStats(gfc) {\n var gr, ch;\n assert(0 <= gfc.bitrate_index && gfc.bitrate_index < 16);\n assert(0 <= gfc.mode_ext && gfc.mode_ext < 4);\n\n /* count bitrate indices */\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++;\n gfc.bitrate_stereoMode_Hist[15][4]++;\n\n /* count 'em for every mode extension in case of 2 channel encoding */\n if (gfc.channels_out == 2) {\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][gfc.mode_ext]++;\n gfc.bitrate_stereoMode_Hist[15][gfc.mode_ext]++;\n }\n for (gr = 0; gr < gfc.mode_gr; ++gr) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n var bt = gfc.l3_side.tt[gr][ch].block_type | 0;\n if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0)\n bt = 4;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++;\n gfc.bitrate_blockType_Hist[15][bt]++;\n gfc.bitrate_blockType_Hist[15][5]++;\n }\n }\n }\n\n function lame_encode_frame_init(gfp, inbuf) {\n var gfc = gfp.internal_flags;\n\n var ch, gr;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* prime the MDCT/polyphase filterbank with a short block */\n var i, j;\n var primebuff0 = new_float(286 + 1152 + 576);\n var primebuff1 = new_float(286 + 1152 + 576);\n gfc.lame_encode_frame_init = 1;\n for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) {\n if (i < 576 * gfc.mode_gr) {\n primebuff0[i] = 0;\n if (gfc.channels_out == 2)\n primebuff1[i] = 0;\n } else {\n primebuff0[i] = inbuf[0][j];\n if (gfc.channels_out == 2)\n primebuff1[i] = inbuf[1][j];\n ++j;\n }\n }\n /* polyphase filtering / mdct */\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder.SHORT_TYPE;\n }\n }\n newMDCT.mdct_sub48(gfc, primebuff0, primebuff1);\n\n /* check FFT will not use a negative starting offset */\n assert(576 >= Encoder.FFTOFFSET);\n /* check if we have enough data for FFT */\n assert(gfc.mf_size >= (Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET));\n /* check if we have enough data for polyphase filterbank */\n assert(gfc.mf_size >= (512 + gfp.framesize - 32));\n }\n\n }\n\n /**\n * <PRE>\n * encodeframe() Layer 3\n *\n * encode a single frame\n *\n *\n * lame_encode_frame()\n *\n *\n * gr 0 gr 1\n * inbuf: |--------------|--------------|--------------|\n *\n *\n * Polyphase (18 windows, each shifted 32)\n * gr 0:\n * window1 <----512---.\n * window18 <----512---.\n *\n * gr 1:\n * window1 <----512---.\n * window18 <----512---.\n *\n *\n *\n * MDCT output: |--------------|--------------|--------------|\n *\n * FFT's <---------1024---------.\n * <---------1024-------.\n *\n *\n *\n * inbuf = buffer of PCM data size=MP3 framesize\n * encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY\n * so the MDCT coefficints are from inbuf[ch][-MDCTDELAY]\n *\n * psy-model FFT has a 1 granule delay, so we feed it data for the\n * next granule.\n * FFT is centered over granule: 224+576+224\n * So FFT starts at: 576-224-MDCTDELAY\n *\n * MPEG2: FFT ends at: BLKSIZE+576-224-MDCTDELAY (1328)\n * MPEG1: FFT ends at: BLKSIZE+2*576-224-MDCTDELAY (1904)\n *\n * MPEG2: polyphase first window: [0..511]\n * 18th window: [544..1055] (1056)\n * MPEG1: 36th window: [1120..1631] (1632)\n * data needed: 512+framesize-32\n *\n * A close look newmdct.c shows that the polyphase filterbank\n * only uses data from [0..510] for each window. Perhaps because the window\n * used by the filterbank is zero for the last point, so Takehiro's\n * code doesn't bother to compute with it.\n *\n * FFT starts at 576-224-MDCTDELAY (304) = 576-FFTOFFSET\n *\n * </PRE>\n */\n\n\n this.lame_encode_mp3_frame = function (gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var mp3count;\n var masking_LR = new_array_n([2, 2]);\n /*\n * LR masking &\n * energy\n */\n masking_LR[0][0] = new III_psy_ratio();\n masking_LR[0][1] = new III_psy_ratio();\n masking_LR[1][0] = new III_psy_ratio();\n masking_LR[1][1] = new III_psy_ratio();\n var masking_MS = new_array_n([2, 2]);\n /* MS masking & energy */\n masking_MS[0][0] = new III_psy_ratio();\n masking_MS[0][1] = new III_psy_ratio();\n masking_MS[1][0] = new III_psy_ratio();\n masking_MS[1][1] = new III_psy_ratio();\n //III_psy_ratio masking[][];\n var masking;\n /* pointer to selected maskings */\n var inbuf = [null, null];\n var gfc = gfp.internal_flags;\n\n var tot_ener = new_float_n([2, 4]);\n var ms_ener_ratio = [.5, .5];\n var pe = [[0., 0.], [0., 0.]];\n var pe_MS = [[0., 0.], [0., 0.]];\n\n//float[][] pe_use;\n var pe_use;\n\n var ch, gr;\n\n inbuf[0] = inbuf_l;\n inbuf[1] = inbuf_r;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* first run? */\n lame_encode_frame_init(gfp, inbuf);\n\n }\n\n /********************** padding *****************************/\n /**\n * <PRE>\n * padding method as described in\n * \"MPEG-Layer3 / Bitstream Syntax and Decoding\"\n * by Martin Sieler, Ralph Sperschneider\n *\n * note: there is no padding for the very first frame\n *\n * Robert Hegemann 2000-06-22\n * </PRE>\n */\n gfc.padding = 0;\n if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {\n gfc.slot_lag += gfp.out_samplerate;\n gfc.padding = 1;\n }\n\n /****************************************\n * Stage 1: psychoacoustic model *\n ****************************************/\n\n if (gfc.psymodel != 0) {\n /*\n * psychoacoustic model psy model has a 1 granule (576) delay that\n * we must compensate for (mt 6/99).\n */\n var ret;\n var bufp = [null, null];\n /* address of beginning of left & right granule */\n var bufpPos = 0;\n /* address of beginning of left & right granule */\n var blocktype = new_int(2);\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n bufp[ch] = inbuf[ch];\n bufpPos = 576 + gr * 576 - Encoder.FFTOFFSET;\n }\n if (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) {\n ret = psy.L3psycho_anal_vbr(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n } else {\n ret = psy.L3psycho_anal_ns(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n }\n if (ret != 0)\n return -4;\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3];\n if (ms_ener_ratio[gr] > 0)\n ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr];\n }\n\n /* block type flags */\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n cod_info.block_type = blocktype[ch];\n cod_info.mixed_block_flag = 0;\n }\n }\n } else {\n /* no psy model */\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder.NORM_TYPE;\n gfc.l3_side.tt[gr][ch].mixed_block_flag = 0;\n pe_MS[gr][ch] = pe[gr][ch] = 700;\n }\n }\n\n /* auto-adjust of ATH, useful for low volume */\n adjust_ATH(gfc);\n\n /****************************************\n * Stage 2: MDCT *\n ****************************************/\n\n /* polyphase filtering / mdct */\n newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]);\n\n /****************************************\n * Stage 3: MS/LR decision *\n ****************************************/\n\n /* Here will be selected MS or LR coding of the 2 stereo channels */\n gfc.mode_ext = Encoder.MPG_MD_LR_LR;\n\n if (gfp.force_ms) {\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n } else if (gfp.mode == MPEGMode.JOINT_STEREO) {\n /*\n * ms_ratio = is scaled, for historical reasons, to look like a\n * ratio of side_channel / total. 0 = signal is 100% mono .5 = L & R\n * uncorrelated\n */\n\n /**\n * <PRE>\n * [0] and [1] are the results for the two granules in MPEG-1,\n * in MPEG-2 it's only a faked averaging of the same value\n * _prev is the value of the last granule of the previous frame\n * _next is the value of the first granule of the next frame\n * </PRE>\n */\n\n var sum_pe_MS = 0.;\n var sum_pe_LR = 0.;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n sum_pe_MS += pe_MS[gr][ch];\n sum_pe_LR += pe[gr][ch];\n }\n }\n\n /* based on PE: M/S coding would not use much more bits than L/R */\n if (sum_pe_MS <= 1.00 * sum_pe_LR) {\n\n var gi0 = gfc.l3_side.tt[0];\n var gi1 = gfc.l3_side.tt[gfc.mode_gr - 1];\n\n if (gi0[0].block_type == gi0[1].block_type\n && gi1[0].block_type == gi1[1].block_type) {\n\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n }\n }\n }\n\n /* bit and noise allocation */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n masking = masking_MS;\n /* use MS masking */\n pe_use = pe_MS;\n } else {\n masking = masking_LR;\n /* use LR masking */\n pe_use = pe;\n }\n\n /* copy data for MP3 frame analyzer */\n if (gfp.analysis && gfc.pinfo != null) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.pinfo.ms_ratio[gr] = gfc.ms_ratio[gr];\n gfc.pinfo.ms_ener_ratio[gr] = ms_ener_ratio[gr];\n gfc.pinfo.blocktype[gr][ch] = gfc.l3_side.tt[gr][ch].block_type;\n gfc.pinfo.pe[gr][ch] = pe_use[gr][ch];\n System.arraycopy(gfc.l3_side.tt[gr][ch].xr, 0,\n gfc.pinfo.xr[gr][ch], 0, 576);\n /*\n * in psymodel, LR and MS data was stored in pinfo. switch\n * to MS data:\n */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n gfc.pinfo.ers[gr][ch] = gfc.pinfo.ers[gr][ch + 2];\n System.arraycopy(gfc.pinfo.energy[gr][ch + 2], 0,\n gfc.pinfo.energy[gr][ch], 0,\n gfc.pinfo.energy[gr][ch].length);\n }\n }\n }\n }\n\n /****************************************\n * Stage 4: quantization loop *\n ****************************************/\n\n if (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_abr) {\n\n var i;\n var f;\n\n for (i = 0; i < 18; i++)\n gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1];\n\n f = 0.0;\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++)\n f += pe_use[gr][ch];\n gfc.nsPsy.pefirbuf[18] = f;\n\n f = gfc.nsPsy.pefirbuf[9];\n for (i = 0; i < 9; i++)\n f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i])\n * Encoder.fircoef[i];\n\n f = (670 * 5 * gfc.mode_gr * gfc.channels_out) / f;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n pe_use[gr][ch] *= f;\n }\n }\n }\n gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking);\n\n /****************************************\n * Stage 5: bitstream formatting *\n ****************************************/\n\n /* write the frame to the bitstream */\n bs.format_bitstream(gfp);\n\n /* copy mp3 bit buffer into array */\n mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1);\n\n if (gfp.bWriteVbrTag)\n vbr.addVbrFrame(gfp);\n\n if (gfp.analysis && gfc.pinfo != null) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var j;\n for (j = 0; j < FFTOFFSET; j++)\n gfc.pinfo.pcmdata[ch][j] = gfc.pinfo.pcmdata[ch][j\n + gfp.framesize];\n for (j = FFTOFFSET; j < 1600; j++) {\n gfc.pinfo.pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET];\n }\n }\n qupvt.set_frame_pinfo(gfp, masking);\n }\n\n updateStats(gfc);\n\n return mp3count;\n }\n}\n\n\nmodule.exports = Encoder;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\nfunction FFT() {\n\n var window = new_float(Encoder.BLKSIZE);\n var window_s = new_float(Encoder.BLKSIZE_s / 2);\n\n var costab = [\n 9.238795325112867e-01, 3.826834323650898e-01,\n 9.951847266721969e-01, 9.801714032956060e-02,\n 9.996988186962042e-01, 2.454122852291229e-02,\n 9.999811752826011e-01, 6.135884649154475e-03\n ];\n\n function fht(fz, fzPos, n) {\n var tri = 0;\n var k4;\n var fi;\n var gi;\n\n n <<= 1;\n /* to get BLKSIZE, because of 3DNow! ASM routine */\n var fn = fzPos + n;\n k4 = 4;\n do {\n var s1, c1;\n var i, k1, k2, k3, kx;\n kx = k4 >> 1;\n k1 = k4;\n k2 = k4 << 1;\n k3 = k2 + k1;\n k4 = k2 << 1;\n fi = fzPos;\n gi = fi + kx;\n do {\n var f0, f1, f2, f3;\n f1 = fz[fi + 0] - fz[fi + k1];\n f0 = fz[fi + 0] + fz[fi + k1];\n f3 = fz[fi + k2] - fz[fi + k3];\n f2 = fz[fi + k2] + fz[fi + k3];\n fz[fi + k2] = f0 - f2;\n fz[fi + 0] = f0 + f2;\n fz[fi + k3] = f1 - f3;\n fz[fi + k1] = f1 + f3;\n f1 = fz[gi + 0] - fz[gi + k1];\n f0 = fz[gi + 0] + fz[gi + k1];\n f3 = (Util.SQRT2 * fz[gi + k3]);\n f2 = (Util.SQRT2 * fz[gi + k2]);\n fz[gi + k2] = f0 - f2;\n fz[gi + 0] = f0 + f2;\n fz[gi + k3] = f1 - f3;\n fz[gi + k1] = f1 + f3;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c1 = costab[tri + 0];\n s1 = costab[tri + 1];\n for (i = 1; i < kx; i++) {\n var c2, s2;\n c2 = 1 - (2 * s1) * s1;\n s2 = (2 * s1) * c1;\n fi = fzPos + i;\n gi = fzPos + k1 - i;\n do {\n var a, b, g0, f0, f1, g1, f2, g2, f3, g3;\n b = s2 * fz[fi + k1] - c2 * fz[gi + k1];\n a = c2 * fz[fi + k1] + s2 * fz[gi + k1];\n f1 = fz[fi + 0] - a;\n f0 = fz[fi + 0] + a;\n g1 = fz[gi + 0] - b;\n g0 = fz[gi + 0] + b;\n b = s2 * fz[fi + k3] - c2 * fz[gi + k3];\n a = c2 * fz[fi + k3] + s2 * fz[gi + k3];\n f3 = fz[fi + k2] - a;\n f2 = fz[fi + k2] + a;\n g3 = fz[gi + k2] - b;\n g2 = fz[gi + k2] + b;\n b = s1 * f2 - c1 * g3;\n a = c1 * f2 + s1 * g3;\n fz[fi + k2] = f0 - a;\n fz[fi + 0] = f0 + a;\n fz[gi + k3] = g1 - b;\n fz[gi + k1] = g1 + b;\n b = c1 * g2 - s1 * f3;\n a = s1 * g2 + c1 * f3;\n fz[gi + k2] = g0 - a;\n fz[gi + 0] = g0 + a;\n fz[fi + k3] = f1 - b;\n fz[fi + k1] = f1 + b;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c2 = c1;\n c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1];\n s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0];\n }\n tri += 2;\n } while (k4 < n);\n }\n\n var rv_tbl = [0x00, 0x80, 0x40,\n 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10,\n 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70,\n 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28,\n 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58,\n 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04,\n 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64,\n 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34,\n 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c,\n 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c,\n 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c,\n 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22,\n 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52,\n 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a,\n 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a,\n 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a,\n 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46,\n 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16,\n 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76,\n 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e,\n 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e,\n 0xde, 0x3e, 0xbe, 0x7e, 0xfe];\n\n this.fft_short = function (gfc, x_real, chn, buffer, bufPos) {\n for (var b = 0; b < 3; b++) {\n var x = Encoder.BLKSIZE_s / 2;\n var k = 0xffff & ((576 / 3) * (b + 1));\n var j = Encoder.BLKSIZE_s / 8 - 1;\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[j << 2] & 0xff;\n\n f0 = window_s[i] * buffer[chn][bufPos + i + k];\n w = window_s[0x7f - i] * buffer[chn][bufPos + i + k + 0x80];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x40] * buffer[chn][bufPos + i + k + 0x40];\n w = window_s[0x3f - i] * buffer[chn][bufPos + i + k + 0xc0];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n x_real[b][x + 0] = f0 + f2;\n x_real[b][x + 2] = f0 - f2;\n x_real[b][x + 1] = f1 + f3;\n x_real[b][x + 3] = f1 - f3;\n\n f0 = window_s[i + 0x01] * buffer[chn][bufPos + i + k + 0x01];\n w = window_s[0x7e - i] * buffer[chn][bufPos + i + k + 0x81];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x41] * buffer[chn][bufPos + i + k + 0x41];\n w = window_s[0x3e - i] * buffer[chn][bufPos + i + k + 0xc1];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 0] = f0 + f2;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 2] = f0 - f2;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 1] = f1 + f3;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 3] = f1 - f3;\n } while (--j >= 0);\n\n fht(x_real[b], x, Encoder.BLKSIZE_s / 2);\n /* BLKSIZE_s/2 because of 3DNow! ASM routine */\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n }\n }\n\n this.fft_long = function (gfc, y, chn, buffer, bufPos) {\n var jj = Encoder.BLKSIZE / 8 - 1;\n var x = Encoder.BLKSIZE / 2;\n\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[jj] & 0xff;\n f0 = window[i] * buffer[chn][bufPos + i];\n w = window[i + 0x200] * buffer[chn][bufPos + i + 0x200];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x100] * buffer[chn][bufPos + i + 0x100];\n w = window[i + 0x300] * buffer[chn][bufPos + i + 0x300];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n y[x + 0] = f0 + f2;\n y[x + 2] = f0 - f2;\n y[x + 1] = f1 + f3;\n y[x + 3] = f1 - f3;\n\n f0 = window[i + 0x001] * buffer[chn][bufPos + i + 0x001];\n w = window[i + 0x201] * buffer[chn][bufPos + i + 0x201];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x101] * buffer[chn][bufPos + i + 0x101];\n w = window[i + 0x301] * buffer[chn][bufPos + i + 0x301];\n f3 = f2 - w;\n f2 = f2 + w;\n\n y[x + Encoder.BLKSIZE / 2 + 0] = f0 + f2;\n y[x + Encoder.BLKSIZE / 2 + 2] = f0 - f2;\n y[x + Encoder.BLKSIZE / 2 + 1] = f1 + f3;\n y[x + Encoder.BLKSIZE / 2 + 3] = f1 - f3;\n } while (--jj >= 0);\n\n fht(y, x, Encoder.BLKSIZE / 2);\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n }\n\n this.init_fft = function (gfc) {\n /* The type of window used here will make no real difference, but */\n /*\n * in the interest of merging nspsytune stuff - switch to blackman\n * window\n */\n for (var i = 0; i < Encoder.BLKSIZE; i++)\n /* blackman window */\n window[i] = (0.42 - 0.5 * Math.cos(2 * Math.PI * (i + .5)\n / Encoder.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + .5)\n / Encoder.BLKSIZE));\n\n for (var i = 0; i < Encoder.BLKSIZE_s / 2; i++)\n window_s[i] = (0.5 * (1.0 - Math.cos(2.0 * Math.PI\n * (i + 0.5) / Encoder.BLKSIZE_s)));\n\n }\n\n}\n\nmodule.exports = FFT;\n","/*\n * psymodel.c\n *\n * Copyright (c) 1999-2000 Mark Taylor\n * Copyright (c) 2001-2002 Naoki Shibata\n * Copyright (c) 2000-2003 Takehiro Tominaga\n * Copyright (c) 2000-2008 Robert Hegemann\n * Copyright (c) 2000-2005 Gabriel Bouvigne\n * Copyright (c) 2000-2005 Alexander Leidinger\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: PsyModel.java,v 1.27 2011/05/24 20:48:06 kenchis Exp $ */\n\n\n/*\n PSYCHO ACOUSTICS\n\n\n This routine computes the psycho acoustics, delayed by one granule.\n\n Input: buffer of PCM data (1024 samples).\n\n This window should be centered over the 576 sample granule window.\n The routine will compute the psycho acoustics for\n this granule, but return the psycho acoustics computed\n for the *previous* granule. This is because the block\n type of the previous granule can only be determined\n after we have computed the psycho acoustics for the following\n granule.\n\n Output: maskings and energies for each scalefactor band.\n block type, PE, and some correlation measures.\n The PE is used by CBR modes to determine if extra bits\n from the bit reservoir should be used. The correlation\n measures are used to determine mid/side or regular stereo.\n */\n/*\n Notation:\n\n barks: a non-linear frequency scale. Mapping from frequency to\n barks is given by freq2bark()\n\n scalefactor bands: The spectrum (frequencies) are broken into\n SBMAX \"scalefactor bands\". Thes bands\n are determined by the MPEG ISO spec. In\n the noise shaping/quantization code, we allocate\n bits among the partition bands to achieve the\n best possible quality\n\n partition bands: The spectrum is also broken into about\n 64 \"partition bands\". Each partition\n band is about .34 barks wide. There are about 2-5\n partition bands for each scalefactor band.\n\n LAME computes all psycho acoustic information for each partition\n band. Then at the end of the computations, this information\n is mapped to scalefactor bands. The energy in each scalefactor\n band is taken as the sum of the energy in all partition bands\n which overlap the scalefactor band. The maskings can be computed\n in the same way (and thus represent the average masking in that band)\n or by taking the minmum value multiplied by the number of\n partition bands used (which represents a minimum masking in that band).\n */\n/*\n The general outline is as follows:\n\n 1. compute the energy in each partition band\n 2. compute the tonality in each partition band\n 3. compute the strength of each partion band \"masker\"\n 4. compute the masking (via the spreading function applied to each masker)\n 5. Modifications for mid/side masking.\n\n Each partition band is considiered a \"masker\". The strength\n of the i'th masker in band j is given by:\n\n s3(bark(i)-bark(j))*strength(i)\n\n The strength of the masker is a function of the energy and tonality.\n The more tonal, the less masking. LAME uses a simple linear formula\n (controlled by NMT and TMN) which says the strength is given by the\n energy divided by a linear function of the tonality.\n */\n/*\n s3() is the \"spreading function\". It is given by a formula\n determined via listening tests.\n\n The total masking in the j'th partition band is the sum over\n all maskings i. It is thus given by the convolution of\n the strength with s3(), the \"spreading function.\"\n\n masking(j) = sum_over_i s3(i-j)*strength(i) = s3 o strength\n\n where \"o\" = convolution operator. s3 is given by a formula determined\n via listening tests. It is normalized so that s3 o 1 = 1.\n\n Note: instead of a simple convolution, LAME also has the\n option of using \"additive masking\"\n\n The most critical part is step 2, computing the tonality of each\n partition band. LAME has two tonality estimators. The first\n is based on the ISO spec, and measures how predictiable the\n signal is over time. The more predictable, the more tonal.\n The second measure is based on looking at the spectrum of\n a single granule. The more peaky the spectrum, the more\n tonal. By most indications, the latter approach is better.\n\n Finally, in step 5, the maskings for the mid and side\n channel are possibly increased. Under certain circumstances,\n noise in the mid & side channels is assumed to also\n be masked by strong maskers in the L or R channels.\n\n\n Other data computed by the psy-model:\n\n ms_ratio side-channel / mid-channel masking ratio (for previous granule)\n ms_ratio_next side-channel / mid-channel masking ratio for this granule\n\n percep_entropy[2] L and R values (prev granule) of PE - A measure of how\n much pre-echo is in the previous granule\n percep_entropy_MS[2] mid and side channel values (prev granule) of percep_entropy\n energy[4] L,R,M,S energy in each channel, prev granule\n blocktype_d[2] block type to use for previous granule\n */\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar FFT = require(\"./FFT.js\");\nvar Encoder = require(\"./Encoder.js\");\n\nfunction PsyModel() {\n var MPEGMode = require('./MPEGMode.js');\n var fft = new FFT();\n\n var LOG10 = 2.30258509299404568402;\n\n var rpelev = 2;\n var rpelev2 = 16;\n var rpelev_s = 2;\n var rpelev2_s = 16;\n\n /* size of each partition band, in barks: */\n var DELBARK = .34;\n\n /* tuned for output level (sensitive to energy scale) */\n var VO_SCALE = (1. / (14752 * 14752) / (Encoder.BLKSIZE / 2));\n\n var temporalmask_sustain_sec = 0.01;\n\n var NS_PREECHO_ATT0 = 0.8;\n var NS_PREECHO_ATT1 = 0.6;\n var NS_PREECHO_ATT2 = 0.3;\n\n var NS_MSFIX = 3.5;\n\n var NSATTACKTHRE = 4.4;\n var NSATTACKTHRE_S = 25;\n\n var NSFIRLEN = 21;\n\n /* size of each partition band, in barks: */\n var LN_TO_LOG10 = 0.2302585093;\n\n function NON_LINEAR_SCALE_ENERGY(x) {\n return x;\n }\n\n /**\n * <PRE>\n * L3psycho_anal. Compute psycho acoustics.\n *\n * Data returned to the calling program must be delayed by one\n * granule.\n *\n * This is done in two places.\n * If we do not need to know the blocktype, the copying\n * can be done here at the top of the program: we copy the data for\n * the last granule (computed during the last call) before it is\n * overwritten with the new data. It looks like this:\n *\n * 0. static psymodel_data\n * 1. calling_program_data = psymodel_data\n * 2. compute psymodel_data\n *\n * For data which needs to know the blocktype, the copying must be\n * done at the end of this loop, and the old values must be saved:\n *\n * 0. static psymodel_data_old\n * 1. compute psymodel_data\n * 2. compute possible block type of this granule\n * 3. compute final block type of previous granule based on #2.\n * 4. calling_program_data = psymodel_data_old\n * 5. psymodel_data_old = psymodel_data\n * psycho_loudness_approx\n * jd - 2001 mar 12\n * in: energy - BLKSIZE/2 elements of frequency magnitudes ^ 2\n * gfp - uses out_samplerate, ATHtype (also needed for ATHformula)\n * returns: loudness^2 approximation, a positive value roughly tuned for a value\n * of 1.0 for signals near clipping.\n * notes: When calibrated, feeding this function binary white noise at sample\n * values +32767 or -32768 should return values that approach 3.\n * ATHformula is used to approximate an equal loudness curve.\n * future: Data indicates that the shape of the equal loudness curve varies\n * with intensity. This function might be improved by using an equal\n * loudness curve shaped for typical playback levels (instead of the\n * ATH, that is shaped for the threshold). A flexible realization might\n * simply bend the existing ATH curve to achieve the desired shape.\n * However, the potential gain may not be enough to justify an effort.\n * </PRE>\n */\n function psycho_loudness_approx(energy, gfc) {\n var loudness_power = 0.0;\n /* apply weights to power in freq. bands */\n for (var i = 0; i < Encoder.BLKSIZE / 2; ++i)\n loudness_power += energy[i] * gfc.ATH.eql_w[i];\n loudness_power *= VO_SCALE;\n\n return loudness_power;\n }\n\n function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n /* FFT data for mid and side channel is derived from L & R */\n else if (chn == 2) {\n for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n for (var b = 2; b >= 0; --b) {\n for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][b][j];\n var r = wsamp_s[wsamp_sPos + 1][b][j];\n wsamp_s[wsamp_sPos + 0][b][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][b][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = (wsamp_l[wsamp_lPos + 0])[Encoder.BLKSIZE / 2 - j];\n var im = (wsamp_l[wsamp_lPos + 0])[Encoder.BLKSIZE / 2 + j];\n fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n for (var b = 2; b >= 0; --b) {\n fftenergy_s[b][0] = (wsamp_s[wsamp_sPos + 0])[b][0];\n fftenergy_s[b][0] *= fftenergy_s[b][0];\n for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = (wsamp_s[wsamp_sPos + 0])[b][Encoder.BLKSIZE_s\n / 2 - j];\n var im = (wsamp_s[wsamp_sPos + 0])[b][Encoder.BLKSIZE_s\n / 2 + j];\n fftenergy_s[b][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n\n /*********************************************************************\n * compute loudness approximation (used for ATH auto-level adjustment)\n *********************************************************************/\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n /* mask_add optimization */\n /* init the limit values used to avoid computing log in mask_add when it is not necessary */\n\n /**\n * <PRE>\n * For example, with i = 10*log10(m2/m1)/10*16 (= log10(m2/m1)*16)\n *\n * abs(i)>8 is equivalent (as i is an integer) to\n * abs(i)>=9\n * i>=9 || i<=-9\n * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16\n * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16)\n * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16\n * exp10 is strictly increasing thus this is equivalent to\n * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants\n * </PRE>\n */\n\n /**\n * as in if(i>8)\n */\n var I1LIMIT = 8;\n /**\n * as in if(i>24) . changed 23\n */\n var I2LIMIT = 23;\n /**\n * as in if(m<15)\n */\n var MLIMIT = 15;\n\n var ma_max_i1;\n var ma_max_i2;\n var ma_max_m;\n\n /**\n * This is the masking table:<BR>\n * According to tonality, values are going from 0dB (TMN) to 9.3dB (NMT).<BR>\n * After additive masking computation, 8dB are added, so final values are\n * going from 8dB to 17.3dB\n *\n * pow(10, -0.0..-0.6)\n */\n var tab = [1.0, 0.79433, 0.63096, 0.63096,\n 0.63096, 0.63096, 0.63096, 0.25119, 0.11749];\n\n function init_mask_add_max_values() {\n ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16.0);\n ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16.0);\n ma_max_m = Math.pow(10, (MLIMIT) / 10.0);\n }\n\n var table1 = [3.3246 * 3.3246,\n 3.23837 * 3.23837, 3.15437 * 3.15437, 3.00412 * 3.00412,\n 2.86103 * 2.86103, 2.65407 * 2.65407, 2.46209 * 2.46209,\n 2.284 * 2.284, 2.11879 * 2.11879, 1.96552 * 1.96552,\n 1.82335 * 1.82335, 1.69146 * 1.69146, 1.56911 * 1.56911,\n 1.46658 * 1.46658, 1.37074 * 1.37074, 1.31036 * 1.31036,\n 1.25264 * 1.25264, 1.20648 * 1.20648, 1.16203 * 1.16203,\n 1.12765 * 1.12765, 1.09428 * 1.09428, 1.0659 * 1.0659,\n 1.03826 * 1.03826, 1.01895 * 1.01895, 1];\n\n var table2 = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n var table3 = [2.35364 * 2.35364,\n 2.29259 * 2.29259, 2.23313 * 2.23313, 2.12675 * 2.12675,\n 2.02545 * 2.02545, 1.87894 * 1.87894, 1.74303 * 1.74303,\n 1.61695 * 1.61695, 1.49999 * 1.49999, 1.39148 * 1.39148,\n 1.29083 * 1.29083, 1.19746 * 1.19746, 1.11084 * 1.11084,\n 1.03826 * 1.03826];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function mask_add(m1, m2, kk, b, gfc, shortblock) {\n var ratio;\n\n if (m2 > m1) {\n if (m2 < (m1 * ma_max_i2))\n ratio = m2 / m1;\n else\n return (m1 + m2);\n } else {\n if (m1 >= (m2 * ma_max_i2))\n return (m1 + m2);\n ratio = m1 / m2;\n }\n\n /* Should always be true, just checking */\n assert(m1 >= 0);\n assert(m2 >= 0);\n\n m1 += m2;\n //if (((long)(b + 3) & 0xffffffff) <= 3 + 3) {\n if ((b + 3) <= 3 + 3) {\n /* approximately, 1 bark = 3 partitions */\n /* 65% of the cases */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n /* 43% of the total */\n return m1;\n }\n\n /* 22% of the total */\n var i = 0 | (Util.FAST_LOG10_X(ratio, 16.0));\n return m1 * table2[i];\n }\n\n /**\n * <PRE>\n * m<15 equ log10((m1+m2)/gfc.ATH.cb[k])<1.5\n * equ (m1+m2)/gfc.ATH.cb[k]<10^1.5\n * equ (m1+m2)<10^1.5 * gfc.ATH.cb[k]\n * </PRE>\n */\n var i = 0 | Util.FAST_LOG10_X(ratio, 16.0);\n if (shortblock != 0) {\n m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust;\n } else {\n m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust;\n }\n assert(m2 >= 0);\n if (m1 < ma_max_m * m2) {\n /* 3% of the total */\n /* Originally if (m > 0) { */\n if (m1 > m2) {\n var f, r;\n\n f = 1.0;\n if (i <= 13)\n f = table3[i];\n\n r = Util.FAST_LOG10_X(m1 / m2, 10.0 / 15.0);\n return m1 * ((table1[i] - f) * r + f);\n }\n\n if (i > 13)\n return m1;\n\n return m1 * table3[i];\n }\n\n /* 10% of total */\n return m1 * table1[i];\n }\n\n var table2_ = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function vbrpsy_mask_add(m1, m2, b) {\n var ratio;\n\n if (m1 < 0) {\n m1 = 0;\n }\n if (m2 < 0) {\n m2 = 0;\n }\n if (m1 <= 0) {\n return m2;\n }\n if (m2 <= 0) {\n return m1;\n }\n if (m2 > m1) {\n ratio = m2 / m1;\n } else {\n ratio = m1 / m2;\n }\n if (-2 <= b && b <= 2) {\n /* approximately, 1 bark = 3 partitions */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n return m1 + m2;\n } else {\n var i = 0 | (Util.FAST_LOG10_X(ratio, 16.0));\n return (m1 + m2) * table2_[i];\n }\n }\n if (ratio < ma_max_i2) {\n return m1 + m2;\n }\n if (m1 < m2) {\n m1 = m2;\n }\n return m1;\n }\n\n /**\n * compute interchannel masking effects\n */\n function calc_interchannel_masking(gfp, ratio) {\n var gfc = gfp.internal_flags;\n if (gfc.channels_out > 1) {\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n var l = gfc.thm[0].l[sb];\n var r = gfc.thm[1].l[sb];\n gfc.thm[0].l[sb] += r * ratio;\n gfc.thm[1].l[sb] += l * ratio;\n }\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var l = gfc.thm[0].s[sb][sblock];\n var r = gfc.thm[1].s[sb][sblock];\n gfc.thm[0].s[sb][sblock] += r * ratio;\n gfc.thm[1].s[sb][sblock] += l * ratio;\n }\n }\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function msfix1(gfc) {\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n /* use this fix if L & R masking differs by 2db or less */\n /* if db = 10*log10(x2/x1) < 2 */\n /* if (x2 < 1.58*x1) { */\n if (gfc.thm[0].l[sb] > 1.58 * gfc.thm[1].l[sb]\n || gfc.thm[1].l[sb] > 1.58 * gfc.thm[0].l[sb])\n continue;\n var mld = gfc.mld_l[sb] * gfc.en[3].l[sb];\n var rmid = Math.max(gfc.thm[2].l[sb],\n Math.min(gfc.thm[3].l[sb], mld));\n\n mld = gfc.mld_l[sb] * gfc.en[2].l[sb];\n var rside = Math.max(gfc.thm[3].l[sb],\n Math.min(gfc.thm[2].l[sb], mld));\n gfc.thm[2].l[sb] = rmid;\n gfc.thm[3].l[sb] = rside;\n }\n\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n if (gfc.thm[0].s[sb][sblock] > 1.58 * gfc.thm[1].s[sb][sblock]\n || gfc.thm[1].s[sb][sblock] > 1.58 * gfc.thm[0].s[sb][sblock])\n continue;\n var mld = gfc.mld_s[sb] * gfc.en[3].s[sb][sblock];\n var rmid = Math.max(gfc.thm[2].s[sb][sblock],\n Math.min(gfc.thm[3].s[sb][sblock], mld));\n\n mld = gfc.mld_s[sb] * gfc.en[2].s[sb][sblock];\n var rside = Math.max(gfc.thm[3].s[sb][sblock],\n Math.min(gfc.thm[2].s[sb][sblock], mld));\n\n gfc.thm[2].s[sb][sblock] = rmid;\n gfc.thm[3].s[sb][sblock] = rside;\n }\n }\n }\n\n /**\n * Adjust M/S maskings if user set \"msfix\"\n *\n * Naoki Shibata 2000\n */\n function ns_msfix(gfc, msfix, athadjust) {\n var msfix2 = msfix;\n var athlower = Math.pow(10, athadjust);\n\n msfix *= 2.0;\n msfix2 *= 2.0;\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_l[gfc.bm_l[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].l[sb], ath),\n Math.max(gfc.thm[1].l[sb], ath));\n thmM = Math.max(gfc.thm[2].l[sb], ath);\n thmS = Math.max(gfc.thm[3].l[sb], ath);\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix2 / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert(thmM + thmS > 0);\n }\n gfc.thm[2].l[sb] = Math.min(thmM, gfc.thm[2].l[sb]);\n gfc.thm[3].l[sb] = Math.min(thmS, gfc.thm[3].l[sb]);\n }\n\n athlower *= ( Encoder.BLKSIZE_s / Encoder.BLKSIZE);\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_s[gfc.bm_s[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].s[sb][sblock], ath),\n Math.max(gfc.thm[1].s[sb][sblock], ath));\n thmM = Math.max(gfc.thm[2].s[sb][sblock], ath);\n thmS = Math.max(gfc.thm[3].s[sb][sblock], ath);\n\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert(thmM + thmS > 0);\n }\n gfc.thm[2].s[sb][sblock] = Math.min(gfc.thm[2].s[sb][sblock],\n thmM);\n gfc.thm[3].s[sb][sblock] = Math.min(gfc.thm[3].s[sb][sblock],\n thmS);\n }\n }\n }\n\n /**\n * short block threshold calculation (part 2)\n *\n * partition band bo_s[sfb] is at the transition from scalefactor band sfb\n * to the next one sfb+1; enn and thmm have to be split between them\n */\n function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder.SBMAX_s; ++b, ++sb) {\n var bo_s_sb = gfc.bo_s[sb];\n var npart_s = gfc.npart_s;\n var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s;\n while (b < b_lim) {\n assert(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].s[sb][sblock] = enn;\n gfc.thm[chn].s[sb][sblock] = thmm;\n\n if (b >= npart_s) {\n ++sb;\n break;\n }\n assert(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_s_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].s[sb][sblock] += enn;\n gfc.thm[chn].s[sb][sblock] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder.SBMAX_s; ++sb) {\n gfc.en[chn].s[sb][sblock] = 0;\n gfc.thm[chn].s[sb][sblock] = 0;\n }\n }\n\n /**\n * longblock threshold calculation (part 2)\n */\n function convert_partition2scalefac_l(gfc, eb, thr, chn) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder.SBMAX_l; ++b, ++sb) {\n var bo_l_sb = gfc.bo_l[sb];\n var npart_l = gfc.npart_l;\n var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l;\n while (b < b_lim) {\n assert(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].l[sb] = enn;\n gfc.thm[chn].l[sb] = thmm;\n\n if (b >= npart_l) {\n ++sb;\n break;\n }\n assert(eb[b] >= 0);\n assert(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_l_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].l[sb] += enn;\n gfc.thm[chn].l[sb] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder.SBMAX_l; ++sb) {\n gfc.en[chn].l[sb] = 0;\n gfc.thm[chn].l[sb] = 0;\n }\n }\n\n function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var j, b;\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (var i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n }\n assert(b == gfc.npart_s);\n assert(j == 129);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var ecb = gfc.s3_ss[j++] * eb[kk];\n ++kk;\n while (kk <= gfc.s3ind_s[b][1]) {\n ecb += gfc.s3_ss[j] * eb[kk];\n ++j;\n ++kk;\n }\n\n { /* limit calculated threshold by previous granule */\n var x = rpelev_s * gfc.nb_s1[chn][b];\n thr[b] = Math.min(ecb, x);\n }\n if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n /* limit calculated threshold by even older granule */\n var x = rpelev2_s * gfc.nb_s2[chn][b];\n var y = thr[b];\n thr[b] = Math.min(x, y);\n }\n\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n assert(thr[b] >= 0);\n }\n for (; b <= Encoder.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function block_type_set(gfp, uselongblock, blocktype_d, blocktype) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n blocktype[chn] = Encoder.NORM_TYPE;\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock.short_block_dispensed)\n uselongblock[chn] = 1;\n if (gfp.short_blocks == ShortBlock.short_block_forced)\n uselongblock[chn] = 0;\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE)\n blocktype[chn] = Encoder.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype[chn] = Encoder.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype[chn];\n // save for next call to l3psy_anal\n }\n }\n\n function NS_INTERP(x, y, r) {\n /* was pow((x),(r))*pow((y),1-(r)) */\n if (r >= 1.0) {\n /* 99.7% of the time */\n return x;\n }\n if (r <= 0.0)\n return y;\n if (y > 0.0) {\n /* rest of the time */\n return (Math.pow(x / y, r) * y);\n }\n /* never happens */\n return 0.0;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_s = [11.8, 13.6, 17.2, 32, 46.5,\n 51.3, 57.5, 67.1, 71.5, 84.6, 97.6, 130,\n /* 255.8 */\n ];\n\n function pecalc_s(mr, masking_lower) {\n var pe_s = 1236.28 / 4;\n for (var sb = 0; sb < Encoder.SBMAX_s - 1; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thm = mr.thm.s[sb][sblock];\n assert(sb < regcoef_s.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.s[sb][sblock];\n if (en > x) {\n if (en > x * 1e10) {\n pe_s += regcoef_s[sb] * (10.0 * LOG10);\n } else {\n assert(x > 0);\n pe_s += regcoef_s[sb] * Util.FAST_LOG10(en / x);\n }\n }\n }\n }\n }\n\n return pe_s;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_l = [6.8, 5.8, 5.8, 6.4, 6.5, 9.9,\n 12.1, 14.4, 15, 18.9, 21.6, 26.9, 34.2, 40.2, 46.8, 56.5,\n 60.7, 73.9, 85.7, 93.4, 126.1,\n /* 241.3 */\n ];\n\n function pecalc_l(mr, masking_lower) {\n var pe_l = 1124.23 / 4;\n for (var sb = 0; sb < Encoder.SBMAX_l - 1; sb++) {\n var thm = mr.thm.l[sb];\n assert(sb < regcoef_l.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.l[sb];\n if (en > x) {\n if (en > x * 1e10) {\n pe_l += regcoef_l[sb] * (10.0 * LOG10);\n } else {\n assert(x > 0);\n pe_l += regcoef_l[sb] * Util.FAST_LOG10(en / x);\n }\n }\n }\n }\n return pe_l;\n }\n\n function calc_energy(gfc, fftenergy, eb, max, avg) {\n var b, j;\n\n for (b = j = 0; b < gfc.npart_l; ++b) {\n var ebb = 0, m = 0;\n var i;\n for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) {\n var el = fftenergy[j];\n assert(el >= 0);\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n max[b] = m;\n avg[b] = ebb * gfc.rnumlines_l[b];\n assert(gfc.rnumlines_l[b] >= 0);\n assert(ebb >= 0);\n assert(eb[b] >= 0);\n assert(max[b] >= 0);\n assert(avg[b] >= 0);\n }\n }\n\n function calc_mask_index_l(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_l - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b]\n + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert(b > 0);\n assert(b == gfc.npart_l - 1);\n\n a = avg[b - 1] + avg[b];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert((gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert(b == (gfc.npart_l - 1));\n }\n\n var fircoef = [\n -8.65163e-18 * 2, -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2, 0.0931738 * 2,\n -5.52212e-17 * 2, -0.313819 * 2\n ];\n\n this.L3psycho_anal_ns = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n /*\n * to get a good cache performance, one has to think about the sequence,\n * in which the variables are used.\n */\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_L = new_float_n([2, Encoder.BLKSIZE]);\n var wsamp_S = new_float_n([2, 3, Encoder.BLKSIZE_s]);\n\n /* convolution */\n var eb_l = new_float(Encoder.CBANDS + 1);\n var eb_s = new_float(Encoder.CBANDS + 1);\n var thr = new_float(Encoder.CBANDS + 2);\n\n /* block type */\n var blocktype = new_int(2), uselongblock = new_int(2);\n\n /* usual variables like loop indices, etc.. */\n var numchn, chn;\n var b, i, j, k;\n var sb, sblock;\n\n /* variables used for --nspsytune */\n var ns_hpfsmpl = new_float_n([2, 576]);\n var pcfact;\n var mask_idx_l = new_int(Encoder.CBANDS + 2), mask_idx_s = new_int(Encoder.CBANDS + 2);\n\n Arrays.fill(mask_idx_s, 0);\n\n numchn = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n if (gfp.mode == MPEGMode.JOINT_STEREO)\n numchn = 4;\n\n if (gfp.VBR == VbrMode.vbr_off)\n pcfact = gfc.ResvMax == 0 ? 0 : ( gfc.ResvSize)\n / gfc.ResvMax * 0.5;\n else if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh\n || gfp.VBR == VbrMode.vbr_mt) {\n pcfact = 0.6;\n } else\n pcfact = 1.0;\n\n /**********************************************************************\n * Apply HPF of fs/4 to the input signal. This is used for attack\n * detection / handling.\n **********************************************************************/\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (chn = 0; chn < gfc.channels_out; chn++) {\n /* apply high pass filter of fs/4 */\n var firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert(fircoef.length == ((NSFIRLEN - 1) / 2));\n for (i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (numchn > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n\n for (chn = 0; chn < numchn; chn++) {\n var wsamp_l;\n var wsamp_s;\n var en_subshort = new_float(12);\n var en_short = [0, 0, 0, 0];\n var attack_intensity = new_float(12);\n var ns_uselongblock = 1;\n var attackThreshold;\n var max = new_float(Encoder.CBANDS), avg = new_float(Encoder.CBANDS);\n var ns_attacks = [0, 0, 0, 0];\n var fftenergy = new_float(Encoder.HBLKSIZE);\n var fftenergy_s = new_float_n([3, Encoder.HBLKSIZE_s]);\n\n /*\n * rh 20040301: the following loops do access one off the limits so\n * I increase the array dimensions by one and initialize the\n * accessed values to zero\n */\n assert(gfc.npart_s <= Encoder.CBANDS);\n assert(gfc.npart_l <= Encoder.CBANDS);\n\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n if (chn == 2) {\n for (i = 0; i < 576; i++) {\n var l, r;\n l = ns_hpfsmpl[0][i];\n r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n {\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n for (i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else\n p = 0.0;\n attack_intensity[i + 3] = p;\n }\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (i = 1; i < 12; i++)\n if (x < attack_intensity[i])\n x = attack_intensity[i];\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n for (i = 0; i < 12; i++)\n if (0 == ns_attacks[i / 3]\n && attack_intensity[i] > attackThreshold)\n ns_attacks[i / 3] = (i % 3) + 1;\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n for (i = 1; i < 4; i++) {\n var ratio;\n if (en_short[i - 1] > en_short[i]) {\n assert(en_short[i] > 0);\n ratio = en_short[i - 1] / en_short[i];\n } else {\n assert(en_short[i - 1] > 0);\n ratio = en_short[i] / en_short[i - 1];\n }\n if (ratio < 1.7) {\n ns_attacks[i] = 0;\n if (i == 1)\n ns_attacks[0] = 0;\n }\n }\n\n if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0)\n ns_attacks[0] = 0;\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[1] != 0 && ns_attacks[0] != 0)\n ns_attacks[1] = 0;\n if (ns_attacks[2] != 0 && ns_attacks[1] != 0)\n ns_attacks[2] = 0;\n if (ns_attacks[3] != 0 && ns_attacks[2] != 0)\n ns_attacks[3] = 0;\n }\n\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n\n /*********************************************************************\n * compute FFTs\n *********************************************************************/\n wsamp_s = wsamp_S;\n wsamp_l = wsamp_L;\n compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, (chn & 1),\n wsamp_s, (chn & 1), gr_out, chn, buffer, bufPos);\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n /* compute masking thresholds for short blocks */\n for (sblock = 0; sblock < 3; sblock++) {\n var enn, thmm;\n compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock);\n convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock);\n /**** short block pre-echo control ****/\n for (sb = 0; sb < Encoder.SBMAX_s; sb++) {\n thmm = gfc.thm[chn].s[sb][sblock];\n\n thmm *= NS_PREECHO_ATT0;\n if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n if (ns_attacks[sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n enn = en_subshort[sblock * 3 + 3]\n + en_subshort[sblock * 3 + 4]\n + en_subshort[sblock * 3 + 5];\n if (en_subshort[sblock * 3 + 5] * 6 < enn) {\n thmm *= 0.5;\n if (en_subshort[sblock * 3 + 4] * 6 < enn)\n thmm *= 0.5;\n }\n\n gfc.thm[chn].s[sb][sblock] = thmm;\n }\n }\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[2];\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n k = 0;\n {\n for (b = 0; b < gfc.npart_l; b++) {\n /*\n * convolve the partitioned energy with the spreading\n * function\n */\n var kk = gfc.s3ind[b][0];\n var eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n var ecb = gfc.s3_ll[k++] * eb2;\n while (++kk <= gfc.s3ind[b][1]) {\n eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b,\n gfc, 0);\n }\n ecb *= 0.158489319246111;\n /* pow(10,-0.8) */\n\n /**** long block pre-echo control ****/\n /**\n * <PRE>\n * dont use long block pre-echo control if previous granule was\n * a short block. This is to avoid the situation:\n * frame0: quiet (very low masking)\n * frame1: surge (triggers short blocks)\n * frame2: regular frame. looks like pre-echo when compared to\n * frame0, but all pre-echo was in frame1.\n * </PRE>\n */\n /*\n * chn=0,1 L and R channels\n *\n * chn=2,3 S and M channels.\n */\n\n if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE)\n thr[b] = ecb;\n else\n thr[b] = NS_INTERP(\n Math.min(ecb, Math.min(rpelev\n * gfc.nb_1[chn][b], rpelev2\n * gfc.nb_2[chn][b])), ecb, pcfact);\n\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n }\n }\n for (; b <= Encoder.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n /* compute masking thresholds for long blocks */\n convert_partition2scalefac_l(gfc, eb_l, thr, chn);\n }\n /* end loop over chn */\n\n if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) {\n if (gfp.interChRatio > 0.0) {\n calc_interchannel_masking(gfp, gfp.interChRatio);\n }\n }\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n var msfix;\n msfix1(gfc);\n msfix = gfp.msfix;\n if (Math.abs(msfix) > 0.0)\n ns_msfix(gfc, msfix, gfp.ATHlower * gfc.ATH.adjust);\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n block_type_set(gfp, uselongblock, blocktype_d, blocktype);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (chn = 0; chn < numchn; chn++) {\n var ppe;\n var ppePos = 0;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder.NORM_TYPE;\n if (blocktype_d[0] == Encoder.SHORT_TYPE\n || blocktype_d[1] == Encoder.SHORT_TYPE)\n type = Encoder.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder.SHORT_TYPE)\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n else\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n\n if (gfp.analysis)\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n\n }\n return 0;\n }\n\n function vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out, fftenergy, wsamp_l, wsamp_lPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n } else if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n }\n\n function vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock, fftenergy_s, wsamp_s, wsamp_sPos) {\n var gfc = gfp.internal_flags;\n\n if (sblock == 0 && chn < 2) {\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][sblock][j];\n var r = wsamp_s[wsamp_sPos + 1][sblock][j];\n wsamp_s[wsamp_sPos + 0][sblock][j] = (l + r) * Util.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][sblock][j] = (l - r) * Util.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy_s[sblock][0] = wsamp_s[wsamp_sPos + 0][sblock][0];\n fftenergy_s[sblock][0] *= fftenergy_s[sblock][0];\n for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 - j];\n var im = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 + j];\n fftenergy_s[sblock][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n\n /**\n * compute loudness approximation (used for ATH auto-level adjustment)\n */\n function vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy) {\n var gfc = gfp.internal_flags;\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n var fircoef_ = [-8.65163e-18 * 2,\n -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2,\n 0.0931738 * 2, -5.52212e-17 * 2, -0.313819 * 2];\n\n /**\n * Apply HPF of fs/4 to the input signal. This is used for attack detection\n * / handling.\n */\n function vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, energy, sub_short_factor, ns_attacks, uselongblock) {\n var ns_hpfsmpl = new_float_n([2, 576]);\n var gfc = gfp.internal_flags;\n var n_chn_out = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4 : n_chn_out;\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (var chn = 0; chn < n_chn_out; chn++) {\n /* apply high pass filter of fs/4 */\n firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert(fircoef_.length == ((NSFIRLEN - 1) / 2));\n for (var i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (var j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef_[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef_[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (n_chn_psy > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var attack_intensity = new_float(12);\n var en_subshort = new_float(12);\n var en_short = [0, 0, 0, 0];\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n var attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n var ns_uselongblock = 1;\n\n if (chn == 2) {\n for (var i = 0, j = 576; j > 0; ++i, --j) {\n var l = ns_hpfsmpl[0][i];\n var r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (var i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n for (var i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else {\n p = 0.0;\n }\n attack_intensity[i + 3] = p;\n }\n /* pulse like signal detection for fatboy.wav and so on */\n for (var i = 0; i < 3; ++i) {\n var enn = en_subshort[i * 3 + 3]\n + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5];\n var factor = 1.;\n if (en_subshort[i * 3 + 5] * 6 < enn) {\n factor *= 0.5;\n if (en_subshort[i * 3 + 4] * 6 < enn) {\n factor *= 0.5;\n }\n }\n sub_short_factor[chn][i] = factor;\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (var i = 1; i < 12; i++) {\n if (x < attack_intensity[i]) {\n x = attack_intensity[i];\n }\n }\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n for (var i = 0; i < 12; i++) {\n if (0 == ns_attacks[chn][i / 3]\n && attack_intensity[i] > attackThreshold) {\n ns_attacks[chn][i / 3] = (i % 3) + 1;\n }\n }\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n /* Good samples to show the effect are Trumpet test songs */\n /*\n * GB: tuned (1) to avoid too many short blocks for test sample\n * TRUMPET\n */\n /*\n * RH: tuned (2) to let enough short blocks through for test sample\n * FSOL and SNAPS\n */\n for (var i = 1; i < 4; i++) {\n var u = en_short[i - 1];\n var v = en_short[i];\n var m = Math.max(u, v);\n if (m < 40000) { /* (2) */\n if (u < 1.7 * v && v < 1.7 * u) { /* (1) */\n if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) {\n ns_attacks[chn][0] = 0;\n }\n ns_attacks[chn][i] = 0;\n }\n }\n }\n\n if (ns_attacks[chn][0] <= gfc.nsPsy.lastAttacks[chn]) {\n ns_attacks[chn][0] = 0;\n }\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[chn][0] + ns_attacks[chn][1]\n + ns_attacks[chn][2] + ns_attacks[chn][3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[chn][1] != 0 && ns_attacks[chn][0] != 0) {\n ns_attacks[chn][1] = 0;\n }\n if (ns_attacks[chn][2] != 0 && ns_attacks[chn][1] != 0) {\n ns_attacks[chn][2] = 0;\n }\n if (ns_attacks[chn][3] != 0 && ns_attacks[chn][2] != 0) {\n ns_attacks[chn][3] = 0;\n }\n }\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n }\n }\n\n function vbrpsy_skip_masking_s(gfc, chn, sblock) {\n if (sblock == 0) {\n for (var b = 0; b < gfc.npart_s; b++) {\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = 0;\n }\n }\n }\n\n function vbrpsy_skip_masking_l(gfc, chn) {\n for (var b = 0; b < gfc.npart_l; b++) {\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = 0;\n }\n }\n\n function psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_s - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert(b + 1 < gfc.npart_s);\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert((gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b]\n + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert(b > 0);\n assert(b == gfc.npart_s - 1);\n\n a = avg[b - 1] + avg[b];\n assert(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert((gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert(b == (gfc.npart_s - 1));\n }\n\n function vbrpsy_compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var max = new float[Encoder.CBANDS], avg = new_float(Encoder.CBANDS);\n var i, j, b;\n var mask_idx_s = new int[Encoder.CBANDS];\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n assert(ebb >= 0);\n max[b] = m;\n assert(n > 0);\n avg[b] = ebb / n;\n assert(avg[b] >= 0);\n }\n assert(b == gfc.npart_s);\n assert(j == 129);\n for (; b < Encoder.CBANDS; ++b) {\n max[b] = 0;\n avg[b] = 0;\n }\n psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx_s);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var last = gfc.s3ind_s[b][1];\n var dd, dd_n;\n var x, ecb, avg_mask;\n dd = mask_idx_s[kk];\n dd_n = 1;\n ecb = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ++j;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_s[kk];\n dd_n += 1;\n x = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ecb = vbrpsy_mask_add(ecb, x, kk - b);\n ++j;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n thr[b] = ecb;\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_s[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb[b]) {\n thr[b] = eb[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n\n assert(thr[b] >= 0);\n }\n for (; b < Encoder.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_masking_l(gfc, fftenergy, eb_l, thr, chn) {\n var max = new_float(Encoder.CBANDS), avg = new_float(Encoder.CBANDS);\n var mask_idx_l = new_int(Encoder.CBANDS + 2);\n var b;\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n var k = 0;\n for (b = 0; b < gfc.npart_l; b++) {\n var x, ecb, avg_mask, t;\n /* convolve the partitioned energy with the spreading function */\n var kk = gfc.s3ind[b][0];\n var last = gfc.s3ind[b][1];\n var dd = 0, dd_n = 0;\n dd = mask_idx_l[kk];\n dd_n += 1;\n ecb = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n ++k;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_l[kk];\n dd_n += 1;\n x = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n t = vbrpsy_mask_add(ecb, x, kk - b);\n ecb = t;\n ++k;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n\n /**** long block pre-echo control ****/\n /**\n * <PRE>\n * dont use long block pre-echo control if previous granule was\n * a short block. This is to avoid the situation:\n * frame0: quiet (very low masking)\n * frame1: surge (triggers short blocks)\n * frame2: regular frame. looks like pre-echo when compared to\n * frame0, but all pre-echo was in frame1.\n * </PRE>\n */\n /*\n * chn=0,1 L and R channels chn=2,3 S and M channels.\n */\n if (gfc.blocktype_old[chn & 0x01] == Encoder.SHORT_TYPE) {\n var ecb_limit = rpelev * gfc.nb_1[chn][b];\n if (ecb_limit > 0) {\n thr[b] = Math.min(ecb, ecb_limit);\n } else {\n /**\n * <PRE>\n * Robert 071209:\n * Because we don't calculate long block psy when we know a granule\n * should be of short blocks, we don't have any clue how the granule\n * before would have looked like as a long block. So we have to guess\n * a little bit for this END_TYPE block.\n * Most of the time we get away with this sloppyness. (fingers crossed :)\n * The speed increase is worth it.\n * </PRE>\n */\n thr[b] = Math.min(ecb, eb_l[b] * NS_PREECHO_ATT2);\n }\n } else {\n var ecb_limit_2 = rpelev2 * gfc.nb_2[chn][b];\n var ecb_limit_1 = rpelev * gfc.nb_1[chn][b];\n var ecb_limit;\n if (ecb_limit_2 <= 0) {\n ecb_limit_2 = ecb;\n }\n if (ecb_limit_1 <= 0) {\n ecb_limit_1 = ecb;\n }\n if (gfc.blocktype_old[chn & 0x01] == Encoder.NORM_TYPE) {\n ecb_limit = Math.min(ecb_limit_1, ecb_limit_2);\n } else {\n ecb_limit = ecb_limit_1;\n }\n thr[b] = Math.min(ecb, ecb_limit);\n }\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_l[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb_l[b]) {\n thr[b] = eb_l[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n assert(thr[b] >= 0);\n }\n for (; b < Encoder.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_block_type(gfp, uselongblock) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock.short_block_dispensed) {\n uselongblock[chn] = 1;\n }\n if (gfp.short_blocks == ShortBlock.short_block_forced) {\n uselongblock[chn] = 0;\n }\n }\n }\n\n function vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n var blocktype = Encoder.NORM_TYPE;\n /* disable short blocks */\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE)\n blocktype = Encoder.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype = Encoder.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype;\n // save for next call to l3psy_anal\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function vbrpsy_compute_MS_thresholds(eb, thr, cb_mld, ath_cb, athadjust, msfix, n) {\n var msfix2 = msfix * 2;\n var athlower = msfix > 0 ? Math.pow(10, athadjust) : 1;\n var rside, rmid;\n for (var b = 0; b < n; ++b) {\n var ebM = eb[2][b];\n var ebS = eb[3][b];\n var thmL = thr[0][b];\n var thmR = thr[1][b];\n var thmM = thr[2][b];\n var thmS = thr[3][b];\n\n /* use this fix if L & R masking differs by 2db or less */\n if (thmL <= 1.58 * thmR && thmR <= 1.58 * thmL) {\n var mld_m = cb_mld[b] * ebS;\n var mld_s = cb_mld[b] * ebM;\n rmid = Math.max(thmM, Math.min(thmS, mld_m));\n rside = Math.max(thmS, Math.min(thmM, mld_s));\n } else {\n rmid = thmM;\n rside = thmS;\n }\n if (msfix > 0) {\n /***************************************************************/\n /* Adjust M/S maskings if user set \"msfix\" */\n /***************************************************************/\n /* Naoki Shibata 2000 */\n var thmLR, thmMS;\n var ath = ath_cb[b] * athlower;\n thmLR = Math.min(Math.max(thmL, ath), Math.max(thmR, ath));\n thmM = Math.max(rmid, ath);\n thmS = Math.max(rside, ath);\n thmMS = thmM + thmS;\n if (thmMS > 0 && (thmLR * msfix2) < thmMS) {\n var f = thmLR * msfix2 / thmMS;\n thmM *= f;\n thmS *= f;\n assert(thmMS > 0);\n }\n rmid = Math.min(thmM, rmid);\n rside = Math.min(thmS, rside);\n }\n if (rmid > ebM) {\n rmid = ebM;\n }\n if (rside > ebS) {\n rside = ebS;\n }\n thr[2][b] = rmid;\n thr[3][b] = rside;\n }\n }\n\n this.L3psycho_anal_vbr = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_l;\n var wsamp_s;\n var fftenergy = new_float(Encoder.HBLKSIZE);\n var fftenergy_s = new_float_n([3, Encoder.HBLKSIZE_s]);\n var wsamp_L = new_float_n([2, Encoder.BLKSIZE]);\n var wsamp_S = new_float_n([2, 3, Encoder.BLKSIZE_s]);\n var eb = new_float_n([4, Encoder.CBANDS]), thr = new_float_n([4, Encoder.CBANDS]);\n var sub_short_factor = new_float_n([4, 3]);\n var pcfact = 0.6;\n\n /* block type */\n var ns_attacks = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0],\n [0, 0, 0, 0]];\n var uselongblock = new_int(2);\n\n /* usual variables like loop indices, etc.. */\n\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4\n : gfc.channels_out;\n\n vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio,\n masking_MS_ratio, energy, sub_short_factor, ns_attacks,\n uselongblock);\n\n vbrpsy_compute_block_type(gfp, uselongblock);\n\n /* LONG BLOCK CASE */\n {\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n wsamp_l = wsamp_L;\n vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out,\n fftenergy, wsamp_l, ch01);\n\n vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn,\n fftenergy);\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn],\n chn);\n } else {\n vbrpsy_skip_masking_l(gfc, chn);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 2) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_l,\n gfc.ATH.cb_l, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_l);\n }\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n if (uselongblock[ch01] != 0) {\n convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn);\n }\n }\n }\n\n /* SHORT BLOCKS CASE */\n {\n for (var sblock = 0; sblock < 3; sblock++) {\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_skip_masking_s(gfc, chn, sblock);\n } else {\n /* compute masking thresholds for short blocks */\n wsamp_s = wsamp_S;\n vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock,\n fftenergy_s, wsamp_s, ch01);\n vbrpsy_compute_masking_s(gfp, fftenergy_s, eb[chn],\n thr[chn], chn, sblock);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 0) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_s,\n gfc.ATH.cb_s, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_s);\n }\n /* L/R channel */\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n if (0 == uselongblock[ch01]) {\n convert_partition2scalefac_s(gfc, eb[chn], thr[chn],\n chn, sblock);\n }\n }\n }\n\n /**** short block pre-echo control ****/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n continue;\n }\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n var new_thmm = new_float(3);\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmm = gfc.thm[chn].s[sb][sblock];\n thmm *= NS_PREECHO_ATT0;\n\n if (ns_attacks[chn][sblock] >= 2\n || ns_attacks[chn][sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n } else if (ns_attacks[chn][sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[chn][sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n thmm *= sub_short_factor[chn][sblock];\n\n new_thmm[sblock] = thmm;\n }\n for (var sblock = 0; sblock < 3; sblock++) {\n gfc.thm[chn].s[sb][sblock] = new_thmm[sblock];\n }\n }\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[chn][2];\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ppe;\n var ppePos;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder.NORM_TYPE;\n if (blocktype_d[0] == Encoder.SHORT_TYPE\n || blocktype_d[1] == Encoder.SHORT_TYPE)\n type = Encoder.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder.SHORT_TYPE) {\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n } else {\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n }\n\n if (gfp.analysis) {\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n }\n }\n return 0;\n }\n\n function s3_func_x(bark, hf_slope) {\n var tempx = bark, tempy;\n\n if (tempx >= 0) {\n tempy = -tempx * 27;\n } else {\n tempy = tempx * hf_slope;\n }\n if (tempy <= -72.0) {\n return 0;\n }\n return Math.exp(tempy * LN_TO_LOG10);\n }\n\n function norm_s3_func_x(hf_slope) {\n var lim_a = 0, lim_b = 0;\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x -= 1)\n ;\n l = x;\n h = 0;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n h = x;\n } else {\n l = x;\n }\n }\n lim_a = l;\n }\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x += 1)\n ;\n l = 0;\n h = x;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n l = x;\n } else {\n h = x;\n }\n }\n lim_b = h;\n }\n {\n var sum = 0;\n var m = 1000;\n var i;\n for (i = 0; i <= m; ++i) {\n var x = lim_a + i * (lim_b - lim_a) / m;\n var y = s3_func_x(x, hf_slope);\n sum += y;\n }\n {\n var norm = (m + 1) / (sum * (lim_b - lim_a));\n /* printf( \"norm = %lf\\n\",norm); */\n return norm;\n }\n }\n }\n\n /**\n * The spreading function. Values returned in units of energy\n */\n function s3_func(bark) {\n var tempx, x, tempy, temp;\n tempx = bark;\n if (tempx >= 0)\n tempx *= 3;\n else\n tempx *= 1.5;\n\n if (tempx >= 0.5 && tempx <= 2.5) {\n temp = tempx - 0.5;\n x = 8.0 * (temp * temp - 2.0 * temp);\n } else\n x = 0.0;\n tempx += 0.474;\n tempy = 15.811389 + 7.5 * tempx - 17.5\n * Math.sqrt(1.0 + tempx * tempx);\n\n if (tempy <= -60.0)\n return 0.0;\n\n tempx = Math.exp((x + tempy) * LN_TO_LOG10);\n\n /**\n * <PRE>\n * Normalization. The spreading function should be normalized so that:\n * +inf\n * /\n * | s3 [ bark ] d(bark) = 1\n * /\n * -inf\n * </PRE>\n */\n tempx /= .6609193;\n return tempx;\n }\n\n /**\n * see for example \"Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7\n */\n function freq2bark(freq) {\n /* input: freq in hz output: barks */\n if (freq < 0)\n freq = 0;\n freq = freq * 0.001;\n return 13.0 * Math.atan(.76 * freq) + 3.5\n * Math.atan(freq * freq / (7.5 * 7.5));\n }\n\n function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) {\n var b_frq = new_float(Encoder.CBANDS + 1);\n var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192);\n var partition = new_int(Encoder.HBLKSIZE);\n var i;\n sfreq /= blksize;\n var j = 0;\n var ni = 0;\n /* compute numlines, the number of spectral lines in each partition band */\n /* each partition band should be about DELBARK wide. */\n for (i = 0; i < Encoder.CBANDS; i++) {\n var bark1;\n var j2;\n bark1 = freq2bark(sfreq * j);\n\n b_frq[i] = sfreq * j;\n\n for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK\n && j2 <= blksize / 2; j2++)\n ;\n\n numlines[i] = j2 - j;\n ni = i + 1;\n\n while (j < j2) {\n assert(j < Encoder.HBLKSIZE);\n partition[j++] = i;\n }\n if (j > blksize / 2) {\n j = blksize / 2;\n ++i;\n break;\n }\n }\n assert(i < Encoder.CBANDS);\n b_frq[i] = sfreq * j;\n\n for (var sfb = 0; sfb < sbmax; sfb++) {\n var i1, i2, start, end;\n var arg;\n start = scalepos[sfb];\n end = scalepos[sfb + 1];\n\n i1 = 0 | Math.floor(.5 + deltafreq * (start - .5));\n if (i1 < 0)\n i1 = 0;\n i2 = 0 | Math.floor(.5 + deltafreq * (end - .5));\n\n if (i2 > blksize / 2)\n i2 = blksize / 2;\n\n bm[sfb] = (partition[i1] + partition[i2]) / 2;\n bo[sfb] = partition[i2];\n var f_tmp = sample_freq_frac * end;\n /*\n * calculate how much of this band belongs to current scalefactor\n * band\n */\n bo_w[sfb] = (f_tmp - b_frq[bo[sfb]])\n / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]);\n if (bo_w[sfb] < 0) {\n bo_w[sfb] = 0;\n } else {\n if (bo_w[sfb] > 1) {\n bo_w[sfb] = 1;\n }\n }\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n arg = freq2bark(sfreq * scalepos[sfb] * deltafreq);\n arg = ( Math.min(arg, 15.5) / 15.5);\n\n mld[sfb] = Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /* compute bark values of each critical band */\n j = 0;\n for (var k = 0; k < ni; k++) {\n var w = numlines[k];\n var bark1, bark2;\n\n bark1 = freq2bark(sfreq * (j));\n bark2 = freq2bark(sfreq * (j + w - 1));\n bval[k] = .5 * (bark1 + bark2);\n\n bark1 = freq2bark(sfreq * (j - .5));\n bark2 = freq2bark(sfreq * (j + w - .5));\n bval_width[k] = bark2 - bark1;\n j += w;\n }\n\n return ni;\n }\n\n function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) {\n var s3 = new_float_n([Encoder.CBANDS, Encoder.CBANDS]);\n /*\n * The s3 array is not linear in the bark scale.\n *\n * bval[x] should be used to get the bark value.\n */\n var j;\n var numberOfNoneZero = 0;\n\n /**\n * <PRE>\n * s[i][j], the value of the spreading function,\n * centered at band j (masker), for band i (maskee)\n *\n * i.e.: sum over j to spread into signal barkval=i\n * NOTE: i and j are used opposite as in the ISO docs\n * </PRE>\n */\n if (use_old_s3) {\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n var v = s3_func(bval[i] - bval[j]) * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n } else {\n for (j = 0; j < npart; j++) {\n var hf_slope = 15 + Math.min(21 / bval[j], 12);\n var s3_x_norm = norm_s3_func_x(hf_slope);\n for (var i = 0; i < npart; i++) {\n var v = s3_x_norm\n * s3_func_x(bval[i] - bval[j], hf_slope)\n * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n }\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][0] = j;\n\n for (j = npart - 1; j > 0; j--) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][1] = j;\n numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1);\n }\n\n var p = new_float(numberOfNoneZero);\n var k = 0;\n for (var i = 0; i < npart; i++)\n for (j = s3ind[i][0]; j <= s3ind[i][1]; j++)\n p[k++] = s3[i][j];\n\n return p;\n }\n\n function stereo_demask(f) {\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n var arg = freq2bark(f);\n arg = (Math.min(arg, 15.5) / 15.5);\n\n return Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /**\n * NOTE: the bitrate reduction from the inter-channel masking effect is low\n * compared to the chance of getting annyoing artefacts. L3psycho_anal_vbr\n * does not use this feature. (Robert 071216)\n */\n this.psymodel_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var i;\n var useOldS3 = true;\n var bvl_a = 13, bvl_b = 24;\n var snr_l_a = 0, snr_l_b = 0;\n var snr_s_a = -8.25, snr_s_b = -4.5;\n var bval = new_float(Encoder.CBANDS);\n var bval_width = new_float(Encoder.CBANDS);\n var norm = new_float(Encoder.CBANDS);\n var sfreq = gfp.out_samplerate;\n\n switch (gfp.experimentalZ) {\n default:\n case 0:\n useOldS3 = true;\n break;\n case 1:\n useOldS3 = (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) ? false\n : true;\n break;\n case 2:\n useOldS3 = false;\n break;\n case 3:\n bvl_a = 8;\n snr_l_a = -1.75;\n snr_l_b = -0.0125;\n snr_s_a = -8.25;\n snr_s_b = -2.25;\n break;\n }\n gfc.ms_ener_ratio_old = .25;\n gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder.NORM_TYPE;\n // the vbr header is long blocks\n\n for (i = 0; i < 4; ++i) {\n for (var j = 0; j < Encoder.CBANDS; ++j) {\n gfc.nb_1[i][j] = 1e20;\n gfc.nb_2[i][j] = 1e20;\n gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1.0;\n }\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n gfc.en[i].l[sb] = 1e20;\n gfc.thm[i].l[sb] = 1e20;\n }\n for (var j = 0; j < 3; ++j) {\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n gfc.en[i].s[sb][j] = 1e20;\n gfc.thm[i].s[sb][j] = 1e20;\n }\n gfc.nsPsy.lastAttacks[i] = 0;\n }\n for (var j = 0; j < 9; j++)\n gfc.nsPsy.last_en_subshort[i][j] = 10.;\n }\n\n /* init. for loudness approx. -jd 2001 mar 27 */\n gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0.0;\n\n /*************************************************************************\n * now compute the psychoacoustic model specific constants\n ************************************************************************/\n /* compute numlines, bo, bm, bval, bval_width, mld */\n\n gfc.npart_l = init_numline(gfc.numlines_l, gfc.bo_l, gfc.bm_l, bval,\n bval_width, gfc.mld_l, gfc.PSY.bo_l_weight, sfreq,\n Encoder.BLKSIZE, gfc.scalefac_band.l, Encoder.BLKSIZE\n / (2.0 * 576), Encoder.SBMAX_l);\n assert(gfc.npart_l < Encoder.CBANDS);\n /* compute the spreading function */\n for (i = 0; i < gfc.npart_l; i++) {\n var snr = snr_l_a;\n if (bval[i] >= bvl_a) {\n snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n if (gfc.numlines_l[i] > 0) {\n gfc.rnumlines_l[i] = 1.0 / gfc.numlines_l[i];\n } else {\n gfc.rnumlines_l[i] = 0;\n }\n }\n gfc.s3_ll = init_s3_values(gfc.s3ind, gfc.npart_l, bval, bval_width,\n norm, useOldS3);\n\n /* compute long block specific values, ATH and MINVAL */\n var j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var x;\n\n /* ATH */\n x = Float.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_l[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder.BLKSIZE);\n var level;\n /*\n * ATH below 100 Hz constant, not further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_l[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_l[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n /*\n * FIXME: it does work to reduce low-freq problems in S53-Wind-Sax\n * and lead-voice samples, but introduces some 3 kbps bit bloat too.\n * TODO: Further refinement of the shape of this hack.\n */\n x = -20 + bval[i] * 20 / 10;\n if (x > 6) {\n x = 100;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8.;\n gfc.minval_l[i] = (Math.pow(10.0, x / 10.) * gfc.numlines_l[i]);\n }\n\n /************************************************************************\n * do the same things for short blocks\n ************************************************************************/\n gfc.npart_s = init_numline(gfc.numlines_s, gfc.bo_s, gfc.bm_s, bval,\n bval_width, gfc.mld_s, gfc.PSY.bo_s_weight, sfreq,\n Encoder.BLKSIZE_s, gfc.scalefac_band.s, Encoder.BLKSIZE_s\n / (2.0 * 192), Encoder.SBMAX_s);\n assert(gfc.npart_s < Encoder.CBANDS);\n\n /* SNR formula. short block is normalized by SNR. is it still right ? */\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var x;\n var snr = snr_s_a;\n if (bval[i] >= bvl_a) {\n snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n\n /* ATH */\n x = Float.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_s[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder.BLKSIZE_s);\n var level;\n /* freq = Min(.1,freq); */\n /*\n * ATH below 100 Hz constant, not\n * further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_s[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_s[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n x = (-7.0 + bval[i] * 7.0 / 12.0);\n if (bval[i] > 12) {\n x *= 1 + Math.log(1 + x) * 3.1;\n }\n if (bval[i] < 12) {\n x *= 1 + Math.log(1 - x) * 2.3;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8;\n gfc.minval_s[i] = Math.pow(10.0, x / 10)\n * gfc.numlines_s[i];\n }\n\n gfc.s3_ss = init_s3_values(gfc.s3ind_s, gfc.npart_s, bval, bval_width,\n norm, useOldS3);\n\n init_mask_add_max_values();\n fft.init_fft(gfc);\n\n /* setup temporal masking */\n gfc.decay = Math.exp(-1.0 * LOG10\n / (temporalmask_sustain_sec * sfreq / 192.0));\n\n {\n var msfix;\n msfix = NS_MSFIX;\n if ((gfp.exp_nspsytune & 2) != 0)\n msfix = 1.0;\n if (Math.abs(gfp.msfix) > 0.0)\n msfix = gfp.msfix;\n gfp.msfix = msfix;\n\n /*\n * spread only from npart_l bands. Normally, we use the spreading\n * function to convolve from npart_l down to npart_l bands\n */\n for (var b = 0; b < gfc.npart_l; b++)\n if (gfc.s3ind[b][1] > gfc.npart_l - 1)\n gfc.s3ind[b][1] = gfc.npart_l - 1;\n }\n\n /*\n * prepare for ATH auto adjustment: we want to decrease the ATH by 12 dB\n * per second\n */\n var frame_duration = (576. * gfc.mode_gr / sfreq);\n gfc.ATH.decay = Math.pow(10., -12. / 10. * frame_duration);\n gfc.ATH.adjust = 0.01;\n /* minimum, for leading low loudness */\n gfc.ATH.adjustLimit = 1.0;\n /* on lead, allow adjust up to maximum */\n\n assert(gfc.bo_l[Encoder.SBMAX_l - 1] <= gfc.npart_l);\n assert(gfc.bo_s[Encoder.SBMAX_s - 1] <= gfc.npart_s);\n\n if (gfp.ATHtype != -1) {\n /* compute equal loudness weights (eql_w) */\n var freq;\n var freq_inc = gfp.out_samplerate\n / (Encoder.BLKSIZE);\n var eql_balance = 0.0;\n freq = 0.0;\n for (i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n /* convert ATH dB to relative power (not dB) */\n /* to determine eql_w */\n freq += freq_inc;\n gfc.ATH.eql_w[i] = 1. / Math.pow(10, this.ATHformula(freq, gfp) / 10);\n eql_balance += gfc.ATH.eql_w[i];\n }\n eql_balance = 1.0 / eql_balance;\n for (i = Encoder.BLKSIZE / 2; --i >= 0;) { /* scale weights */\n gfc.ATH.eql_w[i] *= eql_balance;\n }\n }\n {\n for (var b = j = 0; b < gfc.npart_s; ++b) {\n for (i = 0; i < gfc.numlines_s[b]; ++i) {\n ++j;\n }\n }\n assert(j == 129);\n for (var b = j = 0; b < gfc.npart_l; ++b) {\n for (i = 0; i < gfc.numlines_l[b]; ++i) {\n ++j;\n }\n }\n assert(j == 513);\n }\n j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1.0 * Encoder.BLKSIZE);\n gfc.mld_cb_l[i] = stereo_demask(freq);\n j += gfc.numlines_l[i];\n }\n for (; i < Encoder.CBANDS; ++i) {\n gfc.mld_cb_l[i] = 1;\n }\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1.0 * Encoder.BLKSIZE_s);\n gfc.mld_cb_s[i] = stereo_demask(freq);\n j += gfc.numlines_s[i];\n }\n for (; i < Encoder.CBANDS; ++i) {\n gfc.mld_cb_s[i] = 1;\n }\n return 0;\n }\n\n /**\n * Those ATH formulas are returning their minimum value for input = -1\n */\n function ATHformula_GB(f, value) {\n /**\n * <PRE>\n * from Painter & Spanias\n * modified by Gabriel Bouvigne to better fit the reality\n * ath = 3.640 * pow(f,-0.8)\n * - 6.800 * exp(-0.6*pow(f-3.4,2.0))\n * + 6.000 * exp(-0.15*pow(f-8.7,2.0))\n * + 0.6* 0.001 * pow(f,4.0);\n *\n *\n * In the past LAME was using the Painter &Spanias formula.\n * But we had some recurrent problems with HF content.\n * We measured real ATH values, and found the older formula\n * to be inaccurate in the higher part. So we made this new\n * formula and this solved most of HF problematic test cases.\n * The tradeoff is that in VBR mode it increases a lot the\n * bitrate.\n * </PRE>\n */\n\n /*\n * This curve can be adjusted according to the VBR scale: it adjusts\n * from something close to Painter & Spanias on V9 up to Bouvigne's\n * formula for V0. This way the VBR bitrate is more balanced according\n * to the -V value.\n */\n\n // the following Hack allows to ask for the lowest value\n if (f < -.3)\n f = 3410;\n\n // convert to khz\n f /= 1000;\n f = Math.max(0.1, f);\n var ath = 3.640 * Math.pow(f, -0.8) - 6.800\n * Math.exp(-0.6 * Math.pow(f - 3.4, 2.0)) + 6.000\n * Math.exp(-0.15 * Math.pow(f - 8.7, 2.0))\n + (0.6 + 0.04 * value) * 0.001 * Math.pow(f, 4.0);\n return ath;\n }\n\n this.ATHformula = function (f, gfp) {\n var ath;\n switch (gfp.ATHtype) {\n case 0:\n ath = ATHformula_GB(f, 9);\n break;\n case 1:\n // over sensitive, should probably be removed\n ath = ATHformula_GB(f, -1);\n break;\n case 2:\n ath = ATHformula_GB(f, 0);\n break;\n case 3:\n // modification of GB formula by Roel\n ath = ATHformula_GB(f, 1) + 6;\n break;\n case 4:\n ath = ATHformula_GB(f, gfp.ATHcurve);\n break;\n default:\n ath = ATHformula_GB(f, 0);\n break;\n }\n return ath;\n }\n\n}\n\nmodule.exports = PsyModel;\n","var MPEGMode = require('./MPEGMode.js');\n\nfunction LameGlobalFlags() {\n\n this.class_id = 0;\n\n /* input description */\n\n /**\n * number of samples. default=-1\n */\n this.num_samples = 0;\n /**\n * input number of channels. default=2\n */\n this.num_channels = 0;\n /**\n * input_samp_rate in Hz. default=44.1 kHz\n */\n this.in_samplerate = 0;\n /**\n * output_samp_rate. default: LAME picks best value at least not used for\n * MP3 decoding: Remember 44.1 kHz MP3s and AC97\n */\n this.out_samplerate = 0;\n /**\n * scale input by this amount before encoding at least not used for MP3\n * decoding\n */\n this.scale = 0.;\n /**\n * scale input of channel 0 (left) by this amount before encoding\n */\n this.scale_left = 0.;\n /**\n * scale input of channel 1 (right) by this amount before encoding\n */\n this.scale_right = 0.;\n\n /* general control params */\n /**\n * collect data for a MP3 frame analyzer?\n */\n this.analysis = false;\n /**\n * add Xing VBR tag?\n */\n this.bWriteVbrTag = false;\n\n /**\n * use lame/mpglib to convert mp3 to wav\n */\n this.decode_only = false;\n /**\n * quality setting 0=best, 9=worst default=5\n */\n this.quality = 0;\n /**\n * see enum default = LAME picks best value\n */\n this.mode = MPEGMode.STEREO;\n /**\n * force M/S mode. requires mode=1\n */\n this.force_ms = false;\n /**\n * use free format? default=0\n */\n this.free_format = false;\n /**\n * find the RG value? default=0\n */\n this.findReplayGain = false;\n /**\n * decode on the fly? default=0\n */\n this.decode_on_the_fly = false;\n /**\n * 1 (default) writes ID3 tags, 0 not\n */\n this.write_id3tag_automatic = false;\n\n /*\n * set either brate>0 or compression_ratio>0, LAME will compute the value of\n * the variable not set. Default is compression_ratio = 11.025\n */\n /**\n * bitrate\n */\n this.brate = 0;\n /**\n * sizeof(wav file)/sizeof(mp3 file)\n */\n this.compression_ratio = 0.;\n\n /* frame params */\n /**\n * mark as copyright. default=0\n */\n this.copyright = 0;\n /**\n * mark as original. default=1\n */\n this.original = 0;\n /**\n * the MP3 'private extension' bit. Meaningless\n */\n this.extension = 0;\n /**\n * Input PCM is emphased PCM (for instance from one of the rarely emphased\n * CDs), it is STRONGLY not recommended to use this, because psycho does not\n * take it into account, and last but not least many decoders don't care\n * about these bits\n */\n this.emphasis = 0;\n /**\n * use 2 bytes per frame for a CRC checksum. default=0\n */\n this.error_protection = 0;\n /**\n * enforce ISO spec as much as possible\n */\n this.strict_ISO = false;\n\n /**\n * use bit reservoir?\n */\n this.disable_reservoir = false;\n\n /* quantization/noise shaping */\n this.quant_comp = 0;\n this.quant_comp_short = 0;\n this.experimentalY = false;\n this.experimentalZ = 0;\n this.exp_nspsytune = 0;\n\n this.preset = 0;\n\n /* VBR control */\n this.VBR = null;\n /**\n * Range [0,...,1[\n */\n this.VBR_q_frac = 0.;\n /**\n * Range [0,...,9]\n */\n this.VBR_q = 0;\n this.VBR_mean_bitrate_kbps = 0;\n this.VBR_min_bitrate_kbps = 0;\n this.VBR_max_bitrate_kbps = 0;\n /**\n * strictly enforce VBR_min_bitrate normaly, it will be violated for analog\n * silence\n */\n this.VBR_hard_min = 0;\n\n /* resampling and filtering */\n\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.lowpassfreq = 0;\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.highpassfreq = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.lowpasswidth = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.highpasswidth = 0;\n\n /*\n * psycho acoustics and other arguments which you should not change unless\n * you know what you are doing\n */\n\n this.maskingadjust = 0.;\n this.maskingadjust_short = 0.;\n /**\n * only use ATH\n */\n this.ATHonly = false;\n /**\n * only use ATH for short blocks\n */\n this.ATHshort = false;\n /**\n * disable ATH\n */\n this.noATH = false;\n /**\n * select ATH formula\n */\n this.ATHtype = 0;\n /**\n * change ATH formula 4 shape\n */\n this.ATHcurve = 0.;\n /**\n * lower ATH by this many db\n */\n this.ATHlower = 0.;\n /**\n * select ATH auto-adjust scheme\n */\n this.athaa_type = 0;\n /**\n * select ATH auto-adjust loudness calc\n */\n this.athaa_loudapprox = 0;\n /**\n * dB, tune active region of auto-level\n */\n this.athaa_sensitivity = 0.;\n this.short_blocks = null;\n /**\n * use temporal masking effect\n */\n this.useTemporal = false;\n this.interChRatio = 0.;\n /**\n * Naoki's adjustment of Mid/Side maskings\n */\n this.msfix = 0.;\n\n /**\n * 0 off, 1 on\n */\n this.tune = false;\n /**\n * used to pass values for debugging and stuff\n */\n this.tune_value_a = 0.;\n\n /************************************************************************/\n /* internal variables, do not set... */\n /* provided because they may be of use to calling application */\n /************************************************************************/\n\n /**\n * 0=MPEG-2/2.5 1=MPEG-1\n */\n this.version = 0;\n this.encoder_delay = 0;\n /**\n * number of samples of padding appended to input\n */\n this.encoder_padding = 0;\n this.framesize = 0;\n /**\n * number of frames encoded\n */\n this.frameNum = 0;\n /**\n * is this struct owned by calling program or lame?\n */\n this.lame_allocated_gfp = 0;\n /**************************************************************************/\n /* more internal variables are stored in this structure: */\n /**************************************************************************/\n this.internal_flags = null;\n}\n\nmodule.exports = LameGlobalFlags;\n","var Encoder = require('./Encoder.js');\n\nvar L3Side = {};\n\n\n\t/**\n\t * max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8)\n\t */\nL3Side.SFBMAX = (Encoder.SBMAX_s * 3);\n\nmodule.exports = L3Side;\n","//package mp3;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar L3Side = require('./L3Side.js');\n\nfunction GrInfo() {\n //float xr[] = new float[576];\n this.xr = new_float(576);\n //int l3_enc[] = new int[576];\n this.l3_enc = new_int(576);\n //int scalefac[] = new int[L3Side.SFBMAX];\n this.scalefac = new_int(L3Side.SFBMAX);\n this.xrpow_max = 0.;\n\n this.part2_3_length = 0;\n this.big_values = 0;\n this.count1 = 0;\n this.global_gain = 0;\n this.scalefac_compress = 0;\n this.block_type = 0;\n this.mixed_block_flag = 0;\n this.table_select = new_int(3);\n this.subblock_gain = new_int(3 + 1);\n this.region0_count = 0;\n this.region1_count = 0;\n this.preflag = 0;\n this.scalefac_scale = 0;\n this.count1table_select = 0;\n\n this.part2_length = 0;\n this.sfb_lmax = 0;\n this.sfb_smin = 0;\n this.psy_lmax = 0;\n this.sfbmax = 0;\n this.psymax = 0;\n this.sfbdivide = 0;\n this.width = new_int(L3Side.SFBMAX);\n this.window = new_int(L3Side.SFBMAX);\n this.count1bits = 0;\n /**\n * added for LSF\n */\n this.sfb_partition_table = null;\n this.slen = new_int(4);\n\n this.max_nonzero_coeff = 0;\n\n var self = this;\n function clone_int(array) {\n return new Int32Array(array);\n }\n function clone_float(array) {\n return new Float32Array(array);\n }\n this.assign = function (other) {\n self.xr = clone_float(other.xr); //.slice(0); //clone();\n self.l3_enc = clone_int(other.l3_enc); //.slice(0); //clone();\n self.scalefac = clone_int(other.scalefac);//.slice(0); //clone();\n self.xrpow_max = other.xrpow_max;\n\n self.part2_3_length = other.part2_3_length;\n self.big_values = other.big_values;\n self.count1 = other.count1;\n self.global_gain = other.global_gain;\n self.scalefac_compress = other.scalefac_compress;\n self.block_type = other.block_type;\n self.mixed_block_flag = other.mixed_block_flag;\n self.table_select = clone_int(other.table_select);//.slice(0); //clone();\n self.subblock_gain = clone_int(other.subblock_gain); //.slice(0); //.clone();\n self.region0_count = other.region0_count;\n self.region1_count = other.region1_count;\n self.preflag = other.preflag;\n self.scalefac_scale = other.scalefac_scale;\n self.count1table_select = other.count1table_select;\n\n self.part2_length = other.part2_length;\n self.sfb_lmax = other.sfb_lmax;\n self.sfb_smin = other.sfb_smin;\n self.psy_lmax = other.psy_lmax;\n self.sfbmax = other.sfbmax;\n self.psymax = other.psymax;\n self.sfbdivide = other.sfbdivide;\n self.width = clone_int(other.width); //.slice(0); //.clone();\n self.window = clone_int(other.window); //.slice(0); //.clone();\n self.count1bits = other.count1bits;\n\n self.sfb_partition_table = other.sfb_partition_table.slice(0); //.clone();\n self.slen = clone_int(other.slen); //.slice(0); //.clone();\n self.max_nonzero_coeff = other.max_nonzero_coeff;\n }\n}\n\nmodule.exports = GrInfo;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar GrInfo = require('./GrInfo.js');\n\nfunction IIISideInfo() {\n this.tt = [[null, null], [null, null]];\n this.main_data_begin = 0;\n this.private_bits = 0;\n this.resvDrain_pre = 0;\n this.resvDrain_post = 0;\n this.scfsi = [new_int(4), new_int(4)];\n\n for (var gr = 0; gr < 2; gr++) {\n for (var ch = 0; ch < 2; ch++) {\n this.tt[gr][ch] = new GrInfo();\n }\n }\n}\n\nmodule.exports = IIISideInfo;\n","//package mp3;\n\n/**\n * Layer III side information.\n *\n * @author Ken\n *\n */\n\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\nfunction ScaleFac(arrL, arrS, arr21, arr12) {\n\n this.l = new_int(1 + Encoder.SBMAX_l);\n this.s = new_int(1 + Encoder.SBMAX_s);\n this.psfb21 = new_int(1 + Encoder.PSFB21);\n this.psfb12 = new_int(1 + Encoder.PSFB12);\n var l = this.l;\n var s = this.s;\n\n if (arguments.length == 4) {\n //public ScaleFac(final int[] arrL, final int[] arrS, final int[] arr21,\n // final int[] arr12) {\n this.arrL = arguments[0];\n this.arrS = arguments[1];\n this.arr21 = arguments[2];\n this.arr12 = arguments[3];\n\n System.arraycopy(this.arrL, 0, l, 0, Math.min(this.arrL.length, this.l.length));\n System.arraycopy(this.arrS, 0, s, 0, Math.min(this.arrS.length, this.s.length));\n System.arraycopy(this.arr21, 0, this.psfb21, 0, Math.min(this.arr21.length, this.psfb21.length));\n System.arraycopy(this.arr12, 0, this.psfb12, 0, Math.min(this.arr12.length, this.psfb12.length));\n }\n}\n\nmodule.exports = ScaleFac;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\n//package mp3;\n\n/**\n * Variables used for --nspsytune\n *\n * @author Ken\n *\n */\nfunction NsPsy() {\n this.last_en_subshort = new_float_n([4, 9]);\n this.lastAttacks = new_int(4);\n this.pefirbuf = new_float(19);\n this.longfact = new_float(Encoder.SBMAX_l);\n this.shortfact = new_float(Encoder.SBMAX_s);\n\n /**\n * short block tuning\n */\n this.attackthre = 0.;\n this.attackthre_s = 0.;\n}\n\nmodule.exports = NsPsy;\n","//package mp3;\n\nfunction VBRSeekInfo() {\n /**\n * What we have seen so far.\n */\n this.sum = 0;\n /**\n * How many frames we have seen in this chunk.\n */\n this.seen = 0;\n /**\n * How many frames we want to collect into one chunk.\n */\n this.want = 0;\n /**\n * Actual position in our bag.\n */\n this.pos = 0;\n /**\n * Size of our bag.\n */\n this.size = 0;\n /**\n * Pointer to our bag.\n */\n this.bag = null;\n this.nVbrNumFrames = 0;\n this.nBytesWritten = 0;\n /* VBR tag data */\n this.TotalFrameSize = 0;\n}\n\nmodule.exports = VBRSeekInfo;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar IIISideInfo = require('./IIISideInfo.js');\nvar ScaleFac = require('./ScaleFac.js');\nvar NsPsy = require('./NsPsy.js');\nvar VBRSeekInfo = require('./VBRSeekInfo.js');\nvar III_psy_xmin = require('./III_psy_xmin.js');\nvar Encoder = require('./Encoder.js');\nvar L3Side = require('./L3Side.js');\n\n\nLameInternalFlags.MFSIZE = (3 * 1152 + Encoder.ENCDELAY - Encoder.MDCTDELAY);\nLameInternalFlags.MAX_HEADER_BUF = 256;\nLameInternalFlags.MAX_BITS_PER_CHANNEL = 4095;\nLameInternalFlags.MAX_BITS_PER_GRANULE = 7680;\nLameInternalFlags.BPC = 320;\n\nfunction LameInternalFlags() {\n var MAX_HEADER_LEN = 40;\n\n\n /********************************************************************\n * internal variables NOT set by calling program, and should not be *\n * modified by the calling program *\n ********************************************************************/\n\n /**\n * Some remarks to the Class_ID field: The Class ID is an Identifier for a\n * pointer to this struct. It is very unlikely that a pointer to\n * lame_global_flags has the same 32 bits in it's structure (large and other\n * special properties, for instance prime).\n *\n * To test that the structure is right and initialized, use: if ( gfc .\n * Class_ID == LAME_ID ) ... Other remark: If you set a flag to 0 for uninit\n * data and 1 for init data, the right test should be \"if (flag == 1)\" and\n * NOT \"if (flag)\". Unintended modification of this element will be\n * otherwise misinterpreted as an init.\n */\n this.Class_ID = 0;\n\n this.lame_encode_frame_init = 0;\n this.iteration_init_init = 0;\n this.fill_buffer_resample_init = 0;\n\n //public float mfbuf[][] = new float[2][MFSIZE];\n this.mfbuf = new_float_n([2, LameInternalFlags.MFSIZE]);\n\n /**\n * granules per frame\n */\n this.mode_gr = 0;\n /**\n * number of channels in the input data stream (PCM or decoded PCM)\n */\n this.channels_in = 0;\n /**\n * number of channels in the output data stream (not used for decoding)\n */\n this.channels_out = 0;\n /**\n * input_samp_rate/output_samp_rate\n */\n //public double resample_ratio;\n this.resample_ratio = 0.;\n\n this.mf_samples_to_encode = 0;\n this.mf_size = 0;\n /**\n * min bitrate index\n */\n this.VBR_min_bitrate = 0;\n /**\n * max bitrate index\n */\n this.VBR_max_bitrate = 0;\n this.bitrate_index = 0;\n this.samplerate_index = 0;\n this.mode_ext = 0;\n\n /* lowpass and highpass filter control */\n /**\n * normalized frequency bounds of passband\n */\n this.lowpass1 = 0.;\n this.lowpass2 = 0.;\n /**\n * normalized frequency bounds of passband\n */\n this.highpass1 = 0.;\n this.highpass2 = 0.;\n\n /**\n * 0 = none 1 = ISO AAC model 2 = allow scalefac_select=1\n */\n this.noise_shaping = 0;\n\n /**\n * 0 = ISO model: amplify all distorted bands<BR>\n * 1 = amplify within 50% of max (on db scale)<BR>\n * 2 = amplify only most distorted band<BR>\n * 3 = method 1 and refine with method 2<BR>\n */\n this.noise_shaping_amp = 0;\n /**\n * 0 = no substep<BR>\n * 1 = use substep shaping at last step(VBR only)<BR>\n * (not implemented yet)<BR>\n * 2 = use substep inside loop<BR>\n * 3 = use substep inside loop and last step<BR>\n */\n this.substep_shaping = 0;\n\n /**\n * 1 = gpsycho. 0 = none\n */\n this.psymodel = 0;\n /**\n * 0 = stop at over=0, all scalefacs amplified or<BR>\n * a scalefac has reached max value<BR>\n * 1 = stop when all scalefacs amplified or a scalefac has reached max value<BR>\n * 2 = stop when all scalefacs amplified\n */\n this.noise_shaping_stop = 0;\n\n /**\n * 0 = no, 1 = yes\n */\n this.subblock_gain = 0;\n /**\n * 0 = no. 1=outside loop 2=inside loop(slow)\n */\n this.use_best_huffman = 0;\n\n /**\n * 0 = stop early after 0 distortion found. 1 = full search\n */\n this.full_outer_loop = 0;\n\n //public IIISideInfo l3_side = new IIISideInfo();\n this.l3_side = new IIISideInfo();\n this.ms_ratio = new_float(2);\n\n /* used for padding */\n /**\n * padding for the current frame?\n */\n this.padding = 0;\n this.frac_SpF = 0;\n this.slot_lag = 0;\n\n /**\n * optional ID3 tags\n */\n //public ID3TagSpec tag_spec;\n this.tag_spec = null;\n this.nMusicCRC = 0;\n\n /* variables used by Quantize */\n //public int OldValue[] = new int[2];\n this.OldValue = new_int(2);\n //public int CurrentStep[] = new int[2];\n this.CurrentStep = new_int(2);\n\n this.masking_lower = 0.;\n //public int bv_scf[] = new int[576];\n this.bv_scf = new_int(576);\n //public int pseudohalf[] = new int[L3Side.SFBMAX];\n this.pseudohalf = new_int(L3Side.SFBMAX);\n\n /**\n * will be set in lame_init_params\n */\n this.sfb21_extra = false;\n\n /* BPC = maximum number of filter convolution windows to precompute */\n //public float[][] inbuf_old = new float[2][];\n this.inbuf_old = new Array(2);\n //public float[][] blackfilt = new float[2 * BPC + 1][];\n this.blackfilt = new Array(2 * LameInternalFlags.BPC + 1);\n //public double itime[] = new double[2];\n this.itime = new_double(2);\n this.sideinfo_len = 0;\n\n /* variables for newmdct.c */\n //public float sb_sample[][][][] = new float[2][2][18][Encoder.SBLIMIT];\n this.sb_sample = new_float_n([2, 2, 18, Encoder.SBLIMIT]);\n this.amp_filter = new_float(32);\n\n /* variables for BitStream */\n\n /**\n * <PRE>\n * mpeg1: buffer=511 bytes smallest frame: 96-38(sideinfo)=58\n * max number of frames in reservoir: 8\n * mpeg2: buffer=255 bytes. smallest frame: 24-23bytes=1\n * with VBR, if you are encoding all silence, it is possible to\n * have 8kbs/24khz frames with 1byte of data each, which means we need\n * to buffer up to 255 headers!\n * </PRE>\n */\n /**\n * also, max_header_buf has to be a power of two\n */\n /**\n * max size of header is 38\n */\n\n function Header() {\n this.write_timing = 0;\n this.ptr = 0;\n //public byte buf[] = new byte[MAX_HEADER_LEN];\n this.buf = new_byte(MAX_HEADER_LEN);\n }\n\n this.header = new Array(LameInternalFlags.MAX_HEADER_BUF);\n\n this.h_ptr = 0;\n this.w_ptr = 0;\n this.ancillary_flag = 0;\n\n /* variables for Reservoir */\n /**\n * in bits\n */\n this.ResvSize = 0;\n /**\n * in bits\n */\n this.ResvMax = 0;\n\n //public ScaleFac scalefac_band = new ScaleFac();\n this.scalefac_band = new ScaleFac();\n\n /* daa from PsyModel */\n /* The static variables \"r\", \"phi_sav\", \"new\", \"old\" and \"oldest\" have */\n /* to be remembered for the unpredictability measure. For \"r\" and */\n /* \"phi_sav\", the first index from the left is the channel select and */\n /* the second index is the \"age\" of the data. */\n this.minval_l = new_float(Encoder.CBANDS);\n this.minval_s = new_float(Encoder.CBANDS);\n this.nb_1 = new_float_n([4, Encoder.CBANDS]);\n this.nb_2 = new_float_n([4, Encoder.CBANDS]);\n this.nb_s1 = new_float_n([4, Encoder.CBANDS]);\n this.nb_s2 = new_float_n([4, Encoder.CBANDS]);\n this.s3_ss = null;\n this.s3_ll = null;\n this.decay = 0.;\n\n //public III_psy_xmin[] thm = new III_psy_xmin[4];\n //public III_psy_xmin[] en = new III_psy_xmin[4];\n this.thm = new Array(4);\n this.en = new Array(4);\n\n /**\n * fft and energy calculation\n */\n this.tot_ener = new_float(4);\n\n /* loudness calculation (for adaptive threshold of hearing) */\n /**\n * loudness^2 approx. per granule and channel\n */\n this.loudness_sq = new_float_n([2, 2]);\n /**\n * account for granule delay of L3psycho_anal\n */\n this.loudness_sq_save = new_float(2);\n\n /**\n * Scale Factor Bands\n */\n this.mld_l = new_float(Encoder.SBMAX_l);\n this.mld_s = new_float(Encoder.SBMAX_s);\n this.bm_l = new_int(Encoder.SBMAX_l);\n this.bo_l = new_int(Encoder.SBMAX_l);\n this.bm_s = new_int(Encoder.SBMAX_s);\n this.bo_s = new_int(Encoder.SBMAX_s);\n this.npart_l = 0;\n this.npart_s = 0;\n\n this.s3ind = new_int_n([Encoder.CBANDS, 2]);\n this.s3ind_s = new_int_n([Encoder.CBANDS, 2]);\n\n this.numlines_s = new_int(Encoder.CBANDS);\n this.numlines_l = new_int(Encoder.CBANDS);\n this.rnumlines_l = new_float(Encoder.CBANDS);\n this.mld_cb_l = new_float(Encoder.CBANDS);\n this.mld_cb_s = new_float(Encoder.CBANDS);\n this.numlines_s_num1 = 0;\n this.numlines_l_num1 = 0;\n\n /* ratios */\n this.pe = new_float(4);\n this.ms_ratio_s_old = 0.;\n this.ms_ratio_l_old = 0.;\n this.ms_ener_ratio_old = 0.;\n\n /**\n * block type\n */\n this.blocktype_old = new_int(2);\n\n /**\n * variables used for --nspsytune\n */\n this.nsPsy = new NsPsy();\n\n /**\n * used for Xing VBR header\n */\n this.VBR_seek_table = new VBRSeekInfo();\n\n /**\n * all ATH related stuff\n */\n //public ATH ATH;\n this.ATH = null;\n\n this.PSY = null;\n\n this.nogap_total = 0;\n this.nogap_current = 0;\n\n /* ReplayGain */\n this.decode_on_the_fly = true;\n this.findReplayGain = true;\n this.findPeakSample = true;\n this.PeakSample = 0.;\n this.RadioGain = 0;\n this.AudiophileGain = 0;\n //public ReplayGain rgdata;\n this.rgdata = null;\n\n /**\n * gain change required for preventing clipping\n */\n this.noclipGainChange = 0;\n /**\n * user-specified scale factor required for preventing clipping\n */\n this.noclipScale = 0.;\n\n /* simple statistics */\n this.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]);\n /**\n * norm/start/short/stop/mixed(short)/sum\n */\n this.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]);\n\n //public PlottingData pinfo;\n //public MPGLib.mpstr_tag hip;\n this.pinfo = null;\n this.hip = null;\n\n this.in_buffer_nsamples = 0;\n //public float[] in_buffer_0;\n //public float[] in_buffer_1;\n this.in_buffer_0 = null;\n this.in_buffer_1 = null;\n\n //public IIterationLoop iteration_loop;\n this.iteration_loop = null;\n\n for (var i = 0; i < this.en.length; i++) {\n this.en[i] = new III_psy_xmin();\n }\n for (var i = 0; i < this.thm.length; i++) {\n this.thm[i] = new III_psy_xmin();\n }\n for (var i = 0; i < this.header.length; i++) {\n this.header[i] = new Header();\n }\n\n}\n\nmodule.exports = LameInternalFlags;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\n\n/**\n * ATH related stuff, if something new ATH related has to be added, please plug\n * it here into the ATH.\n */\nfunction ATH() {\n /**\n * Method for the auto adjustment.\n */\n this.useAdjust = 0;\n /**\n * factor for tuning the (sample power) point below which adaptive threshold\n * of hearing adjustment occurs\n */\n this.aaSensitivityP = 0.;\n /**\n * Lowering based on peak volume, 1 = no lowering.\n */\n this.adjust = 0.;\n /**\n * Limit for dynamic ATH adjust.\n */\n this.adjustLimit = 0.;\n /**\n * Determined to lower x dB each second.\n */\n this.decay = 0.;\n /**\n * Lowest ATH value.\n */\n this.floor = 0.;\n /**\n * ATH for sfbs in long blocks.\n */\n this.l = new_float(Encoder.SBMAX_l);\n /**\n * ATH for sfbs in short blocks.\n */\n this.s = new_float(Encoder.SBMAX_s);\n /**\n * ATH for partitioned sfb21 in long blocks.\n */\n this.psfb21 = new_float(Encoder.PSFB21);\n /**\n * ATH for partitioned sfb12 in short blocks.\n */\n this.psfb12 = new_float(Encoder.PSFB12);\n /**\n * ATH for long block convolution bands.\n */\n this.cb_l = new_float(Encoder.CBANDS);\n /**\n * ATH for short block convolution bands.\n */\n this.cb_s = new_float(Encoder.CBANDS);\n /**\n * Equal loudness weights (based on ATH).\n */\n this.eql_w = new_float(Encoder.BLKSIZE / 2);\n}\n\nmodule.exports = ATH;\n","/*\n * ReplayGainAnalysis - analyzes input samples and give the recommended dB change\n * Copyright (C) 2001 David Robinson and Glen Sawyer\n * Improvements and optimizations added by Frank Klemm, and by Marcel Muller \n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n *\n * concept and filter values by David Robinson (David@Robinson.org)\n * -- blame him if you think the idea is flawed\n * original coding by Glen Sawyer (mp3gain@hotmail.com)\n * -- blame him if you think this runs too slowly, or the coding is otherwise flawed\n *\n * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ )\n * -- credit him for all the _good_ programming ;)\n *\n *\n * For an explanation of the concepts and the basic algorithms involved, go to:\n * http://www.replaygain.org/\n */\n\n/*\n * Here's the deal. Call\n *\n * InitGainAnalysis ( long samplefreq );\n *\n * to initialize everything. Call\n *\n * AnalyzeSamples ( var Float_t* left_samples,\n * var Float_t* right_samples,\n * size_t num_samples,\n * int num_channels );\n *\n * as many times as you want, with as many or as few samples as you want.\n * If mono, pass the sample buffer in through left_samples, leave\n * right_samples NULL, and make sure num_channels = 1.\n *\n * GetTitleGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis().\n *\n * GetAlbumGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * since InitGainAnalysis() was called and finalized with GetTitleGain().\n *\n * Pseudo-code to process an album:\n *\n * Float_t l_samples [4096];\n * Float_t r_samples [4096];\n * size_t num_samples;\n * unsigned int num_songs;\n * unsigned int i;\n *\n * InitGainAnalysis ( 44100 );\n * for ( i = 1; i <= num_songs; i++ ) {\n * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 )\n * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 );\n * fprintf (\"Recommended dB change for song %2d: %+6.2 dB\\n\", i, GetTitleGain() );\n * }\n * fprintf (\"Recommended dB change for whole album: %+6.2 dB\\n\", GetAlbumGain() );\n */\n\n/*\n * So here's the main source of potential code confusion:\n *\n * The filters applied to the incoming samples are IIR filters,\n * meaning they rely on up to <filter order> number of previous samples\n * AND up to <filter order> number of previous filtered samples.\n *\n * I set up the AnalyzeSamples routine to minimize memory usage and interface\n * complexity. The speed isn't compromised too much (I don't think), but the\n * internal complexity is higher than it should be for such a relatively\n * simple routine.\n *\n * Optimization/clarity suggestions are welcome.\n */\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\n/**\n * Table entries per dB\n */\nGainAnalysis.STEPS_per_dB = 100.;\n/**\n * Table entries for 0...MAX_dB (normal max. values are 70...80 dB)\n */\nGainAnalysis.MAX_dB = 120.;\nGainAnalysis.GAIN_NOT_ENOUGH_SAMPLES = -24601;\nGainAnalysis.GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis.GAIN_ANALYSIS_OK = 1;\nGainAnalysis.INIT_GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis.INIT_GAIN_ANALYSIS_OK = 1;\n\nGainAnalysis.YULE_ORDER = 10;\nGainAnalysis.MAX_ORDER = GainAnalysis.YULE_ORDER;\n\nGainAnalysis.MAX_SAMP_FREQ = 48000;\nGainAnalysis.RMS_WINDOW_TIME_NUMERATOR = 1;\nGainAnalysis.RMS_WINDOW_TIME_DENOMINATOR = 20;\nGainAnalysis.MAX_SAMPLES_PER_WINDOW = ((GainAnalysis.MAX_SAMP_FREQ * GainAnalysis.RMS_WINDOW_TIME_NUMERATOR) / GainAnalysis.RMS_WINDOW_TIME_DENOMINATOR + 1);\n\nfunction GainAnalysis() {\n /**\n * calibration value for 89dB\n */\n var PINK_REF = 64.82;\n\n var YULE_ORDER = GainAnalysis.YULE_ORDER;\n /**\n * percentile which is louder than the proposed level\n */\n var RMS_PERCENTILE = 0.95;\n /**\n * maximum allowed sample frequency [Hz]\n */\n var MAX_SAMP_FREQ = GainAnalysis.MAX_SAMP_FREQ;\n var RMS_WINDOW_TIME_NUMERATOR = GainAnalysis.RMS_WINDOW_TIME_NUMERATOR;\n /**\n * numerator / denominator = time slice size [s]\n */\n var RMS_WINDOW_TIME_DENOMINATOR = GainAnalysis.RMS_WINDOW_TIME_DENOMINATOR;\n /**\n * max. Samples per Time slice\n */\n var MAX_SAMPLES_PER_WINDOW = GainAnalysis.MAX_SAMPLES_PER_WINDOW;\n\n\n var ABYule = [\n [0.03857599435200, -3.84664617118067, -0.02160367184185,\n 7.81501653005538, -0.00123395316851, -11.34170355132042,\n -0.00009291677959, 13.05504219327545, -0.01655260341619,\n -12.28759895145294, 0.02161526843274, 9.48293806319790,\n -0.02074045215285, -5.87257861775999, 0.00594298065125,\n 2.75465861874613, 0.00306428023191, -0.86984376593551,\n 0.00012025322027, 0.13919314567432, 0.00288463683916],\n [0.05418656406430, -3.47845948550071, -0.02911007808948,\n 6.36317777566148, -0.00848709379851, -8.54751527471874,\n -0.00851165645469, 9.47693607801280, -0.00834990904936,\n -8.81498681370155, 0.02245293253339, 6.85401540936998,\n -0.02596338512915, -4.39470996079559, 0.01624864962975,\n 2.19611684890774, -0.00240879051584, -0.75104302451432,\n 0.00674613682247, 0.13149317958808, -0.00187763777362],\n [0.15457299681924, -2.37898834973084, -0.09331049056315,\n 2.84868151156327, -0.06247880153653, -2.64577170229825,\n 0.02163541888798, 2.23697657451713, -0.05588393329856,\n -1.67148153367602, 0.04781476674921, 1.00595954808547,\n 0.00222312597743, -0.45953458054983, 0.03174092540049,\n 0.16378164858596, -0.01390589421898, -0.05032077717131,\n 0.00651420667831, 0.02347897407020, -0.00881362733839],\n [0.30296907319327, -1.61273165137247, -0.22613988682123,\n 1.07977492259970, -0.08587323730772, -0.25656257754070,\n 0.03282930172664, -0.16276719120440, -0.00915702933434,\n -0.22638893773906, -0.02364141202522, 0.39120800788284,\n -0.00584456039913, -0.22138138954925, 0.06276101321749,\n 0.04500235387352, -0.00000828086748, 0.02005851806501,\n 0.00205861885564, 0.00302439095741, -0.02950134983287],\n [0.33642304856132, -1.49858979367799, -0.25572241425570,\n 0.87350271418188, -0.11828570177555, 0.12205022308084,\n 0.11921148675203, -0.80774944671438, -0.07834489609479,\n 0.47854794562326, -0.00469977914380, -0.12453458140019,\n -0.00589500224440, -0.04067510197014, 0.05724228140351,\n 0.08333755284107, 0.00832043980773, -0.04237348025746,\n -0.01635381384540, 0.02977207319925, -0.01760176568150],\n [0.44915256608450, -0.62820619233671, -0.14351757464547,\n 0.29661783706366, -0.22784394429749, -0.37256372942400,\n -0.01419140100551, 0.00213767857124, 0.04078262797139,\n -0.42029820170918, -0.12398163381748, 0.22199650564824,\n 0.04097565135648, 0.00613424350682, 0.10478503600251,\n 0.06747620744683, -0.01863887810927, 0.05784820375801,\n -0.03193428438915, 0.03222754072173, 0.00541907748707],\n [0.56619470757641, -1.04800335126349, -0.75464456939302,\n 0.29156311971249, 0.16242137742230, -0.26806001042947,\n 0.16744243493672, 0.00819999645858, -0.18901604199609,\n 0.45054734505008, 0.30931782841830, -0.33032403314006,\n -0.27562961986224, 0.06739368333110, 0.00647310677246,\n -0.04784254229033, 0.08647503780351, 0.01639907836189,\n -0.03788984554840, 0.01807364323573, -0.00588215443421],\n [0.58100494960553, -0.51035327095184, -0.53174909058578,\n -0.31863563325245, -0.14289799034253, -0.20256413484477,\n 0.17520704835522, 0.14728154134330, 0.02377945217615,\n 0.38952639978999, 0.15558449135573, -0.23313271880868,\n -0.25344790059353, -0.05246019024463, 0.01628462406333,\n -0.02505961724053, 0.06920467763959, 0.02442357316099,\n -0.03721611395801, 0.01818801111503, -0.00749618797172],\n [0.53648789255105, -0.25049871956020, -0.42163034350696,\n -0.43193942311114, -0.00275953611929, -0.03424681017675,\n 0.04267842219415, -0.04678328784242, -0.10214864179676,\n 0.26408300200955, 0.14590772289388, 0.15113130533216,\n -0.02459864859345, -0.17556493366449, -0.11202315195388,\n -0.18823009262115, -0.04060034127000, 0.05477720428674,\n 0.04788665548180, 0.04704409688120, -0.02217936801134]];\n\n var ABButter = [\n [0.98621192462708, -1.97223372919527, -1.97242384925416,\n 0.97261396931306, 0.98621192462708],\n [0.98500175787242, -1.96977855582618, -1.97000351574484,\n 0.97022847566350, 0.98500175787242],\n [0.97938932735214, -1.95835380975398, -1.95877865470428,\n 0.95920349965459, 0.97938932735214],\n [0.97531843204928, -1.95002759149878, -1.95063686409857,\n 0.95124613669835, 0.97531843204928],\n [0.97316523498161, -1.94561023566527, -1.94633046996323,\n 0.94705070426118, 0.97316523498161],\n [0.96454515552826, -1.92783286977036, -1.92909031105652,\n 0.93034775234268, 0.96454515552826],\n [0.96009142950541, -1.91858953033784, -1.92018285901082,\n 0.92177618768381, 0.96009142950541],\n [0.95856916599601, -1.91542108074780, -1.91713833199203,\n 0.91885558323625, 0.95856916599601],\n [0.94597685600279, -1.88903307939452, -1.89195371200558,\n 0.89487434461664, 0.94597685600279]];\n\n\n /**\n * When calling this procedure, make sure that ip[-order] and op[-order]\n * point to real data\n */\n //private void filterYule(final float[] input, int inputPos, float[] output,\n //int outputPos, int nSamples, final float[] kernel) {\n function filterYule(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n /* 1e-10 is a hack to avoid slowdown because of denormals */\n output[outputPos] = 1e-10 + input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4] - output[outputPos - 3]\n * kernel[5] + input[inputPos - 3] * kernel[6]\n - output[outputPos - 4] * kernel[7] + input[inputPos - 4]\n * kernel[8] - output[outputPos - 5] * kernel[9]\n + input[inputPos - 5] * kernel[10] - output[outputPos - 6]\n * kernel[11] + input[inputPos - 6] * kernel[12]\n - output[outputPos - 7] * kernel[13] + input[inputPos - 7]\n * kernel[14] - output[outputPos - 8] * kernel[15]\n + input[inputPos - 8] * kernel[16] - output[outputPos - 9]\n * kernel[17] + input[inputPos - 9] * kernel[18]\n - output[outputPos - 10] * kernel[19]\n + input[inputPos - 10] * kernel[20];\n ++outputPos;\n ++inputPos;\n }\n }\n\n//private void filterButter(final float[] input, int inputPos,\n// float[] output, int outputPos, int nSamples, final float[] kernel) {\n function filterButter(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n output[outputPos] = input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4];\n ++outputPos;\n ++inputPos;\n }\n }\n\n /**\n * @return INIT_GAIN_ANALYSIS_OK if successful, INIT_GAIN_ANALYSIS_ERROR if\n * not\n */\n function ResetSampleFrequency(rgData, samplefreq) {\n /* zero out initial values */\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n switch (0 | (samplefreq)) {\n case 48000:\n rgData.reqindex = 0;\n break;\n case 44100:\n rgData.reqindex = 1;\n break;\n case 32000:\n rgData.reqindex = 2;\n break;\n case 24000:\n rgData.reqindex = 3;\n break;\n case 22050:\n rgData.reqindex = 4;\n break;\n case 16000:\n rgData.reqindex = 5;\n break;\n case 12000:\n rgData.reqindex = 6;\n break;\n case 11025:\n rgData.reqindex = 7;\n break;\n case 8000:\n rgData.reqindex = 8;\n break;\n default:\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.sampleWindow = 0 | ((samplefreq * RMS_WINDOW_TIME_NUMERATOR\n + RMS_WINDOW_TIME_DENOMINATOR - 1) / RMS_WINDOW_TIME_DENOMINATOR);\n\n rgData.lsum = 0.;\n rgData.rsum = 0.;\n rgData.totsamp = 0;\n\n Arrays.ill(rgData.A, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n }\n\n this.InitGainAnalysis = function (rgData, samplefreq) {\n if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) {\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.linpre = MAX_ORDER;\n rgData.rinpre = MAX_ORDER;\n rgData.lstep = MAX_ORDER;\n rgData.rstep = MAX_ORDER;\n rgData.lout = MAX_ORDER;\n rgData.rout = MAX_ORDER;\n\n Arrays.fill(rgData.B, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n };\n\n /**\n * square\n */\n function fsqr(d) {\n return d * d;\n }\n\n this.AnalyzeSamples = function (rgData, left_samples, left_samplesPos, right_samples, right_samplesPos, num_samples,\n num_channels) {\n var curleft;\n var curleftBase;\n var curright;\n var currightBase;\n var batchsamples;\n var cursamples;\n var cursamplepos;\n\n if (num_samples == 0)\n return GAIN_ANALYSIS_OK;\n\n cursamplepos = 0;\n batchsamples = num_samples;\n\n switch (num_channels) {\n case 1:\n right_samples = left_samples;\n right_samplesPos = left_samplesPos;\n break;\n case 2:\n break;\n default:\n return GAIN_ANALYSIS_ERROR;\n }\n\n if (num_samples < MAX_ORDER) {\n System.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, num_samples);\n System.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, num_samples);\n } else {\n System.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, MAX_ORDER);\n System.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, MAX_ORDER);\n }\n\n while (batchsamples > 0) {\n cursamples = batchsamples > rgData.sampleWindow - rgData.totsamp ? rgData.sampleWindow\n - rgData.totsamp\n : batchsamples;\n if (cursamplepos < MAX_ORDER) {\n curleft = rgData.linpre + cursamplepos;\n curleftBase = rgData.linprebuf;\n curright = rgData.rinpre + cursamplepos;\n currightBase = rgData.rinprebuf;\n if (cursamples > MAX_ORDER - cursamplepos)\n cursamples = MAX_ORDER - cursamplepos;\n } else {\n curleft = left_samplesPos + cursamplepos;\n curleftBase = left_samples;\n curright = right_samplesPos + cursamplepos;\n currightBase = right_samples;\n }\n\n filterYule(curleftBase, curleft, rgData.lstepbuf, rgData.lstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n filterYule(currightBase, curright, rgData.rstepbuf, rgData.rstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n\n filterButter(rgData.lstepbuf, rgData.lstep + rgData.totsamp,\n rgData.loutbuf, rgData.lout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n filterButter(rgData.rstepbuf, rgData.rstep + rgData.totsamp,\n rgData.routbuf, rgData.rout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n\n curleft = rgData.lout + rgData.totsamp;\n /* Get the squared values */\n curleftBase = rgData.loutbuf;\n curright = rgData.rout + rgData.totsamp;\n currightBase = rgData.routbuf;\n\n var i = cursamples % 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft++]);\n rgData.rsum += fsqr(currightBase[curright++]);\n }\n i = cursamples / 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft + 0])\n + fsqr(curleftBase[curleft + 1])\n + fsqr(curleftBase[curleft + 2])\n + fsqr(curleftBase[curleft + 3])\n + fsqr(curleftBase[curleft + 4])\n + fsqr(curleftBase[curleft + 5])\n + fsqr(curleftBase[curleft + 6])\n + fsqr(curleftBase[curleft + 7]);\n curleft += 8;\n rgData.rsum += fsqr(currightBase[curright + 0])\n + fsqr(currightBase[curright + 1])\n + fsqr(currightBase[curright + 2])\n + fsqr(currightBase[curright + 3])\n + fsqr(currightBase[curright + 4])\n + fsqr(currightBase[curright + 5])\n + fsqr(currightBase[curright + 6])\n + fsqr(currightBase[curright + 7]);\n curright += 8;\n }\n\n batchsamples -= cursamples;\n cursamplepos += cursamples;\n rgData.totsamp += cursamples;\n if (rgData.totsamp == rgData.sampleWindow) {\n /* Get the Root Mean Square (RMS) for this set of samples */\n var val = GainAnalysis.STEPS_per_dB\n * 10.\n * Math.log10((rgData.lsum + rgData.rsum)\n / rgData.totsamp * 0.5 + 1.e-37);\n var ival = (val <= 0) ? 0 : 0 | val;\n if (ival >= rgData.A.length)\n ival = rgData.A.length - 1;\n rgData.A[ival]++;\n rgData.lsum = rgData.rsum = 0.;\n\n System.arraycopy(rgData.loutbuf, rgData.totsamp,\n rgData.loutbuf, 0, MAX_ORDER);\n System.arraycopy(rgData.routbuf, rgData.totsamp,\n rgData.routbuf, 0, MAX_ORDER);\n System.arraycopy(rgData.lstepbuf, rgData.totsamp,\n rgData.lstepbuf, 0, MAX_ORDER);\n System.arraycopy(rgData.rstepbuf, rgData.totsamp,\n rgData.rstepbuf, 0, MAX_ORDER);\n rgData.totsamp = 0;\n }\n if (rgData.totsamp > rgData.sampleWindow) {\n /*\n * somehow I really screwed up: Error in programming! Contact\n * author about totsamp > sampleWindow\n */\n return GAIN_ANALYSIS_ERROR;\n }\n }\n if (num_samples < MAX_ORDER) {\n System.arraycopy(rgData.linprebuf, num_samples, rgData.linprebuf,\n 0, MAX_ORDER - num_samples);\n System.arraycopy(rgData.rinprebuf, num_samples, rgData.rinprebuf,\n 0, MAX_ORDER - num_samples);\n System.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER - num_samples, num_samples);\n System.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER - num_samples, num_samples);\n } else {\n System.arraycopy(left_samples, left_samplesPos + num_samples\n - MAX_ORDER, rgData.linprebuf, 0, MAX_ORDER);\n System.arraycopy(right_samples, right_samplesPos + num_samples\n - MAX_ORDER, rgData.rinprebuf, 0, MAX_ORDER);\n }\n\n return GAIN_ANALYSIS_OK;\n };\n\n function analyzeResult(Array, len) {\n var i;\n\n var elems = 0;\n for (i = 0; i < len; i++)\n elems += Array[i];\n if (elems == 0)\n return GAIN_NOT_ENOUGH_SAMPLES;\n\n var upper = 0 | Math.ceil(elems * (1. - RMS_PERCENTILE));\n for (i = len; i-- > 0;) {\n if ((upper -= Array[i]) <= 0)\n break;\n }\n\n //return (float) ((float) PINK_REF - (float) i / (float) STEPS_per_dB);\n return (PINK_REF - i / GainAnalysis.STEPS_per_dB);\n }\n\n this.GetTitleGain = function (rgData) {\n var retval = analyzeResult(rgData.A, rgData.A.length);\n\n for (var i = 0; i < rgData.A.length; i++) {\n rgData.B[i] += rgData.A[i];\n rgData.A[i] = 0;\n }\n\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n rgData.totsamp = 0;\n rgData.lsum = rgData.rsum = 0.;\n return retval;\n }\n\n}\n\nmodule.exports = GainAnalysis;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar GainAnalysis = require('./GainAnalysis.js');\n\nfunction ReplayGain() {\n this.linprebuf = new_float(GainAnalysis.MAX_ORDER * 2);\n /**\n * left input samples, with pre-buffer\n */\n this.linpre = 0;\n this.lstepbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n /**\n * left \"first step\" (i.e. post first filter) samples\n */\n this.lstep = 0;\n this.loutbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n /**\n * left \"out\" (i.e. post second filter) samples\n */\n this.lout = 0;\n this.rinprebuf = new_float(GainAnalysis.MAX_ORDER * 2);\n /**\n * right input samples ...\n */\n this.rinpre = 0;\n this.rstepbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n this.rstep = 0;\n this.routbuf = new_float(GainAnalysis.MAX_SAMPLES_PER_WINDOW + GainAnalysis.MAX_ORDER);\n this.rout = 0;\n /**\n * number of samples required to reach number of milliseconds required\n * for RMS window\n */\n this.sampleWindow = 0;\n this.totsamp = 0;\n this.lsum = 0.;\n this.rsum = 0.;\n this.freqindex = 0;\n this.first = 0;\n this.A = new_int(0 | (GainAnalysis.STEPS_per_dB * GainAnalysis.MAX_dB));\n this.B = new_int(0 | (GainAnalysis.STEPS_per_dB * GainAnalysis.MAX_dB));\n\n}\n\nmodule.exports = ReplayGain;\n","function MeanBits(meanBits) {\n this.bits = meanBits;\n}\n\nmodule.exports = MeanBits;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar MeanBits = require('./MeanBits.js');\nvar Encoder = require('./Encoder.js');\nvar L3Side = require('./L3Side.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\n\nfunction CBRNewIterationLoop(_quantize) {\n var quantize = _quantize;\n this.quantize = quantize;\n\tthis.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) {\n\t\tvar gfc = gfp.internal_flags;\n var l3_xmin = new_float(L3Side.SFBMAX);\n\t\tvar xrpow = new_float(576);\n\t\tvar targ_bits = new_int(2);\n\t\tvar mean_bits = 0, max_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar mb = new MeanBits(mean_bits);\n\t\tthis.quantize.rv.ResvFrameBegin(gfp, mb);\n\t\tmean_bits = mb.bits;\n\n\t\t/* quantize! */\n\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\n\t\t\t/*\n\t\t\t * calculate needed bits\n\t\t\t */\n\t\t\tmax_bits = this.quantize.qupvt.on_pe(gfp, pe, targ_bits, mean_bits,\n\t\t\t\t\tgr, gr);\n\n\t\t\tif (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n\t\t\t\tthis.quantize.ms_convert(gfc.l3_side, gr);\n\t\t\t\tthis.quantize.qupvt.reduce_side(targ_bits, ms_ener_ratio[gr],\n\t\t\t\t\t\tmean_bits, max_bits);\n\t\t\t}\n\n\t\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\t\tvar adjust, masking_lower_db;\n\t\t\t\tvar cod_info = l3_side.tt[gr][ch];\n\n\t\t\t\tif (cod_info.block_type != Encoder.SHORT_TYPE) {\n\t\t\t\t\t// NORM, START or STOP type\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust - adjust;\n\t\t\t\t} else {\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n\t\t\t\t}\n\t\t\t\tgfc.masking_lower = Math.pow(10.0,\n\t\t\t\t\t\tmasking_lower_db * 0.1);\n\n\t\t\t\t/*\n\t\t\t\t * init_outer_loop sets up cod_info, scalefac and xrpow\n\t\t\t\t */\n\t\t\t\tthis.quantize.init_outer_loop(gfc, cod_info);\n\t\t\t\tif (this.quantize.init_xrpow(gfc, cod_info, xrpow)) {\n\t\t\t\t\t/*\n\t\t\t\t\t * xr contains energy we will have to encode calculate the\n\t\t\t\t\t * masking abilities find some good quantization in\n\t\t\t\t\t * outer_loop\n\t\t\t\t\t */\n\t\t\t\t\tthis.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n\t\t\t\t\t\t\tl3_xmin);\n\t\t\t\t\tthis.quantize.outer_loop(gfp, cod_info, l3_xmin, xrpow, ch,\n\t\t\t\t\t\t\ttarg_bits[ch]);\n\t\t\t\t}\n\n\t\t\t\tthis.quantize.iteration_finish_one(gfc, gr, ch);\n\t\t\t\tassert (cod_info.part2_3_length <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n\t\t\t\tassert (cod_info.part2_3_length <= targ_bits[ch]);\n\t\t\t} /* for ch */\n\t\t} /* for gr */\n\n\t\tthis.quantize.rv.ResvFrameEnd(gfc, mean_bits);\n\t}\n}\nmodule.exports = CBRNewIterationLoop;\n","function HuffCodeTab(len, max, tab, hl) {\n this.xlen = len;\n this.linmax = max;\n this.table = tab;\n this.hlen = hl;\n}\n\nvar Tables = {};\n\n\nTables.t1HB = [\n 1, 1,\n 1, 0\n];\n\nTables.t2HB = [\n 1, 2, 1,\n 3, 1, 1,\n 3, 2, 0\n];\n\nTables.t3HB = [\n 3, 2, 1,\n 1, 1, 1,\n 3, 2, 0\n];\n\nTables.t5HB = [\n 1, 2, 6, 5,\n 3, 1, 4, 4,\n 7, 5, 7, 1,\n 6, 1, 1, 0\n];\n\nTables.t6HB = [\n 7, 3, 5, 1,\n 6, 2, 3, 2,\n 5, 4, 4, 1,\n 3, 3, 2, 0\n];\n\nTables.t7HB = [\n 1, 2, 10, 19, 16, 10,\n 3, 3, 7, 10, 5, 3,\n 11, 4, 13, 17, 8, 4,\n 12, 11, 18, 15, 11, 2,\n 7, 6, 9, 14, 3, 1,\n 6, 4, 5, 3, 2, 0\n];\n\nTables.t8HB = [\n 3, 4, 6, 18, 12, 5,\n 5, 1, 2, 16, 9, 3,\n 7, 3, 5, 14, 7, 3,\n 19, 17, 15, 13, 10, 4,\n 13, 5, 8, 11, 5, 1,\n 12, 4, 4, 1, 1, 0\n];\n\nTables.t9HB = [\n 7, 5, 9, 14, 15, 7,\n 6, 4, 5, 5, 6, 7,\n 7, 6, 8, 8, 8, 5,\n 15, 6, 9, 10, 5, 1,\n 11, 7, 9, 6, 4, 1,\n 14, 4, 6, 2, 6, 0\n];\n\nTables.t10HB = [\n 1, 2, 10, 23, 35, 30, 12, 17,\n 3, 3, 8, 12, 18, 21, 12, 7,\n 11, 9, 15, 21, 32, 40, 19, 6,\n 14, 13, 22, 34, 46, 23, 18, 7,\n 20, 19, 33, 47, 27, 22, 9, 3,\n 31, 22, 41, 26, 21, 20, 5, 3,\n 14, 13, 10, 11, 16, 6, 5, 1,\n 9, 8, 7, 8, 4, 4, 2, 0\n];\n\nTables.t11HB = [\n 3, 4, 10, 24, 34, 33, 21, 15,\n 5, 3, 4, 10, 32, 17, 11, 10,\n 11, 7, 13, 18, 30, 31, 20, 5,\n 25, 11, 19, 59, 27, 18, 12, 5,\n 35, 33, 31, 58, 30, 16, 7, 5,\n 28, 26, 32, 19, 17, 15, 8, 14,\n 14, 12, 9, 13, 14, 9, 4, 1,\n 11, 4, 6, 6, 6, 3, 2, 0\n];\n\nTables.t12HB = [\n 9, 6, 16, 33, 41, 39, 38, 26,\n 7, 5, 6, 9, 23, 16, 26, 11,\n 17, 7, 11, 14, 21, 30, 10, 7,\n 17, 10, 15, 12, 18, 28, 14, 5,\n 32, 13, 22, 19, 18, 16, 9, 5,\n 40, 17, 31, 29, 17, 13, 4, 2,\n 27, 12, 11, 15, 10, 7, 4, 1,\n 27, 12, 8, 12, 6, 3, 1, 0\n];\n\nTables.t13HB = [\n 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19,\n 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14,\n 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16,\n 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14,\n 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24,\n 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17,\n 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15,\n 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42,\n 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,\n 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11,\n 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22,\n 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7,\n 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5,\n 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3,\n 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2,\n 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1\n];\n\nTables.t15HB = [\n 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63,\n 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,\n 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,\n 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,\n 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,\n 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,\n 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,\n 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25,\n 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,\n 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15,\n 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,\n 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,\n 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,\n 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,\n 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,\n 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0\n];\n\nTables.t16HB = [\n 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17,\n 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9,\n 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16,\n 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26,\n 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9,\n 66, 30, 59, 56, 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16,\n 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10,\n 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889, 884, 8,\n 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7,\n 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11,\n 139, 129, 67, 125, 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4,\n 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6,\n 202, 224, 222, 218, 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4,\n 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2,\n 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434, 0,\n 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3\n];\n\nTables.t24HB = [\n 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88,\n 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42,\n 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18,\n 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16,\n 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14,\n 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12,\n 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10,\n 435, 115, 111, 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17,\n 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16,\n 335, 199, 197, 191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11,\n 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10,\n 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6,\n 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4,\n 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2,\n 1033, 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,\n 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3\n];\n\nTables.t32HB = [\n 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3,\n 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4\n];\n\nTables.t33HB = [\n 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3,\n 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4\n];\n\nTables.t1l = [\n 1, 4,\n 3, 5\n];\n\nTables.t2l = [\n 1, 4, 7,\n 4, 5, 7,\n 6, 7, 8\n];\n\nTables.t3l = [\n 2, 3, 7,\n 4, 4, 7,\n 6, 7, 8\n];\n\nTables.t5l = [\n 1, 4, 7, 8,\n 4, 5, 8, 9,\n 7, 8, 9, 10,\n 8, 8, 9, 10\n];\n\nTables.t6l = [\n 3, 4, 6, 8,\n 4, 4, 6, 7,\n 5, 6, 7, 8,\n 7, 7, 8, 9\n];\n\nTables.t7l = [\n 1, 4, 7, 9, 9, 10,\n 4, 6, 8, 9, 9, 10,\n 7, 7, 9, 10, 10, 11,\n 8, 9, 10, 11, 11, 11,\n 8, 9, 10, 11, 11, 12,\n 9, 10, 11, 12, 12, 12\n];\n\nTables.t8l = [\n 2, 4, 7, 9, 9, 10,\n 4, 4, 6, 10, 10, 10,\n 7, 6, 8, 10, 10, 11,\n 9, 10, 10, 11, 11, 12,\n 9, 9, 10, 11, 12, 12,\n 10, 10, 11, 11, 13, 13\n];\n\nTables.t9l = [\n 3, 4, 6, 7, 9, 10,\n 4, 5, 6, 7, 8, 10,\n 5, 6, 7, 8, 9, 10,\n 7, 7, 8, 9, 9, 10,\n 8, 8, 9, 9, 10, 11,\n 9, 9, 10, 10, 11, 11\n];\n\nTables.t10l = [\n 1, 4, 7, 9, 10, 10, 10, 11,\n 4, 6, 8, 9, 10, 11, 10, 10,\n 7, 8, 9, 10, 11, 12, 11, 11,\n 8, 9, 10, 11, 12, 12, 11, 12,\n 9, 10, 11, 12, 12, 12, 12, 12,\n 10, 11, 12, 12, 13, 13, 12, 13,\n 9, 10, 11, 12, 12, 12, 13, 13,\n 10, 10, 11, 12, 12, 13, 13, 13\n];\n\nTables.t11l = [\n 2, 4, 6, 8, 9, 10, 9, 10,\n 4, 5, 6, 8, 10, 10, 9, 10,\n 6, 7, 8, 9, 10, 11, 10, 10,\n 8, 8, 9, 11, 10, 12, 10, 11,\n 9, 10, 10, 11, 11, 12, 11, 12,\n 9, 10, 11, 12, 12, 13, 12, 13,\n 9, 9, 9, 10, 11, 12, 12, 12,\n 9, 9, 10, 11, 12, 12, 12, 12\n];\n\nTables.t12l = [\n 4, 4, 6, 8, 9, 10, 10, 10,\n 4, 5, 6, 7, 9, 9, 10, 10,\n 6, 6, 7, 8, 9, 10, 9, 10,\n 7, 7, 8, 8, 9, 10, 10, 10,\n 8, 8, 9, 9, 10, 10, 10, 11,\n 9, 9, 10, 10, 10, 11, 10, 11,\n 9, 9, 9, 10, 10, 11, 11, 12,\n 10, 10, 10, 11, 11, 11, 11, 12\n];\n\nTables.t13l = [\n 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14,\n 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14,\n 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15,\n 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15,\n 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16,\n 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16,\n 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16,\n 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18,\n 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17,\n 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17,\n 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19,\n 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18,\n 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18,\n 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18,\n 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18,\n 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18\n];\n\nTables.t15l = [\n 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14,\n 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,\n 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13,\n 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14,\n 10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14,\n 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15,\n 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15,\n 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15,\n 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15,\n 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15\n];\n\nTables.t16_5l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14,\n 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12\n];\n\nTables.t16l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13,\n 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10\n];\n\nTables.t24l = [\n 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10,\n 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10,\n 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9,\n 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9,\n 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9,\n 10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9,\n 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9,\n 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10,\n 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10,\n 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10,\n 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6\n];\n\nTables.t32l = [\n 1 + 0, 4 + 1, 4 + 1, 5 + 2, 4 + 1, 6 + 2, 5 + 2, 6 + 3,\n 4 + 1, 5 + 2, 5 + 2, 6 + 3, 5 + 2, 6 + 3, 6 + 3, 6 + 4\n];\n\nTables.t33l = [\n 4 + 0, 4 + 1, 4 + 1, 4 + 2, 4 + 1, 4 + 2, 4 + 2, 4 + 3,\n 4 + 1, 4 + 2, 4 + 2, 4 + 3, 4 + 2, 4 + 3, 4 + 3, 4 + 4\n];\n\nTables.ht = [\n /* xlen, linmax, table, hlen */\n new HuffCodeTab(0, 0, null, null),\n new HuffCodeTab(2, 0, Tables.t1HB, Tables.t1l),\n new HuffCodeTab(3, 0, Tables.t2HB, Tables.t2l),\n new HuffCodeTab(3, 0, Tables.t3HB, Tables.t3l),\n new HuffCodeTab(0, 0, null, null), /* Apparently not used */\n new HuffCodeTab(4, 0, Tables.t5HB, Tables.t5l),\n new HuffCodeTab(4, 0, Tables.t6HB, Tables.t6l),\n new HuffCodeTab(6, 0, Tables.t7HB, Tables.t7l),\n new HuffCodeTab(6, 0, Tables.t8HB, Tables.t8l),\n new HuffCodeTab(6, 0, Tables.t9HB, Tables.t9l),\n new HuffCodeTab(8, 0, Tables.t10HB, Tables.t10l),\n new HuffCodeTab(8, 0, Tables.t11HB, Tables.t11l),\n new HuffCodeTab(8, 0, Tables.t12HB, Tables.t12l),\n new HuffCodeTab(16, 0, Tables.t13HB, Tables.t13l),\n new HuffCodeTab(0, 0, null, Tables.t16_5l), /* Apparently not used */\n new HuffCodeTab(16, 0, Tables.t15HB, Tables.t15l),\n\n new HuffCodeTab(1, 1, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(2, 3, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(3, 7, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(4, 15, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(6, 63, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(8, 255, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(10, 1023, Tables.t16HB, Tables.t16l),\n new HuffCodeTab(13, 8191, Tables.t16HB, Tables.t16l),\n\n new HuffCodeTab(4, 15, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(5, 31, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(6, 63, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(7, 127, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(8, 255, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(9, 511, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(11, 2047, Tables.t24HB, Tables.t24l),\n new HuffCodeTab(13, 8191, Tables.t24HB, Tables.t24l),\n\n new HuffCodeTab(0, 0, Tables.t32HB, Tables.t32l),\n new HuffCodeTab(0, 0, Tables.t33HB, Tables.t33l),\n];\n\n/**\n * <CODE>\n * for (i = 0; i < 16*16; i++) [\n * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i];\n * ]\n * </CODE>\n *\n */\nTables.largetbl = [\n 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a,\n 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a,\n 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009,\n 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009,\n 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009,\n 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009,\n 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b,\n 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009,\n 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b,\n 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a,\n 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b,\n 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a,\n 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c,\n 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a,\n 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c,\n 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a,\n 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c,\n 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a,\n 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c,\n 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a,\n 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c,\n 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a,\n 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d,\n 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a,\n 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009,\n 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006\n];\n/**\n * <CODE>\n * for (i = 0; i < 3*3; i++) [\n * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i];\n * ]\n * </CODE>\n *\n */\nTables.table23 = [\n 0x010002, 0x040003, 0x070007,\n 0x040004, 0x050004, 0x070007,\n 0x060006, 0x070007, 0x080008\n];\n\n/**\n * <CODE>\n * for (i = 0; i < 4*4; i++) [\n * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i];\n * ]\n * </CODE>\n *\n */\nTables.table56 = [\n 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007,\n 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009\n];\n\nTables.bitrate_table = [\n [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1], /* MPEG 2 */\n [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1], /* MPEG 1 */\n [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1], /* MPEG 2.5 */\n];\n\n/**\n * MPEG 2, MPEG 1, MPEG 2.5.\n */\nTables.samplerate_table = [\n [22050, 24000, 16000, -1],\n [44100, 48000, 32000, -1],\n [11025, 12000, 8000, -1],\n];\n\n/**\n * This is the scfsi_band table from 2.4.2.7 of the IS.\n */\nTables.scfsi_band = [0, 6, 11, 16, 21];\n\nmodule.exports = Tables;\n","/*\n * quantize_pvt source file\n *\n * Copyright (c) 1999-2002 Takehiro Tominaga\n * Copyright (c) 2000-2002 Robert Hegemann\n * Copyright (c) 2001 Naoki Shibata\n * Copyright (c) 2002-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: QuantizePVT.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */\nvar ScaleFac = require('./ScaleFac.js');\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\nvar MeanBits = require('./MeanBits.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\n\nQuantizePVT.Q_MAX = (256 + 1);\nQuantizePVT.Q_MAX2 = 116;\nQuantizePVT.LARGE_BITS = 100000;\nQuantizePVT.IXMAX_VAL = 8206;\n\nfunction QuantizePVT() {\n var BitStream = require('./BitStream.js');\n var tak = null;\n var rv = null;\n var psy = null;\n\n this.setModules = function (_tk, _rv, _psy) {\n tak = _tk;\n rv = _rv;\n psy = _psy;\n };\n\n function POW20(x) {\n assert(0 <= (x + QuantizePVT.Q_MAX2) && x < QuantizePVT.Q_MAX);\n return pow20[x + QuantizePVT.Q_MAX2];\n }\n\n this.IPOW20 = function (x) {\n assert(0 <= x && x < QuantizePVT.Q_MAX);\n return ipow20[x];\n }\n\n /**\n * smallest such that 1.0+DBL_EPSILON != 1.0\n */\n var DBL_EPSILON = 2.2204460492503131e-016;\n\n /**\n * ix always <= 8191+15. see count_bits()\n */\n var IXMAX_VAL = QuantizePVT.IXMAX_VAL;\n\n var PRECALC_SIZE = (IXMAX_VAL + 2);\n\n var Q_MAX = QuantizePVT.Q_MAX;\n\n\n /**\n * <CODE>\n * minimum possible number of\n * -cod_info.global_gain + ((scalefac[] + (cod_info.preflag ? pretab[sfb] : 0))\n * << (cod_info.scalefac_scale + 1)) + cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n *\n * for long block, 0+((15+3)<<2) = 18*4 = 72\n * for short block, 0+(15<<2)+7*8 = 15*4+56 = 116\n * </CODE>\n */\n var Q_MAX2 = QuantizePVT.Q_MAX2;\n\n var LARGE_BITS = QuantizePVT.LARGE_BITS;\n\n\n /**\n * Assuming dynamic range=96dB, this value should be 92\n */\n var NSATHSCALE = 100;\n\n /**\n * The following table is used to implement the scalefactor partitioning for\n * MPEG2 as described in section 2.4.3.2 of the IS. The indexing corresponds\n * to the way the tables are presented in the IS:\n *\n * [table_number][row_in_table][column of nr_of_sfb]\n */\n this.nr_of_sfb_block = [\n [[6, 5, 5, 5], [9, 9, 9, 9], [6, 9, 9, 9]],\n [[6, 5, 7, 3], [9, 9, 12, 6], [6, 9, 12, 6]],\n [[11, 10, 0, 0], [18, 18, 0, 0], [15, 18, 0, 0]],\n [[7, 7, 7, 0], [12, 12, 12, 0], [6, 15, 12, 0]],\n [[6, 6, 6, 3], [12, 9, 9, 6], [6, 12, 9, 6]],\n [[8, 8, 5, 0], [15, 12, 9, 0], [6, 18, 9, 0]]];\n\n /**\n * Table B.6: layer3 preemphasis\n */\n var pretab = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 2, 2, 3, 3, 3, 2, 0];\n this.pretab = pretab;\n\n /**\n * Here are MPEG1 Table B.8 and MPEG2 Table B.1 -- Layer III scalefactor\n * bands. <BR>\n * Index into this using a method such as:<BR>\n * idx = fr_ps.header.sampling_frequency + (fr_ps.header.version * 3)\n */\n this.sfBandIndex = [\n // Table B.2.b: 22.05 kHz\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] // sfb21 pseudo sub bands\n , [0, 0, 0, 0, 0, 0, 0] // sfb12 pseudo sub bands\n ),\n /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 332, 394, 464,\n 540, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.2.a: 16 kHz */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.b: 44.1 kHz */\n new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.c: 48 kHz */\n new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384,\n 576],\n [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.a: 32 kHz */\n new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 11.025 kHz */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 12 kHz */\n new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 8 kHz */\n new ScaleFac([0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570,\n 572, 574, 576],\n [0 / 3, 24 / 3, 48 / 3, 72 / 3, 108 / 3, 156 / 3, 216 / 3, 288 / 3, 372 / 3, 480 / 3, 486 / 3,\n 492 / 3, 498 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n )\n ];\n\n var pow20 = new_float(Q_MAX + Q_MAX2 + 1);\n var ipow20 = new_float(Q_MAX);\n var pow43 = new_float(PRECALC_SIZE);\n\n var adj43 = new_float(PRECALC_SIZE);\n this.adj43 = adj43;\n\n /**\n * <PRE>\n * compute the ATH for each scalefactor band cd range: 0..96db\n *\n * Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest =\n * -5db) longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db shortblocks: sfb=5\n * -9db 0db\n *\n * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) longblocks: amp=1\n * sfb=12 en0/bw=-103 db max_en0 = -92db amp=32767 sfb=12 -12 db -1.4db\n *\n * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) shortblocks: amp=1\n * sfb=5 en0/bw= -99 -86 amp=32767 sfb=5 -9 db 4db\n *\n *\n * MAX energy of largest wave at 3.3kHz = 1db AVE energy of largest wave at\n * 3.3kHz = -11db Let's take AVE: -11db = maximum signal in sfb=12. Dynamic\n * range of CD: 96db. Therefor energy of smallest audible wave in sfb=12 =\n * -11 - 96 = -107db = ATH at 3.3kHz.\n *\n * ATH formula for this wave: -5db. To adjust to LAME scaling, we need ATH =\n * ATH_formula - 103 (db) ATH = ATH * 2.5e-10 (ener)\n * </PRE>\n */\n function ATHmdct(gfp, f) {\n var ath = psy.ATHformula(f, gfp);\n\n ath -= NSATHSCALE;\n\n /* modify the MDCT scaling for the ATH and convert to energy */\n ath = Math.pow(10.0, ath / 10.0 + gfp.ATHlower);\n return ath;\n }\n\n function compute_ath(gfp) {\n var ATH_l = gfp.internal_flags.ATH.l;\n var ATH_psfb21 = gfp.internal_flags.ATH.psfb21;\n var ATH_s = gfp.internal_flags.ATH.s;\n var ATH_psfb12 = gfp.internal_flags.ATH.psfb12;\n var gfc = gfp.internal_flags;\n var samp_freq = gfp.out_samplerate;\n\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n ATH_l[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n var start = gfc.scalefac_band.psfb21[sfb];\n var end = gfc.scalefac_band.psfb21[sfb + 1];\n ATH_psfb21[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n ATH_s[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f);\n }\n ATH_s[sfb] *= (gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb]);\n }\n\n for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n var start = gfc.scalefac_band.psfb12[sfb];\n var end = gfc.scalefac_band.psfb12[sfb + 1];\n ATH_psfb12[sfb] = Float.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f);\n }\n /* not sure about the following */\n ATH_psfb12[sfb] *= (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]);\n }\n\n /*\n * no-ATH mode: reduce ATH to -200 dB\n */\n if (gfp.noATH) {\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n ATH_l[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n ATH_psfb21[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n ATH_s[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n ATH_psfb12[sfb] = 1E-20;\n }\n }\n\n /*\n * work in progress, don't rely on it too much\n */\n gfc.ATH.floor = 10. * Math.log10(ATHmdct(gfp, -1.));\n }\n\n /**\n * initialization for iteration_loop\n */\n this.iteration_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var i;\n\n if (gfc.iteration_init_init == 0) {\n gfc.iteration_init_init = 1;\n\n l3_side.main_data_begin = 0;\n compute_ath(gfp);\n\n pow43[0] = 0.0;\n for (i = 1; i < PRECALC_SIZE; i++)\n pow43[i] = Math.pow(i, 4.0 / 3.0);\n\n for (i = 0; i < PRECALC_SIZE - 1; i++)\n adj43[i] = ((i + 1) - Math.pow(\n 0.5 * (pow43[i] + pow43[i + 1]), 0.75));\n adj43[i] = 0.5;\n\n for (i = 0; i < Q_MAX; i++)\n ipow20[i] = Math.pow(2.0, (i - 210) * -0.1875);\n for (i = 0; i <= Q_MAX + Q_MAX2; i++)\n pow20[i] = Math.pow(2.0, (i - 210 - Q_MAX2) * 0.25);\n\n tak.huffman_init(gfc);\n\n {\n var bass, alto, treble, sfb21;\n\n i = (gfp.exp_nspsytune >> 2) & 63;\n if (i >= 32)\n i -= 64;\n bass = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 8) & 63;\n if (i >= 32)\n i -= 64;\n alto = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 14) & 63;\n if (i >= 32)\n i -= 64;\n treble = Math.pow(10, i / 4.0 / 10.0);\n\n /*\n * to be compatible with Naoki's original code, the next 6 bits\n * define only the amount of changing treble for sfb21\n */\n i = (gfp.exp_nspsytune >> 20) & 63;\n if (i >= 32)\n i -= 64;\n sfb21 = treble * Math.pow(10, i / 4.0 / 10.0);\n for (i = 0; i < Encoder.SBMAX_l; i++) {\n var f;\n if (i <= 6)\n f = bass;\n else if (i <= 13)\n f = alto;\n else if (i <= 20)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.longfact[i] = f;\n }\n for (i = 0; i < Encoder.SBMAX_s; i++) {\n var f;\n if (i <= 5)\n f = bass;\n else if (i <= 10)\n f = alto;\n else if (i <= 11)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.shortfact[i] = f;\n }\n }\n }\n }\n\n /**\n * allocate bits among 2 channels based on PE<BR>\n * mt 6/99<BR>\n * bugfixes rh 8/01: often allocated more than the allowed 4095 bits\n */\n this.on_pe = function (gfp, pe,\n targ_bits, mean_bits, gr, cbr) {\n var gfc = gfp.internal_flags;\n var tbits = 0, bits;\n var add_bits = new_int(2);\n var ch;\n\n /* allocate targ_bits for granule */\n var mb = new MeanBits(tbits);\n var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr);\n tbits = mb.bits;\n /* maximum allowed bits for this granule */\n var max_bits = tbits + extra_bits;\n if (max_bits > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n // hard limit per granule\n max_bits = LameInternalFlags.MAX_BITS_PER_GRANULE;\n }\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n /******************************************************************\n * allocate bits for each channel\n ******************************************************************/\n targ_bits[ch] = Math.min(LameInternalFlags.MAX_BITS_PER_CHANNEL,\n tbits / gfc.channels_out);\n\n add_bits[ch] = 0 | (targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]);\n\n /* at most increase bits by 1.5*average */\n if (add_bits[ch] > mean_bits * 3 / 4)\n add_bits[ch] = mean_bits * 3 / 4;\n if (add_bits[ch] < 0)\n add_bits[ch] = 0;\n\n if (add_bits[ch] + targ_bits[ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL)\n add_bits[ch] = Math.max(0,\n LameInternalFlags.MAX_BITS_PER_CHANNEL - targ_bits[ch]);\n\n bits += add_bits[ch];\n }\n if (bits > extra_bits) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n add_bits[ch] = extra_bits * add_bits[ch] / bits;\n }\n }\n\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] += add_bits[ch];\n extra_bits -= add_bits[ch];\n }\n\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n bits += targ_bits[ch];\n }\n if (bits > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n targ_bits[ch] /= bits;\n sum += targ_bits[ch];\n }\n assert(sum <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n }\n\n return max_bits;\n }\n\n this.reduce_side = function (targ_bits, ms_ener_ratio, mean_bits, max_bits) {\n assert(max_bits <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n assert(targ_bits[0] + targ_bits[1] <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n\n /*\n * ms_ener_ratio = 0: allocate 66/33 mid/side fac=.33 ms_ener_ratio =.5:\n * allocate 50/50 mid/side fac= 0\n */\n /* 75/25 split is fac=.5 */\n var fac = .33 * (.5 - ms_ener_ratio) / .5;\n if (fac < 0)\n fac = 0;\n if (fac > .5)\n fac = .5;\n\n /* number of bits to move from side channel to mid channel */\n /* move_bits = fac*targ_bits[1]; */\n var move_bits = 0 | (fac * .5 * (targ_bits[0] + targ_bits[1]));\n\n if (move_bits > LameInternalFlags.MAX_BITS_PER_CHANNEL - targ_bits[0]) {\n move_bits = LameInternalFlags.MAX_BITS_PER_CHANNEL - targ_bits[0];\n }\n if (move_bits < 0)\n move_bits = 0;\n\n if (targ_bits[1] >= 125) {\n /* dont reduce side channel below 125 bits */\n if (targ_bits[1] - move_bits > 125) {\n\n /* if mid channel already has 2x more than average, dont bother */\n /* mean_bits = bits per granule (for both channels) */\n if (targ_bits[0] < mean_bits)\n targ_bits[0] += move_bits;\n targ_bits[1] -= move_bits;\n } else {\n targ_bits[0] += targ_bits[1] - 125;\n targ_bits[1] = 125;\n }\n }\n\n move_bits = targ_bits[0] + targ_bits[1];\n if (move_bits > max_bits) {\n targ_bits[0] = (max_bits * targ_bits[0]) / move_bits;\n targ_bits[1] = (max_bits * targ_bits[1]) / move_bits;\n }\n assert(targ_bits[0] <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n assert(targ_bits[1] <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n assert(targ_bits[0] + targ_bits[1] <= LameInternalFlags.MAX_BITS_PER_GRANULE);\n };\n\n /**\n * Robert Hegemann 2001-04-27:\n * this adjusts the ATH, keeping the original noise floor\n * affects the higher frequencies more than the lower ones\n */\n this.athAdjust = function (a, x, athFloor) {\n /*\n * work in progress\n */\n var o = 90.30873362;\n var p = 94.82444863;\n var u = Util.FAST_LOG10_X(x, 10.0);\n var v = a * a;\n var w = 0.0;\n u -= athFloor;\n /* undo scaling */\n if (v > 1E-20)\n w = 1. + Util.FAST_LOG10_X(v, 10.0 / o);\n if (w < 0)\n w = 0.;\n u *= w;\n u += athFloor + o - p;\n /* redo scaling */\n\n return Math.pow(10., 0.1 * u);\n };\n\n /**\n * Calculate the allowed distortion for each scalefactor band, as determined\n * by the psychoacoustic model. xmin(sb) = ratio(sb) * en(sb) / bw(sb)\n *\n * returns number of sfb's with energy > ATH\n */\n this.calc_xmin = function (gfp, ratio, cod_info, pxmin) {\n var pxminPos = 0;\n var gfc = gfp.internal_flags;\n var gsfb, j = 0, ath_over = 0;\n var ATH = gfc.ATH;\n var xr = cod_info.xr;\n var enable_athaa_fix = (gfp.VBR == VbrMode.vbr_mtrh) ? 1 : 0;\n var masking_lower = gfc.masking_lower;\n\n if (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) {\n /* was already done in PSY-Model */\n masking_lower = 1.0;\n }\n\n for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) {\n var en0, xmin;\n var rh1, rh2;\n var width, l;\n\n if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh)\n xmin = athAdjust(ATH.adjust, ATH.l[gsfb], ATH.floor);\n else\n xmin = ATH.adjust * ATH.l[gsfb];\n\n width = cod_info.width[gsfb];\n rh1 = xmin / width;\n rh2 = DBL_EPSILON;\n l = width >> 1;\n en0 = 0.0;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > xmin)\n ath_over++;\n\n if (gsfb == Encoder.SBPSY_l) {\n var x = xmin * gfc.nsPsy.longfact[gsfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0) {\n xmin = rh2;\n }\n if (!gfp.ATHonly) {\n var e = ratio.en.l[gsfb];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.l[gsfb] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.longfact[gsfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb];\n }\n /* end of long block loop */\n\n /* use this function to determine the highest non-zero coeff */\n var max_nonzero = 575;\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n // NORM, START or STOP type, but not SHORT\n var k = 576;\n while (k-- != 0 && BitStream.EQ(xr[k], 0)) {\n max_nonzero = k;\n }\n }\n cod_info.max_nonzero_coeff = max_nonzero;\n\n for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) {\n var width, b;\n var tmpATH;\n if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh)\n tmpATH = athAdjust(ATH.adjust, ATH.s[sfb], ATH.floor);\n else\n tmpATH = ATH.adjust * ATH.s[sfb];\n\n width = cod_info.width[gsfb];\n for (b = 0; b < 3; b++) {\n var en0 = 0.0, xmin;\n var rh1, rh2;\n var l = width >> 1;\n\n rh1 = tmpATH / width;\n rh2 = DBL_EPSILON;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > tmpATH)\n ath_over++;\n if (sfb == Encoder.SBPSY_s) {\n var x = tmpATH * gfc.nsPsy.shortfact[sfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0)\n xmin = rh2;\n else\n xmin = tmpATH;\n\n if (!gfp.ATHonly && !gfp.ATHshort) {\n var e = ratio.en.s[sfb][b];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.s[sfb][b] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.shortfact[sfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb];\n }\n /* b */\n if (gfp.useTemporal) {\n if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1])\n pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1])\n * gfc.decay;\n if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2])\n pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2])\n * gfc.decay;\n }\n }\n /* end of short block sfb loop */\n\n return ath_over;\n };\n\n function StartLine(j) {\n this.s = j;\n }\n\n this.calc_noise_core = function (cod_info, startline, l, step) {\n var noise = 0;\n var j = startline.s;\n var ix = cod_info.l3_enc;\n\n if (j > cod_info.count1) {\n while ((l--) != 0) {\n var temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n }\n } else if (j > cod_info.big_values) {\n var ix01 = new_float(2);\n ix01[0] = 0;\n ix01[1] = step;\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n }\n } else {\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n }\n }\n\n startline.s = j;\n return noise;\n }\n\n /**\n * <PRE>\n * -oo dB => -1.00\n * - 6 dB => -0.97\n * - 3 dB => -0.80\n * - 2 dB => -0.64\n * - 1 dB => -0.38\n * 0 dB => 0.00\n * + 1 dB => +0.49\n * + 2 dB => +1.06\n * + 3 dB => +1.68\n * + 6 dB => +3.69\n * +10 dB => +6.45\n * </PRE>\n */\n this.calc_noise = function (cod_info, l3_xmin, distort, res, prev_noise) {\n var distortPos = 0;\n var l3_xminPos = 0;\n var sfb, l, over = 0;\n var over_noise_db = 0;\n /* 0 dB relative to masking */\n var tot_noise_db = 0;\n /* -200 dB relative to masking */\n var max_noise = -20.0;\n var j = 0;\n var scalefac = cod_info.scalefac;\n var scalefacPos = 0;\n\n res.over_SSD = 0;\n\n for (sfb = 0; sfb < cod_info.psymax; sfb++) {\n var s = cod_info.global_gain\n - (((scalefac[scalefacPos++]) + (cod_info.preflag != 0 ? pretab[sfb]\n : 0)) << (cod_info.scalefac_scale + 1))\n - cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n var noise = 0.0;\n\n if (prev_noise != null && (prev_noise.step[sfb] == s)) {\n\n /* use previously computed values */\n noise = prev_noise.noise[sfb];\n j += cod_info.width[sfb];\n distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n noise = prev_noise.noise_log[sfb];\n\n } else {\n var step = POW20(s);\n l = cod_info.width[sfb] >> 1;\n\n if ((j + cod_info.width[sfb]) > cod_info.max_nonzero_coeff) {\n var usefullsize;\n usefullsize = cod_info.max_nonzero_coeff - j + 1;\n\n if (usefullsize > 0)\n l = usefullsize >> 1;\n else\n l = 0;\n }\n\n var sl = new StartLine(j);\n noise = this.calc_noise_core(cod_info, sl, l, step);\n j = sl.s;\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.step[sfb] = s;\n prev_noise.noise[sfb] = noise;\n }\n\n noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n /* multiplying here is adding in dB, but can overflow */\n noise = Util.FAST_LOG10(Math.max(noise, 1E-20));\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.noise_log[sfb] = noise;\n }\n }\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.global_gain = cod_info.global_gain;\n }\n\n tot_noise_db += noise;\n\n if (noise > 0.0) {\n var tmp;\n\n tmp = Math.max(0 | (noise * 10 + .5), 1);\n res.over_SSD += tmp * tmp;\n\n over++;\n /* multiplying here is adding in dB -but can overflow */\n /* over_noise *= noise; */\n over_noise_db += noise;\n }\n max_noise = Math.max(max_noise, noise);\n\n }\n\n res.over_count = over;\n res.tot_noise = tot_noise_db;\n res.over_noise = over_noise_db;\n res.max_noise = max_noise;\n\n return over;\n }\n\n /**\n * updates plotting data\n *\n * Mark Taylor 2000-??-??\n *\n * Robert Hegemann: moved noise/distortion calc into it\n */\n this.set_pinfo = function (gfp, cod_info, ratio, gr, ch) {\n var gfc = gfp.internal_flags;\n var sfb, sfb2;\n var l;\n var en0, en1;\n var ifqstep = (cod_info.scalefac_scale == 0) ? .5 : 1.0;\n var scalefac = cod_info.scalefac;\n\n var l3_xmin = new_float(L3Side.SFBMAX);\n var xfsf = new_float(L3Side.SFBMAX);\n var noise = new CalcNoiseResult();\n\n calc_xmin(gfp, ratio, cod_info, l3_xmin);\n calc_noise(cod_info, l3_xmin, xfsf, noise, null);\n\n var j = 0;\n sfb2 = cod_info.sfb_lmax;\n if (cod_info.block_type != Encoder.SHORT_TYPE\n && 0 == cod_info.mixed_block_flag)\n sfb2 = 22;\n for (sfb = 0; sfb < sfb2; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n var bw = end - start;\n for (en0 = 0.0; j < end; j++)\n en0 += cod_info.xr[j] * cod_info.xr[j];\n en0 /= bw;\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n gfc.pinfo.en[gr][ch][sfb] = en1 * en0;\n gfc.pinfo.xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw;\n\n if (ratio.en.l[sfb] > 0 && !gfp.ATHonly)\n en0 = en0 / ratio.en.l[sfb];\n else\n en0 = 0.0;\n\n gfc.pinfo.thr[gr][ch][sfb] = en1\n * Math.max(en0 * ratio.thm.l[sfb], gfc.ATH.l[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_l */\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = 0;\n if (cod_info.preflag != 0 && sfb >= 11)\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb];\n\n if (sfb < Encoder.SBPSY_l) {\n /* scfsi should be decoded by caller side */\n assert(scalefac[sfb] >= 0);\n gfc.pinfo.LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb];\n }\n }\n /* for sfb */\n\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n sfb2 = sfb;\n for (sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n var bw = end - start;\n for (var i = 0; i < 3; i++) {\n for (en0 = 0.0, l = start; l < end; l++) {\n en0 += cod_info.xr[j] * cod_info.xr[j];\n j++;\n }\n en0 = Math.max(en0 / bw, 1e-20);\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n\n gfc.pinfo.en_s[gr][ch][3 * sfb + i] = en1 * en0;\n gfc.pinfo.xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2]\n * xfsf[sfb2] / bw;\n if (ratio.en.s[sfb][i] > 0)\n en0 = en0 / ratio.en.s[sfb][i];\n else\n en0 = 0.0;\n if (gfp.ATHonly || gfp.ATHshort)\n en0 = 0;\n\n gfc.pinfo.thr_s[gr][ch][3 * sfb + i] = en1\n * Math.max(en0 * ratio.thm.s[sfb][i],\n gfc.ATH.s[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_s */\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] = -2.0\n * cod_info.subblock_gain[i];\n if (sfb < Encoder.SBPSY_s) {\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep\n * scalefac[sfb2];\n }\n sfb2++;\n }\n }\n }\n /* block type short */\n gfc.pinfo.LAMEqss[gr][ch] = cod_info.global_gain;\n gfc.pinfo.LAMEmainbits[gr][ch] = cod_info.part2_3_length\n + cod_info.part2_length;\n gfc.pinfo.LAMEsfbits[gr][ch] = cod_info.part2_length;\n\n gfc.pinfo.over[gr][ch] = noise.over_count;\n gfc.pinfo.max_noise[gr][ch] = noise.max_noise * 10.0;\n gfc.pinfo.over_noise[gr][ch] = noise.over_noise * 10.0;\n gfc.pinfo.tot_noise[gr][ch] = noise.tot_noise * 10.0;\n gfc.pinfo.over_SSD[gr][ch] = noise.over_SSD;\n }\n\n /**\n * updates plotting data for a whole frame\n *\n * Robert Hegemann 2000-10-21\n */\n function set_frame_pinfo(gfp, ratio) {\n var gfc = gfp.internal_flags;\n\n gfc.masking_lower = 1.0;\n\n /*\n * for every granule and channel patch l3_enc and set info\n */\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n var scalefac_sav = new_int(L3Side.SFBMAX);\n System.arraycopy(cod_info.scalefac, 0, scalefac_sav, 0,\n scalefac_sav.length);\n\n /*\n * reconstruct the scalefactors in case SCFSI was used\n */\n if (gr == 1) {\n var sfb;\n for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n if (cod_info.scalefac[sfb] < 0) /* scfsi */\n cod_info.scalefac[sfb] = gfc.l3_side.tt[0][ch].scalefac[sfb];\n }\n }\n\n set_pinfo(gfp, cod_info, ratio[gr][ch], gr, ch);\n System.arraycopy(scalefac_sav, 0, cod_info.scalefac, 0,\n scalefac_sav.length);\n }\n /* for ch */\n }\n /* for gr */\n }\n\n}\n\nmodule.exports = QuantizePVT;\n","/*\n *\tMP3 huffman table selecting and bit counting\n *\n *\tCopyright (c) 1999-2005 Takehiro TOMINAGA\n *\tCopyright (c) 2002-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\t See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Takehiro.java,v 1.26 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Encoder = require('./Encoder.js');\nvar Tables = require('./Tables.js');\nvar GrInfo = require('./GrInfo.js');\nvar QuantizePVT = require('./QuantizePVT.js');\n\n\nfunction Takehiro() {\n\n var qupvt = null;\n this.qupvt = null;\n\n this.setModules = function (_qupvt) {\n this.qupvt = _qupvt;\n qupvt = _qupvt;\n }\n\n function Bits(b) {\n this.bits = 0 | b;\n }\n\n var subdv_table = [[0, 0], /* 0 bands */\n [0, 0], /* 1 bands */\n [0, 0], /* 2 bands */\n [0, 0], /* 3 bands */\n [0, 0], /* 4 bands */\n [0, 1], /* 5 bands */\n [1, 1], /* 6 bands */\n [1, 1], /* 7 bands */\n [1, 2], /* 8 bands */\n [2, 2], /* 9 bands */\n [2, 3], /* 10 bands */\n [2, 3], /* 11 bands */\n [3, 4], /* 12 bands */\n [3, 4], /* 13 bands */\n [3, 4], /* 14 bands */\n [4, 5], /* 15 bands */\n [4, 5], /* 16 bands */\n [4, 6], /* 17 bands */\n [5, 6], /* 18 bands */\n [5, 6], /* 19 bands */\n [5, 7], /* 20 bands */\n [6, 7], /* 21 bands */\n [6, 7], /* 22 bands */\n ];\n\n /**\n * nonlinear quantization of xr More accurate formula than the ISO formula.\n * Takes into account the fact that we are quantizing xr . ix, but we want\n * ix^4/3 to be as close as possible to x^4/3. (taking the nearest int would\n * mean ix is as close as possible to xr, which is different.)\n *\n * From Segher Boessenkool <segher@eastsite.nl> 11/1999\n *\n * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro Tominaga.\n * If you need the ASM code, check CVS circa Aug 2000.\n *\n * 01/2004: Optimizations by Gabriel Bouvigne\n */\n function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) {\n var compareval0 = (1.0 - 0.4054) / istep;\n\n assert(l > 0);\n l = l >> 1;\n while ((l--) != 0) {\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n }\n }\n\n /**\n * XRPOW_FTOI is a macro to convert floats to ints.<BR>\n * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x]<BR>\n * ROUNDFAC= -0.0946<BR>\n *\n * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x]<BR>\n * ROUNDFAC=0.4054<BR>\n *\n * Note: using floor() or 0| is extremely slow. On machines where the\n * TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile to write\n * some ASM for XRPOW_FTOI().\n */\n function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) {\n assert(l > 0);\n\n l = l >> 1;\n var remaining = l % 2;\n l = l >> 1;\n while (l-- != 0) {\n var x0, x1, x2, x3;\n var rx0, rx1, rx2, rx3;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n x2 = xr[xrPos++] * istep;\n rx1 = 0 | x1;\n x3 = xr[xrPos++] * istep;\n rx2 = 0 | x2;\n x0 += qupvt.adj43[rx0];\n rx3 = 0 | x3;\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n x2 += qupvt.adj43[rx2];\n ix[ixPos++] = 0 | x1;\n x3 += qupvt.adj43[rx3];\n ix[ixPos++] = 0 | x2;\n ix[ixPos++] = 0 | x3;\n }\n if (remaining != 0) {\n var x0, x1;\n var rx0, rx1;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n rx1 = 0 | x1;\n x0 += qupvt.adj43[rx0];\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n ix[ixPos++] = 0 | x1;\n }\n }\n\n /**\n * Quantization function This function will select which lines to quantize\n * and call the proper quantization function\n */\n function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) {\n /* quantize on xr^(3/4) instead of xr */\n var sfb;\n var sfbmax;\n var j = 0;\n var prev_data_use;\n var accumulate = 0;\n var accumulate01 = 0;\n var xpPos = 0;\n var iData = pi;\n var iDataPos = 0;\n var acc_iData = iData;\n var acc_iDataPos = 0;\n var acc_xp = xp;\n var acc_xpPos = 0;\n\n /*\n * Reusing previously computed data does not seems to work if global\n * gain is changed. Finding why it behaves this way would allow to use a\n * cache of previously computed values (let's 10 cached values per sfb)\n * that would probably provide a noticeable speedup\n */\n prev_data_use = (prevNoise != null && (codInfo.global_gain == prevNoise.global_gain));\n\n if (codInfo.block_type == Encoder.SHORT_TYPE)\n sfbmax = 38;\n else\n sfbmax = 21;\n\n for (sfb = 0; sfb <= sfbmax; sfb++) {\n var step = -1;\n\n if (prev_data_use || codInfo.block_type == Encoder.NORM_TYPE) {\n step = codInfo.global_gain\n - ((codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb]\n : 0)) << (codInfo.scalefac_scale + 1))\n - codInfo.subblock_gain[codInfo.window[sfb]] * 8;\n }\n assert(codInfo.width[sfb] >= 0);\n if (prev_data_use && (prevNoise.step[sfb] == step)) {\n /*\n * do not recompute this part, but compute accumulated lines\n */\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n } else { /* should compute this part */\n var l = codInfo.width[sfb];\n\n if ((j + codInfo.width[sfb]) > codInfo.max_nonzero_coeff) {\n /* do not compute upper zero part */\n var usefullsize;\n usefullsize = codInfo.max_nonzero_coeff - j + 1;\n Arrays.fill(pi, codInfo.max_nonzero_coeff, 576, 0);\n l = usefullsize;\n\n if (l < 0) {\n l = 0;\n }\n\n /* no need to compute higher sfb values */\n sfb = sfbmax + 1;\n }\n\n /* accumulate lines to quantize */\n if (0 == accumulate && 0 == accumulate01) {\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n if (prevNoise != null && prevNoise.sfb_count1 > 0\n && sfb >= prevNoise.sfb_count1\n && prevNoise.step[sfb] > 0\n && step >= prevNoise.step[sfb]) {\n\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate01 += l;\n } else {\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate += l;\n }\n\n if (l <= 0) {\n /*\n * rh: 20040215 may happen due to \"prev_data_use\"\n * optimization\n */\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n\n break;\n /* ends for-loop */\n }\n }\n if (sfb <= sfbmax) {\n iDataPos += codInfo.width[sfb];\n xpPos += codInfo.width[sfb];\n j += codInfo.width[sfb];\n }\n }\n if (accumulate != 0) { /* last data part */\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) { /* last data part */\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n\n }\n\n /**\n * ix_max\n */\n function ix_max(ix, ixPos, endPos) {\n var max1 = 0, max2 = 0;\n\n do {\n var x1 = ix[ixPos++];\n var x2 = ix[ixPos++];\n if (max1 < x1)\n max1 = x1;\n\n if (max2 < x2)\n max2 = x2;\n } while (ixPos < endPos);\n if (max1 < max2)\n max1 = max2;\n return max1;\n }\n\n function count_bit_ESC(ix, ixPos, end, t1, t2, s) {\n /* ESC-table is used */\n var linbits = Tables.ht[t1].xlen * 65536 + Tables.ht[t2].xlen;\n var sum = 0, sum2;\n\n do {\n var x = ix[ixPos++];\n var y = ix[ixPos++];\n\n if (x != 0) {\n if (x > 14) {\n x = 15;\n sum += linbits;\n }\n x *= 16;\n }\n\n if (y != 0) {\n if (y > 14) {\n y = 15;\n sum += linbits;\n }\n x += y;\n }\n\n sum += Tables.largetbl[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1 = t2;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC(ix, ixPos, end, s) {\n /* No ESC-words */\n var sum1 = 0;\n var hlen1 = Tables.ht[1].hlen;\n\n do {\n var x = ix[ixPos + 0] * 2 + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n } while (ixPos < end);\n\n s.bits += sum1;\n return 1;\n }\n\n function count_bit_noESC_from2(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum = 0, sum2;\n var xlen = Tables.ht[t1].xlen;\n var hlen;\n if (t1 == 2)\n hlen = Tables.table23;\n else\n hlen = Tables.table56;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum += hlen[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1++;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC_from3(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum1 = 0;\n var sum2 = 0;\n var sum3 = 0;\n var xlen = Tables.ht[t1].xlen;\n var hlen1 = Tables.ht[t1].hlen;\n var hlen2 = Tables.ht[t1 + 1].hlen;\n var hlen3 = Tables.ht[t1 + 2].hlen;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n sum2 += hlen2[x];\n sum3 += hlen3[x];\n } while (ixPos < end);\n var t = t1;\n if (sum1 > sum2) {\n sum1 = sum2;\n t++;\n }\n if (sum1 > sum3) {\n sum1 = sum3;\n t = t1 + 2;\n }\n s.bits += sum1;\n\n return t;\n }\n\n /*************************************************************************/\n /* choose table */\n /*************************************************************************/\n\n var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13,\n 13, 13, 13, 13, 13, 13];\n\n /**\n * Choose the Huffman table that will encode ix[begin..end] with the fewest\n * bits.\n *\n * Note: This code contains knowledge about the sizes and characteristics of\n * the Huffman tables as defined in the IS (Table B.7), and will not work\n * with any arbitrary tables.\n */\n function choose_table(ix, ixPos, endPos, s) {\n var max = ix_max(ix, ixPos, endPos);\n\n switch (max) {\n case 0:\n return max;\n\n case 1:\n return count_bit_noESC(ix, ixPos, endPos, s);\n\n case 2:\n case 3:\n return count_bit_noESC_from2(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n return count_bit_noESC_from3(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n default:\n /* try tables with linbits */\n if (max > QuantizePVT.IXMAX_VAL) {\n s.bits = QuantizePVT.LARGE_BITS;\n return -1;\n }\n max -= 15;\n var choice2;\n for (choice2 = 24; choice2 < 32; choice2++) {\n if (Tables.ht[choice2].linmax >= max) {\n break;\n }\n }\n var choice;\n for (choice = choice2 - 8; choice < 24; choice++) {\n if (Tables.ht[choice].linmax >= max) {\n break;\n }\n }\n return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s);\n }\n }\n\n /**\n * count_bit\n */\n this.noquant_count_bits = function (gfc, gi, prev_noise) {\n var ix = gi.l3_enc;\n var i = Math.min(576, ((gi.max_nonzero_coeff + 2) >> 1) << 1);\n\n if (prev_noise != null)\n prev_noise.sfb_count1 = 0;\n\n /* Determine count1 region */\n for (; i > 1; i -= 2)\n if ((ix[i - 1] | ix[i - 2]) != 0)\n break;\n gi.count1 = i;\n\n /* Determines the number of bits to encode the quadruples. */\n var a1 = 0;\n var a2 = 0;\n for (; i > 3; i -= 4) {\n var p;\n /* hack to check if all values <= 1 */\n //throw \"TODO: HACK if ((((long) ix[i - 1] | (long) ix[i - 2] | (long) ix[i - 3] | (long) ix[i - 4]) & 0xffffffffL) > 1L \"\n //if (true) {\n if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 0x7fffffff) > 1) {\n break;\n }\n p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n a1 += Tables.t32l[p];\n a2 += Tables.t33l[p];\n }\n var bits = a1;\n gi.count1table_select = 0;\n if (a1 > a2) {\n bits = a2;\n gi.count1table_select = 1;\n }\n\n gi.count1bits = bits;\n gi.big_values = i;\n if (i == 0)\n return bits;\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n a1 = 3 * gfc.scalefac_band.s[3];\n if (a1 > gi.big_values)\n a1 = gi.big_values;\n a2 = gi.big_values;\n\n } else if (gi.block_type == Encoder.NORM_TYPE) {\n assert(i <= 576);\n /* bv_scf has 576 entries (0..575) */\n a1 = gi.region0_count = gfc.bv_scf[i - 2];\n a2 = gi.region1_count = gfc.bv_scf[i - 1];\n\n assert(a1 + a2 + 2 < Encoder.SBPSY_l);\n a2 = gfc.scalefac_band.l[a1 + a2 + 2];\n a1 = gfc.scalefac_band.l[a1 + 1];\n if (a2 < i) {\n var bi = new Bits(bits);\n gi.table_select[2] = choose_table(ix, a2, i, bi);\n bits = bi.bits;\n }\n } else {\n gi.region0_count = 7;\n /* gi.region1_count = SBPSY_l - 7 - 1; */\n gi.region1_count = Encoder.SBMAX_l - 1 - 7 - 1;\n a1 = gfc.scalefac_band.l[7 + 1];\n a2 = i;\n if (a1 > a2) {\n a1 = a2;\n }\n }\n\n /* have to allow for the case when bigvalues < region0 < region1 */\n /* (and region0, region1 are ignored) */\n a1 = Math.min(a1, i);\n a2 = Math.min(a2, i);\n\n assert(a1 >= 0);\n assert(a2 >= 0);\n\n /* Count the number of bits necessary to code the bigvalues region. */\n if (0 < a1) {\n var bi = new Bits(bits);\n gi.table_select[0] = choose_table(ix, 0, a1, bi);\n bits = bi.bits;\n }\n if (a1 < a2) {\n var bi = new Bits(bits);\n gi.table_select[1] = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n }\n if (gfc.use_best_huffman == 2) {\n gi.part2_3_length = bits;\n best_huffman_divide(gfc, gi);\n bits = gi.part2_3_length;\n }\n\n if (prev_noise != null) {\n if (gi.block_type == Encoder.NORM_TYPE) {\n var sfb = 0;\n while (gfc.scalefac_band.l[sfb] < gi.big_values) {\n sfb++;\n }\n prev_noise.sfb_count1 = sfb;\n }\n }\n\n return bits;\n }\n\n this.count_bits = function (gfc, xr, gi, prev_noise) {\n var ix = gi.l3_enc;\n\n /* since quantize_xrpow uses table lookup, we need to check this first: */\n var w = (QuantizePVT.IXMAX_VAL) / qupvt.IPOW20(gi.global_gain);\n\n if (gi.xrpow_max > w)\n return QuantizePVT.LARGE_BITS;\n\n quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise);\n\n if ((gfc.substep_shaping & 2) != 0) {\n var j = 0;\n /* 0.634521682242439 = 0.5946*2**(.5*0.1875) */\n var gain = gi.global_gain + gi.scalefac_scale;\n var roundfac = 0.634521682242439 / qupvt.IPOW20(gain);\n for (var sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert(width >= 0);\n if (0 == gfc.pseudohalf[sfb]) {\n j += width;\n } else {\n var k;\n for (k = j, j += width; k < j; ++k) {\n ix[k] = (xr[k] >= roundfac) ? ix[k] : 0;\n }\n }\n }\n }\n return this.noquant_count_bits(gfc, gi, prev_noise);\n }\n\n /**\n * re-calculate the best scalefac_compress using scfsi the saved bits are\n * kept in the bit reservoir.\n */\n function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info.big_values;\n\n for (var r0 = 0; r0 <= 7 + 15; r0++) {\n r01_bits[r0] = QuantizePVT.LARGE_BITS;\n }\n\n for (var r0 = 0; r0 < 16; r0++) {\n var a1 = gfc.scalefac_band.l[r0 + 1];\n if (a1 >= bigv)\n break;\n var r0bits = 0;\n var bi = new Bits(r0bits);\n var r0t = choose_table(ix, 0, a1, bi);\n r0bits = bi.bits;\n\n for (var r1 = 0; r1 < 8; r1++) {\n var a2 = gfc.scalefac_band.l[r0 + r1 + 2];\n if (a2 >= bigv)\n break;\n var bits = r0bits;\n bi = new Bits(bits);\n var r1t = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n if (r01_bits[r0 + r1] > bits) {\n r01_bits[r0 + r1] = bits;\n r01_div[r0 + r1] = r0;\n r0_tbl[r0 + r1] = r0t;\n r1_tbl[r0 + r1] = r1t;\n }\n }\n }\n }\n\n function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info2.big_values;\n\n for (var r2 = 2; r2 < Encoder.SBMAX_l + 1; r2++) {\n var a2 = gfc.scalefac_band.l[r2];\n if (a2 >= bigv)\n break;\n var bits = r01_bits[r2 - 2] + cod_info2.count1bits;\n if (gi.part2_3_length <= bits)\n break;\n\n var bi = new Bits(bits);\n var r2t = choose_table(ix, a2, bigv, bi);\n bits = bi.bits;\n if (gi.part2_3_length <= bits)\n continue;\n\n gi.assign(cod_info2);\n gi.part2_3_length = bits;\n gi.region0_count = r01_div[r2 - 2];\n gi.region1_count = r2 - 2 - r01_div[r2 - 2];\n gi.table_select[0] = r0_tbl[r2 - 2];\n gi.table_select[1] = r1_tbl[r2 - 2];\n gi.table_select[2] = r2t;\n }\n }\n\n this.best_huffman_divide = function (gfc, gi) {\n var cod_info2 = new GrInfo();\n var ix = gi.l3_enc;\n var r01_bits = new_int(7 + 15 + 1);\n var r01_div = new_int(7 + 15 + 1);\n var r0_tbl = new_int(7 + 15 + 1);\n var r1_tbl = new_int(7 + 15 + 1);\n\n /* SHORT BLOCK stuff fails for MPEG2 */\n if (gi.block_type == Encoder.SHORT_TYPE && gfc.mode_gr == 1)\n return;\n\n cod_info2.assign(gi);\n if (gi.block_type == Encoder.NORM_TYPE) {\n recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl);\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n }\n var i = cod_info2.big_values;\n if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1)\n return;\n\n i = gi.count1 + 2;\n if (i > 576)\n return;\n\n /* Determines the number of bits to encode the quadruples. */\n cod_info2.assign(gi);\n cod_info2.count1 = i;\n var a1 = 0;\n var a2 = 0;\n\n assert(i <= 576);\n\n for (; i > cod_info2.big_values; i -= 4) {\n var p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2\n + ix[i - 1];\n a1 += Tables.t32l[p];\n a2 += Tables.t33l[p];\n }\n cod_info2.big_values = i;\n\n cod_info2.count1table_select = 0;\n if (a1 > a2) {\n a1 = a2;\n cod_info2.count1table_select = 1;\n }\n\n cod_info2.count1bits = a1;\n\n if (cod_info2.block_type == Encoder.NORM_TYPE)\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n else {\n /* Count the number of bits necessary to code the bigvalues region. */\n cod_info2.part2_3_length = a1;\n a1 = gfc.scalefac_band.l[7 + 1];\n if (a1 > i) {\n a1 = i;\n }\n if (a1 > 0) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[0] = choose_table(ix, 0, a1, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (i > a1) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[1] = choose_table(ix, a1, i, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (gi.part2_3_length > cod_info2.part2_3_length)\n gi.assign(cod_info2);\n }\n }\n\n var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16];\n var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8];\n var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4];\n var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3];\n Takehiro.slen1_tab = slen1_tab;\n Takehiro.slen2_tab = slen2_tab;\n\n function scfsi_calc(ch, l3_side) {\n var sfb;\n var gi = l3_side.tt[1][ch];\n var g0 = l3_side.tt[0][ch];\n\n for (var i = 0; i < Tables.scfsi_band.length - 1; i++) {\n for (sfb = Tables.scfsi_band[i]; sfb < Tables.scfsi_band[i + 1]; sfb++) {\n if (g0.scalefac[sfb] != gi.scalefac[sfb]\n && gi.scalefac[sfb] >= 0)\n break;\n }\n if (sfb == Tables.scfsi_band[i + 1]) {\n for (sfb = Tables.scfsi_band[i]; sfb < Tables.scfsi_band[i + 1]; sfb++) {\n gi.scalefac[sfb] = -1;\n }\n l3_side.scfsi[ch][i] = 1;\n }\n }\n var s1 = 0;\n var c1 = 0;\n for (sfb = 0; sfb < 11; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c1++;\n if (s1 < gi.scalefac[sfb])\n s1 = gi.scalefac[sfb];\n }\n var s2 = 0;\n var c2 = 0;\n for (; sfb < Encoder.SBPSY_l; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c2++;\n if (s2 < gi.scalefac[sfb])\n s2 = gi.scalefac[sfb];\n }\n\n for (var i = 0; i < 16; i++) {\n if (s1 < slen1_n[i] && s2 < slen2_n[i]) {\n var c = slen1_tab[i] * c1 + slen2_tab[i] * c2;\n if (gi.part2_length > c) {\n gi.part2_length = c;\n gi.scalefac_compress = i;\n }\n }\n }\n }\n\n /**\n * Find the optimal way to store the scalefactors. Only call this routine\n * after final scalefactors have been chosen and the channel/granule will\n * not be re-encoded.\n */\n this.best_scalefac_store = function (gfc, gr, ch, l3_side) {\n /* use scalefac_scale if we can */\n var gi = l3_side.tt[gr][ch];\n var sfb, i, j, l;\n var recalc = 0;\n\n /*\n * remove scalefacs from bands with ix=0. This idea comes from the AAC\n * ISO docs. added mt 3/00\n */\n /* check if l3_enc=0 */\n j = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert(width >= 0);\n j += width;\n for (l = -width; l < 0; l++) {\n if (gi.l3_enc[l + j] != 0)\n break;\n }\n if (l == 0)\n gi.scalefac[sfb] = recalc = -2;\n /* anything goes. */\n /*\n * only best_scalefac_store and calc_scfsi know--and only they\n * should know--about the magic number -2.\n */\n }\n\n if (0 == gi.scalefac_scale && 0 == gi.preflag) {\n var s = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n s |= gi.scalefac[sfb];\n\n if (0 == (s & 1) && s != 0) {\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] >>= 1;\n\n gi.scalefac_scale = recalc = 1;\n }\n }\n\n if (0 == gi.preflag && gi.block_type != Encoder.SHORT_TYPE\n && gfc.mode_gr == 2) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] < qupvt.pretab[sfb]\n && gi.scalefac[sfb] != -2)\n break;\n if (sfb == Encoder.SBPSY_l) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] -= qupvt.pretab[sfb];\n\n gi.preflag = recalc = 1;\n }\n }\n\n for (i = 0; i < 4; i++)\n l3_side.scfsi[ch][i] = 0;\n\n if (gfc.mode_gr == 2 && gr == 1\n && l3_side.tt[0][ch].block_type != Encoder.SHORT_TYPE\n && l3_side.tt[1][ch].block_type != Encoder.SHORT_TYPE) {\n scfsi_calc(ch, l3_side);\n recalc = 0;\n }\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -2) {\n gi.scalefac[sfb] = 0;\n /* if anything goes, then 0 is a good choice */\n }\n }\n if (recalc != 0) {\n if (gfc.mode_gr == 2) {\n this.scale_bitcount(gi);\n } else {\n this.scale_bitcount_lsf(gfc, gi);\n }\n }\n }\n\n function all_scalefactors_not_negative(scalefac, n) {\n for (var i = 0; i < n; ++i) {\n if (scalefac[i] < 0)\n return false;\n }\n return true;\n }\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 18*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_short = [0, 18, 36, 54, 54, 36, 54, 72,\n 54, 72, 90, 72, 90, 108, 108, 126];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 17*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_mixed = [0, 18, 36, 54, 51, 35, 53, 71,\n 52, 70, 88, 69, 87, 105, 104, 122];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 11*slen1_tab[i] + 10*slen2_tab[i]\n */\n var scale_long = [0, 10, 20, 30, 33, 21, 31, 41, 32, 42,\n 52, 43, 53, 63, 64, 74];\n\n /**\n * Also calculates the number of bits necessary to code the scalefactors.\n */\n this.scale_bitcount = function (cod_info) {\n var k, sfb, max_slen1 = 0, max_slen2 = 0;\n\n /* maximum values */\n var tab;\n var scalefac = cod_info.scalefac;\n\n assert(all_scalefactors_not_negative(scalefac, cod_info.sfbmax));\n\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n tab = scale_short;\n if (cod_info.mixed_block_flag != 0)\n tab = scale_mixed;\n } else { /* block_type == 1,2,or 3 */\n tab = scale_long;\n if (0 == cod_info.preflag) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n if (scalefac[sfb] < qupvt.pretab[sfb])\n break;\n\n if (sfb == Encoder.SBPSY_l) {\n cod_info.preflag = 1;\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++)\n scalefac[sfb] -= qupvt.pretab[sfb];\n }\n }\n }\n\n for (sfb = 0; sfb < cod_info.sfbdivide; sfb++)\n if (max_slen1 < scalefac[sfb])\n max_slen1 = scalefac[sfb];\n\n for (; sfb < cod_info.sfbmax; sfb++)\n if (max_slen2 < scalefac[sfb])\n max_slen2 = scalefac[sfb];\n\n /*\n * from Takehiro TOMINAGA <tominaga@isoternet.org> 10/99 loop over *all*\n * posible values of scalefac_compress to find the one which uses the\n * smallest number of bits. ISO would stop at first valid index\n */\n cod_info.part2_length = QuantizePVT.LARGE_BITS;\n for (k = 0; k < 16; k++) {\n if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k]\n && cod_info.part2_length > tab[k]) {\n cod_info.part2_length = tab[k];\n cod_info.scalefac_compress = k;\n }\n }\n return cod_info.part2_length == QuantizePVT.LARGE_BITS;\n }\n\n /**\n * table of largest scalefactor values for MPEG2\n */\n var max_range_sfac_tab = [[15, 15, 7, 7],\n [15, 15, 7, 0], [7, 3, 0, 0], [15, 31, 31, 0],\n [7, 7, 7, 0], [3, 3, 0, 0]];\n\n /**\n * Also counts the number of bits to encode the scalefacs but for MPEG 2\n * Lower sampling frequencies (24, 22.05 and 16 kHz.)\n *\n * This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS,\n * \"Audio Decoding Layer III\"\n */\n this.scale_bitcount_lsf = function (gfc, cod_info) {\n var table_number, row_in_table, partition, nr_sfb, window;\n var over;\n var i, sfb;\n var max_sfac = new_int(4);\n//var partition_table;\n var scalefac = cod_info.scalefac;\n\n /*\n * Set partition table. Note that should try to use table one, but do\n * not yet...\n */\n if (cod_info.preflag != 0)\n table_number = 2;\n else\n table_number = 0;\n\n for (i = 0; i < 4; i++)\n max_sfac[i] = 0;\n\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n row_in_table = 1;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition] / 3;\n for (i = 0; i < nr_sfb; i++, sfb++)\n for (window = 0; window < 3; window++)\n if (scalefac[sfb * 3 + window] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb * 3 + window];\n }\n } else {\n row_in_table = 0;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition];\n for (i = 0; i < nr_sfb; i++, sfb++)\n if (scalefac[sfb] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb];\n }\n }\n\n for (over = false, partition = 0; partition < 4; partition++) {\n if (max_sfac[partition] > max_range_sfac_tab[table_number][partition])\n over = true;\n }\n if (!over) {\n var slen1, slen2, slen3, slen4;\n\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (partition = 0; partition < 4; partition++)\n cod_info.slen[partition] = log2tab[max_sfac[partition]];\n\n /* set scalefac_compress */\n slen1 = cod_info.slen[0];\n slen2 = cod_info.slen[1];\n slen3 = cod_info.slen[2];\n slen4 = cod_info.slen[3];\n\n switch (table_number) {\n case 0:\n cod_info.scalefac_compress = (((slen1 * 5) + slen2) << 4)\n + (slen3 << 2) + slen4;\n break;\n\n case 1:\n cod_info.scalefac_compress = 400 + (((slen1 * 5) + slen2) << 2)\n + slen3;\n break;\n\n case 2:\n cod_info.scalefac_compress = 500 + (slen1 * 3) + slen2;\n break;\n\n default:\n System.err.printf(\"intensity stereo not implemented yet\\n\");\n break;\n }\n }\n if (!over) {\n assert(cod_info.sfb_partition_table != null);\n cod_info.part2_length = 0;\n for (partition = 0; partition < 4; partition++)\n cod_info.part2_length += cod_info.slen[partition]\n * cod_info.sfb_partition_table[partition];\n }\n return over;\n }\n\n /*\n * Since no bands have been over-amplified, we can set scalefac_compress and\n * slen[] for the formatter\n */\n var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,\n 4, 4, 4, 4];\n\n this.huffman_init = function (gfc) {\n for (var i = 2; i <= 576; i += 2) {\n var scfb_anz = 0, bv_index;\n while (gfc.scalefac_band.l[++scfb_anz] < i)\n ;\n\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n while (gfc.scalefac_band.l[bv_index + 1] > i)\n bv_index--;\n\n if (bv_index < 0) {\n /*\n * this is an indication that everything is going to be encoded\n * as region0: bigvalues < region0 < region1 so lets set\n * region0, region1 to some value larger than bigvalues\n */\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n }\n\n gfc.bv_scf[i - 2] = bv_index;\n\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i)\n bv_index--;\n\n if (bv_index < 0) {\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n }\n\n gfc.bv_scf[i - 1] = bv_index;\n }\n }\n}\n\nmodule.exports = Takehiro;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Takehiro = require('./Takehiro.js');\nvar Tables = require('./Tables.js');\nvar Encoder = require('./Encoder.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\n\nBitStream.EQ = function (a, b) {\n return (Math.abs(a) > Math.abs(b)) ? (Math.abs((a) - (b)) <= (Math\n .abs(a) * 1e-6))\n : (Math.abs((a) - (b)) <= (Math.abs(b) * 1e-6));\n};\n\nBitStream.NEQ = function (a, b) {\n return !BitStream.EQ(a, b);\n};\n\nfunction BitStream() {\n var self = this;\n var Lame = require('./Lame.js');\n var CRC16_POLYNOMIAL = 0x8005;\n\n /*\n * we work with ints, so when doing bit manipulation, we limit ourselves to\n * MAX_LENGTH-2 just to be on the safe side\n */\n var MAX_LENGTH = 32;\n\n //GainAnalysis ga;\n //MPGLib mpg;\n //Version ver;\n //VBRTag vbr;\n var ga = null;\n var mpg = null;\n var ver = null;\n var vbr = null;\n\n //public final void setModules(GainAnalysis ga, MPGLib mpg, Version ver,\n //\tVBRTag vbr) {\n\n this.setModules = function (_ga, _mpg, _ver, _vbr) {\n ga = _ga;\n mpg = _mpg;\n ver = _ver;\n vbr = _vbr;\n };\n\n /**\n * Bit stream buffer.\n */\n //private byte[] buf;\n var buf = null;\n /**\n * Bit counter of bit stream.\n */\n var totbit = 0;\n /**\n * Pointer to top byte in buffer.\n */\n var bufByteIdx = 0;\n /**\n * Pointer to top bit of top byte in buffer.\n */\n var bufBitIdx = 0;\n\n /**\n * compute bitsperframe and mean_bits for a layer III frame\n */\n this.getframebits = function (gfp) {\n var gfc = gfp.internal_flags;\n var bit_rate;\n\n /* get bitrate in kbps [?] */\n if (gfc.bitrate_index != 0)\n bit_rate = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n else\n bit_rate = gfp.brate;\n assert(8 <= bit_rate && bit_rate <= 640);\n\n /* main encoding routine toggles padding on and off */\n /* one Layer3 Slot consists of 8 bits */\n var bytes = 0 | (gfp.version + 1) * 72000 * bit_rate / gfp.out_samplerate + gfc.padding;\n return 8 * bytes;\n };\n\n function putheader_bits(gfc) {\n System.arraycopy(gfc.header[gfc.w_ptr].buf, 0, buf, bufByteIdx, gfc.sideinfo_len);\n bufByteIdx += gfc.sideinfo_len;\n totbit += gfc.sideinfo_len * 8;\n gfc.w_ptr = (gfc.w_ptr + 1) & (LameInternalFlags.MAX_HEADER_BUF - 1);\n }\n\n /**\n * write j bits into the bit stream\n */\n function putbits2(gfc, val, j) {\n assert(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n assert(gfc.header[gfc.w_ptr].write_timing >= totbit);\n if (gfc.header[gfc.w_ptr].write_timing == totbit) {\n putheader_bits(gfc);\n }\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * write j bits into the bit stream, ignoring frame headers\n */\n function putbits_noheaders(gfc, val, j) {\n assert(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * Some combinations of bitrate, Fs, and stereo make it impossible to stuff\n * out a frame using just main_data, due to the limited number of bits to\n * indicate main_data_length. In these situations, we put stuffing bits into\n * the ancillary data...\n */\n function drain_into_ancillary(gfp, remainingBits) {\n var gfc = gfp.internal_flags;\n var i;\n assert(remainingBits >= 0);\n\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4c, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x41, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4d, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x45, 8);\n remainingBits -= 8;\n }\n\n if (remainingBits >= 32) {\n var version = ver.getLameShortVersion();\n if (remainingBits >= 32)\n for (i = 0; i < version.length && remainingBits >= 8; ++i) {\n remainingBits -= 8;\n putbits2(gfc, version.charAt(i), 8);\n }\n }\n\n for (; remainingBits >= 1; remainingBits -= 1) {\n putbits2(gfc, gfc.ancillary_flag, 1);\n gfc.ancillary_flag ^= (!gfp.disable_reservoir ? 1 : 0);\n }\n\n assert(remainingBits == 0);\n\n }\n\n /**\n * write N bits into the header\n */\n function writeheader(gfc, val, j) {\n var ptr = gfc.header[gfc.h_ptr].ptr;\n\n while (j > 0) {\n var k = Math.min(j, 8 - (ptr & 7));\n j -= k;\n assert(j < MAX_LENGTH);\n /* >> 32 too large for 32 bit machines */\n\n gfc.header[gfc.h_ptr].buf[ptr >> 3] |= ((val >> j)) << (8 - (ptr & 7) - k);\n ptr += k;\n }\n gfc.header[gfc.h_ptr].ptr = ptr;\n }\n\n function CRC_update(value, crc) {\n value <<= 8;\n for (var i = 0; i < 8; i++) {\n value <<= 1;\n crc <<= 1;\n\n if ((((crc ^ value) & 0x10000) != 0))\n crc ^= CRC16_POLYNOMIAL;\n }\n return crc;\n }\n\n this.CRC_writeheader = function (gfc, header) {\n var crc = 0xffff;\n /* (jo) init crc16 for error_protection */\n\n crc = CRC_update(header[2] & 0xff, crc);\n crc = CRC_update(header[3] & 0xff, crc);\n for (var i = 6; i < gfc.sideinfo_len; i++) {\n crc = CRC_update(header[i] & 0xff, crc);\n }\n\n header[4] = (byte)(crc >> 8);\n header[5] = (byte)(crc & 255);\n };\n\n function encodeSideInfo2(gfp, bitsPerFrame) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var gr, ch;\n\n l3_side = gfc.l3_side;\n gfc.header[gfc.h_ptr].ptr = 0;\n Arrays.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0);\n if (gfp.out_samplerate < 16000)\n writeheader(gfc, 0xffe, 12);\n else\n writeheader(gfc, 0xfff, 12);\n writeheader(gfc, (gfp.version), 1);\n writeheader(gfc, 4 - 3, 2);\n writeheader(gfc, (!gfp.error_protection ? 1 : 0), 1);\n writeheader(gfc, (gfc.bitrate_index), 4);\n writeheader(gfc, (gfc.samplerate_index), 2);\n writeheader(gfc, (gfc.padding), 1);\n writeheader(gfc, (gfp.extension), 1);\n writeheader(gfc, (gfp.mode.ordinal()), 2);\n writeheader(gfc, (gfc.mode_ext), 2);\n writeheader(gfc, (gfp.copyright), 1);\n writeheader(gfc, (gfp.original), 1);\n writeheader(gfc, (gfp.emphasis), 2);\n if (gfp.error_protection) {\n writeheader(gfc, 0, 16);\n /* dummy */\n }\n\n if (gfp.version == 1) {\n /* MPEG1 */\n assert(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 9);\n\n if (gfc.channels_out == 2)\n writeheader(gfc, l3_side.private_bits, 3);\n else\n writeheader(gfc, l3_side.private_bits, 5);\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var band;\n for (band = 0; band < 4; band++) {\n writeheader(gfc, l3_side.scfsi[ch][band], 1);\n }\n }\n\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 4);\n\n if (gi.block_type != Encoder.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert(0 <= gi.region0_count && gi.region0_count < 16);\n assert(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n writeheader(gfc, gi.preflag, 1);\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n } else {\n /* MPEG2 */\n assert(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 8);\n writeheader(gfc, l3_side.private_bits, gfc.channels_out);\n\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 9);\n\n if (gi.block_type != Encoder.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert(0 <= gi.region0_count && gi.region0_count < 16);\n assert(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n\n if (gfp.error_protection) {\n /* (jo) error_protection: add crc16 information to header */\n CRC_writeheader(gfc, gfc.header[gfc.h_ptr].buf);\n }\n\n {\n var old = gfc.h_ptr;\n assert(gfc.header[old].ptr == gfc.sideinfo_len * 8);\n\n gfc.h_ptr = (old + 1) & (LameInternalFlags.MAX_HEADER_BUF - 1);\n gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing\n + bitsPerFrame;\n\n if (gfc.h_ptr == gfc.w_ptr) {\n /* yikes! we are out of header buffer space */\n System.err\n .println(\"Error: MAX_HEADER_BUF too small in bitstream.c \\n\");\n }\n\n }\n }\n\n function huffman_coder_count1(gfc, gi) {\n /* Write count1 area */\n var h = Tables.ht[gi.count1table_select + 32];\n var i, bits = 0;\n\n var ix = gi.big_values;\n var xr = gi.big_values;\n assert(gi.count1table_select < 2);\n\n for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) {\n var huffbits = 0;\n var p = 0, v;\n\n v = gi.l3_enc[ix + 0];\n if (v != 0) {\n p += 8;\n if (gi.xr[xr + 0] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n v = gi.l3_enc[ix + 1];\n if (v != 0) {\n p += 4;\n huffbits *= 2;\n if (gi.xr[xr + 1] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n v = gi.l3_enc[ix + 2];\n if (v != 0) {\n p += 2;\n huffbits *= 2;\n if (gi.xr[xr + 2] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n v = gi.l3_enc[ix + 3];\n if (v != 0) {\n p++;\n huffbits *= 2;\n if (gi.xr[xr + 3] < 0)\n huffbits++;\n assert(v <= 1);\n }\n\n ix += 4;\n xr += 4;\n putbits2(gfc, huffbits + h.table[p], h.hlen[p]);\n bits += h.hlen[p];\n }\n return bits;\n }\n\n /**\n * Implements the pseudocode of page 98 of the IS\n */\n function Huffmancode(gfc, tableindex, start, end, gi) {\n var h = Tables.ht[tableindex];\n var bits = 0;\n\n assert(tableindex < 32);\n if (0 == tableindex)\n return bits;\n\n for (var i = start; i < end; i += 2) {\n var cbits = 0;\n var xbits = 0;\n var linbits = h.xlen;\n var xlen = h.xlen;\n var ext = 0;\n var x1 = gi.l3_enc[i];\n var x2 = gi.l3_enc[i + 1];\n\n if (x1 != 0) {\n if (gi.xr[i] < 0)\n ext++;\n cbits--;\n }\n\n if (tableindex > 15) {\n /* use ESC-words */\n if (x1 > 14) {\n var linbits_x1 = x1 - 15;\n assert(linbits_x1 <= h.linmax);\n ext |= linbits_x1 << 1;\n xbits = linbits;\n x1 = 15;\n }\n\n if (x2 > 14) {\n var linbits_x2 = x2 - 15;\n assert(linbits_x2 <= h.linmax);\n ext <<= linbits;\n ext |= linbits_x2;\n xbits += linbits;\n x2 = 15;\n }\n xlen = 16;\n }\n\n if (x2 != 0) {\n ext <<= 1;\n if (gi.xr[i + 1] < 0)\n ext++;\n cbits--;\n }\n\n assert((x1 | x2) < 16);\n\n x1 = x1 * xlen + x2;\n xbits -= cbits;\n cbits += h.hlen[x1];\n\n assert(cbits <= MAX_LENGTH);\n assert(xbits <= MAX_LENGTH);\n\n putbits2(gfc, h.table[x1], cbits);\n putbits2(gfc, ext, xbits);\n bits += cbits + xbits;\n }\n return bits;\n }\n\n /**\n * Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, as\n * well as the definitions of the side information on pages 26 and 27.\n */\n function ShortHuffmancodebits(gfc, gi) {\n var region1Start = 3 * gfc.scalefac_band.s[3];\n if (region1Start > gi.big_values)\n region1Start = gi.big_values;\n\n /* short blocks do not have a region2 */\n var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n gi.big_values, gi);\n return bits;\n }\n\n function LongHuffmancodebits(gfc, gi) {\n var bigvalues, bits;\n var region1Start, region2Start;\n\n bigvalues = gi.big_values;\n assert(0 <= bigvalues && bigvalues <= 576);\n\n var i = gi.region0_count + 1;\n assert(0 <= i);\n assert(i < gfc.scalefac_band.l.length);\n region1Start = gfc.scalefac_band.l[i];\n i += gi.region1_count + 1;\n assert(0 <= i);\n assert(i < gfc.scalefac_band.l.length);\n region2Start = gfc.scalefac_band.l[i];\n\n if (region1Start > bigvalues)\n region1Start = bigvalues;\n\n if (region2Start > bigvalues)\n region2Start = bigvalues;\n\n bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n region2Start, gi);\n bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues,\n gi);\n return bits;\n }\n\n function writeMainData(gfp) {\n var gr, ch, sfb, data_bits, tot_bits = 0;\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n\n if (gfp.version == 1) {\n /* MPEG 1 */\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var slen1 = Takehiro.slen1_tab[gi.scalefac_compress];\n var slen2 = Takehiro.slen2_tab[gi.scalefac_compress];\n data_bits = 0;\n for (sfb = 0; sfb < gi.sfbdivide; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen1);\n data_bits += slen1;\n }\n for (; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen2);\n data_bits += slen2;\n }\n assert(data_bits == gi.part2_length);\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert(data_bits == gi.part2_3_length + gi.part2_length);\n tot_bits += data_bits;\n }\n /* for ch */\n }\n /* for gr */\n } else {\n /* MPEG 2 */\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var i, sfb_partition, scale_bits = 0;\n assert(gi.sfb_partition_table != null);\n data_bits = 0;\n sfb = 0;\n sfb_partition = 0;\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition] / 3;\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 0], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 1], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 2], 0), slen);\n scale_bits += 3 * slen;\n }\n }\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition];\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen);\n scale_bits += slen;\n }\n }\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert(data_bits == gi.part2_3_length);\n assert(scale_bits == gi.part2_length);\n tot_bits += scale_bits + data_bits;\n }\n /* for ch */\n }\n /* for gf */\n return tot_bits;\n }\n\n /* main_data */\n\n function TotalBytes() {\n this.total = 0;\n }\n\n /*\n * compute the number of bits required to flush all mp3 frames currently in\n * the buffer. This should be the same as the reservoir size. Only call this\n * routine between frames - i.e. only after all headers and data have been\n * added to the buffer by format_bitstream().\n *\n * Also compute total_bits_output = size of mp3 buffer (including frame\n * headers which may not have yet been send to the mp3 buffer) + number of\n * bits needed to flush all mp3 frames.\n *\n * total_bytes_output is the size of the mp3 output buffer if\n * lame_encode_flush_nogap() was called right now.\n */\n function compute_flushbits(gfp, total_bytes_output) {\n var gfc = gfp.internal_flags;\n var flushbits, remaining_headers;\n var bitsPerFrame;\n var last_ptr, first_ptr;\n first_ptr = gfc.w_ptr;\n /* first header to add to bitstream */\n last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags.MAX_HEADER_BUF - 1;\n\n /* add this many bits to bitstream so we can flush all headers */\n flushbits = gfc.header[last_ptr].write_timing - totbit;\n total_bytes_output.total = flushbits;\n\n if (flushbits >= 0) {\n /* if flushbits >= 0, some headers have not yet been written */\n /* reduce flushbits by the size of the headers */\n remaining_headers = 1 + last_ptr - first_ptr;\n if (last_ptr < first_ptr)\n remaining_headers = 1 + last_ptr - first_ptr\n + LameInternalFlags.MAX_HEADER_BUF;\n flushbits -= remaining_headers * 8 * gfc.sideinfo_len;\n }\n\n /*\n * finally, add some bits so that the last frame is complete these bits\n * are not necessary to decode the last frame, but some decoders will\n * ignore last frame if these bits are missing\n */\n bitsPerFrame = self.getframebits(gfp);\n flushbits += bitsPerFrame;\n total_bytes_output.total += bitsPerFrame;\n /* round up: */\n if ((total_bytes_output.total % 8) != 0)\n total_bytes_output.total = 1 + (total_bytes_output.total / 8);\n else\n total_bytes_output.total = (total_bytes_output.total / 8);\n total_bytes_output.total += bufByteIdx + 1;\n\n if (flushbits < 0) {\n System.err.println(\"strange error flushing buffer ... \\n\");\n }\n return flushbits;\n }\n\n this.flush_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var flushbits;\n var last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags.MAX_HEADER_BUF - 1;\n l3_side = gfc.l3_side;\n\n if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0)\n return;\n drain_into_ancillary(gfp, flushbits);\n\n /* check that the 100% of the last frame has been written to bitstream */\n assert(gfc.header[last_ptr].write_timing + this.getframebits(gfp) == totbit);\n\n /*\n * we have padded out all frames with ancillary data, which is the same\n * as filling the bitreservoir with ancillary data, so :\n */\n gfc.ResvSize = 0;\n l3_side.main_data_begin = 0;\n\n /* save the ReplayGain value */\n if (gfc.findReplayGain) {\n var RadioGain = ga.GetTitleGain(gfc.rgdata);\n assert(NEQ(RadioGain, GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES));\n gfc.RadioGain = Math.floor(RadioGain * 10.0 + 0.5) | 0;\n /* round to nearest */\n }\n\n /* find the gain and scale change required for no clipping */\n if (gfc.findPeakSample) {\n gfc.noclipGainChange = Math.ceil(Math\n .log10(gfc.PeakSample / 32767.0) * 20.0 * 10.0) | 0;\n /* round up */\n\n if (gfc.noclipGainChange > 0) {\n /* clipping occurs */\n if (EQ(gfp.scale, 1.0) || EQ(gfp.scale, 0.0))\n gfc.noclipScale = (Math\n .floor((32767.0 / gfc.PeakSample) * 100.0) / 100.0);\n /* round down */\n else {\n /*\n * the user specified his own scaling factor. We could\n * suggest the scaling factor of\n * (32767.0/gfp.PeakSample)*(gfp.scale) but it's usually\n * very inaccurate. So we'd rather not advice him on the\n * scaling factor.\n */\n gfc.noclipScale = -1;\n }\n } else\n /* no clipping */\n gfc.noclipScale = -1;\n }\n };\n\n this.add_dummy_byte = function (gfp, val, n) {\n var gfc = gfp.internal_flags;\n var i;\n\n while (n-- > 0) {\n putbits_noheaders(gfc, val, 8);\n\n for (i = 0; i < LameInternalFlags.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing += 8;\n }\n };\n\n /**\n * This is called after a frame of audio has been quantized and coded. It\n * will write the encoded audio to the bitstream. Note that from a layer3\n * encoder's perspective the bit stream is primarily a series of main_data()\n * blocks, with header and side information inserted at the proper locations\n * to maintain framing. (See Figure A.7 in the IS).\n */\n this.format_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n l3_side = gfc.l3_side;\n\n var bitsPerFrame = this.getframebits(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_pre);\n\n encodeSideInfo2(gfp, bitsPerFrame);\n var bits = 8 * gfc.sideinfo_len;\n bits += writeMainData(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_post);\n bits += l3_side.resvDrain_post;\n\n l3_side.main_data_begin += (bitsPerFrame - bits) / 8;\n\n /*\n * compare number of bits needed to clear all buffered mp3 frames with\n * what we think the resvsize is:\n */\n if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) {\n System.err.println(\"Internal buffer inconsistency. flushbits <> ResvSize\");\n }\n\n /*\n * compare main_data_begin for the next frame with what we think the\n * resvsize is:\n */\n if ((l3_side.main_data_begin * 8) != gfc.ResvSize) {\n System.err.printf(\"bit reservoir error: \\n\"\n + \"l3_side.main_data_begin: %d \\n\"\n + \"Resvoir size: %d \\n\"\n + \"resv drain (post) %d \\n\"\n + \"resv drain (pre) %d \\n\"\n + \"header and sideinfo: %d \\n\"\n + \"data bits: %d \\n\"\n + \"total bits: %d (remainder: %d) \\n\"\n + \"bitsperframe: %d \\n\",\n 8 * l3_side.main_data_begin, gfc.ResvSize,\n l3_side.resvDrain_post, l3_side.resvDrain_pre,\n 8 * gfc.sideinfo_len, bits - l3_side.resvDrain_post - 8\n * gfc.sideinfo_len, bits, bits % 8, bitsPerFrame);\n\n System.err.println(\"This is a fatal error. It has several possible causes:\");\n System.err.println(\"90%% LAME compiled with buggy version of gcc using advanced optimizations\");\n System.err.println(\" 9%% Your system is overclocked\");\n System.err.println(\" 1%% bug in LAME encoding library\");\n\n gfc.ResvSize = l3_side.main_data_begin * 8;\n }\n //;\n assert(totbit % 8 == 0);\n\n if (totbit > 1000000000) {\n /*\n * to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset\n * bit counter\n */\n var i;\n for (i = 0; i < LameInternalFlags.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing -= totbit;\n totbit = 0;\n }\n\n return 0;\n };\n\n /**\n * <PRE>\n * copy data out of the internal MP3 bit buffer into a user supplied\n * unsigned char buffer.\n *\n * mp3data=0 indicates data in buffer is an id3tags and VBR tags\n * mp3data=1 data is real mp3 frame data.\n * </PRE>\n */\n this.copy_buffer = function (gfc, buffer, bufferPos, size, mp3data) {\n var minimum = bufByteIdx + 1;\n if (minimum <= 0)\n return 0;\n if (size != 0 && minimum > size) {\n /* buffer is too small */\n return -1;\n }\n System.arraycopy(buf, 0, buffer, bufferPos, minimum);\n bufByteIdx = -1;\n bufBitIdx = 0;\n\n if (mp3data != 0) {\n var crc = new_int(1);\n crc[0] = gfc.nMusicCRC;\n vbr.updateMusicCRC(crc, buffer, bufferPos, minimum);\n gfc.nMusicCRC = crc[0];\n\n /**\n * sum number of bytes belonging to the mp3 stream this info will be\n * written into the Xing/LAME header for seeking\n */\n if (minimum > 0) {\n gfc.VBR_seek_table.nBytesWritten += minimum;\n }\n\n if (gfc.decode_on_the_fly) { /* decode the frame */\n var pcm_buf = new_float_n([2, 1152]);\n var mp3_in = minimum;\n var samples_out = -1;\n var i;\n\n /* re-synthesis to pcm. Repeat until we get a samples_out=0 */\n while (samples_out != 0) {\n\n samples_out = mpg.hip_decode1_unclipped(gfc.hip, buffer,\n bufferPos, mp3_in, pcm_buf[0], pcm_buf[1]);\n /*\n * samples_out = 0: need more data to decode samples_out =\n * -1: error. Lets assume 0 pcm output samples_out = number\n * of samples output\n */\n\n /*\n * set the lenght of the mp3 input buffer to zero, so that\n * in the next iteration of the loop we will be querying\n * mpglib about buffered data\n */\n mp3_in = 0;\n\n if (samples_out == -1) {\n /*\n * error decoding. Not fatal, but might screw up the\n * ReplayGain tag. What should we do? Ignore for now\n */\n samples_out = 0;\n }\n if (samples_out > 0) {\n /* process the PCM data */\n\n /*\n * this should not be possible, and indicates we have\n * overflown the pcm_buf buffer\n */\n assert(samples_out <= 1152);\n\n if (gfc.findPeakSample) {\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[0][i];\n else if (-pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[0][i];\n }\n if (gfc.channels_out > 1)\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[1][i];\n else if (-pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[1][i];\n }\n }\n\n if (gfc.findReplayGain)\n if (ga.AnalyzeSamples(gfc.rgdata, pcm_buf[0], 0,\n pcm_buf[1], 0, samples_out,\n gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n }\n /* if (samples_out>0) */\n }\n /* while (samples_out!=0) */\n }\n /* if (gfc.decode_on_the_fly) */\n\n }\n /* if (mp3data) */\n return minimum;\n };\n\n this.init_bit_stream_w = function (gfc) {\n buf = new_byte(Lame.LAME_MAXMP3BUFFER);\n\n gfc.h_ptr = gfc.w_ptr = 0;\n gfc.header[gfc.h_ptr].write_timing = 0;\n bufByteIdx = -1;\n bufBitIdx = 0;\n totbit = 0;\n };\n\n // From machine.h\n\n\n}\n\nmodule.exports = BitStream;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar new_short_n = common.new_short_n;\nvar assert = common.assert;\n\nvar PsyModel = require('./PsyModel.js');\nvar LameGlobalFlags = require('./LameGlobalFlags.js');\nvar LameInternalFlags = require('./LameInternalFlags.js');\nvar ATH = require('./ATH.js');\nvar ReplayGain = require('./ReplayGain.js');\nvar CBRNewIterationLoop = require('./CBRNewIterationLoop.js');\nvar BitStream = require('./BitStream.js');\nvar Tables = require('./Tables.js');\nvar Encoder = require('./Encoder.js');\n\nfunction Lame() {\n var self = this;\n var MPEGMode = require('./MPEGMode.js');\n var LAME_MAXALBUMART = (128 * 1024);\n\n Lame.V9 = 410;\n Lame.V8 = 420;\n Lame.V7 = 430;\n Lame.V6 = 440;\n Lame.V5 = 450;\n Lame.V4 = 460;\n Lame.V3 = 470;\n Lame.V2 = 480;\n Lame.V1 = 490;\n Lame.V0 = 500;\n\n /* still there for compatibility */\n\n Lame.R3MIX = 1000;\n Lame.STANDARD = 1001;\n Lame.EXTREME = 1002;\n Lame.INSANE = 1003;\n Lame.STANDARD_FAST = 1004;\n Lame.EXTREME_FAST = 1005;\n Lame.MEDIUM = 1006;\n Lame.MEDIUM_FAST = 1007;\n\n /**\n * maximum size of mp3buffer needed if you encode at most 1152 samples for\n * each call to lame_encode_buffer. see lame_encode_buffer() below\n * (LAME_MAXMP3BUFFER is now obsolete)\n */\n var LAME_MAXMP3BUFFER = (16384 + LAME_MAXALBUMART);\n Lame.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER;\n\n var ga;\n var bs;\n var p;\n var qupvt;\n var qu;\n var psy = new PsyModel();\n var vbr;\n var ver;\n var id3;\n var mpglib;\n this.enc = new Encoder();\n\n this.setModules = function (_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) {\n ga = _ga;\n bs = _bs;\n p = _p;\n qupvt = _qupvt;\n qu = _qu;\n vbr = _vbr;\n ver = _ver;\n id3 = _id3;\n mpglib = _mpglib;\n this.enc.setModules(bs, psy, qupvt, vbr);\n }\n\n /**\n * PSY Model related stuff\n */\n function PSY() {\n /**\n * The dbQ stuff.\n */\n this.mask_adjust = 0.;\n /**\n * The dbQ stuff.\n */\n this.mask_adjust_short = 0.;\n /* at transition from one scalefactor band to next */\n /**\n * Band weight long scalefactor bands.\n */\n this.bo_l_weight = new_float(Encoder.SBMAX_l);\n /**\n * Band weight short scalefactor bands.\n */\n this.bo_s_weight = new_float(Encoder.SBMAX_s);\n }\n\n function LowPassHighPass() {\n this.lowerlimit = 0.;\n }\n\n function BandPass(bitrate, lPass) {\n this.lowpass = lPass;\n }\n\n var LAME_ID = 0xFFF88E3B;\n\n function lame_init_old(gfp) {\n var gfc;\n\n gfp.class_id = LAME_ID;\n\n gfc = gfp.internal_flags = new LameInternalFlags();\n\n /* Global flags. set defaults here for non-zero values */\n /* see lame.h for description */\n /*\n * set integer values to -1 to mean that LAME will compute the best\n * value, UNLESS the calling program as set it (and the value is no\n * longer -1)\n */\n\n gfp.mode = MPEGMode.NOT_SET;\n gfp.original = 1;\n gfp.in_samplerate = 44100;\n gfp.num_channels = 2;\n gfp.num_samples = -1;\n\n gfp.bWriteVbrTag = true;\n gfp.quality = -1;\n gfp.short_blocks = null;\n gfc.subblock_gain = -1;\n\n gfp.lowpassfreq = 0;\n gfp.highpassfreq = 0;\n gfp.lowpasswidth = -1;\n gfp.highpasswidth = -1;\n\n gfp.VBR = VbrMode.vbr_off;\n gfp.VBR_q = 4;\n gfp.ATHcurve = -1;\n gfp.VBR_mean_bitrate_kbps = 128;\n gfp.VBR_min_bitrate_kbps = 0;\n gfp.VBR_max_bitrate_kbps = 0;\n gfp.VBR_hard_min = 0;\n gfc.VBR_min_bitrate = 1;\n /* not 0 ????? */\n gfc.VBR_max_bitrate = 13;\n /* not 14 ????? */\n\n gfp.quant_comp = -1;\n gfp.quant_comp_short = -1;\n\n gfp.msfix = -1;\n\n gfc.resample_ratio = 1;\n\n gfc.OldValue[0] = 180;\n gfc.OldValue[1] = 180;\n gfc.CurrentStep[0] = 4;\n gfc.CurrentStep[1] = 4;\n gfc.masking_lower = 1;\n gfc.nsPsy.attackthre = -1;\n gfc.nsPsy.attackthre_s = -1;\n\n gfp.scale = -1;\n\n gfp.athaa_type = -1;\n gfp.ATHtype = -1;\n /* default = -1 = set in lame_init_params */\n gfp.athaa_loudapprox = -1;\n /* 1 = flat loudness approx. (total energy) */\n /* 2 = equal loudness curve */\n gfp.athaa_sensitivity = 0.0;\n /* no offset */\n gfp.useTemporal = null;\n gfp.interChRatio = -1;\n\n /*\n * The reason for int mf_samples_to_encode = ENCDELAY + POSTDELAY;\n * ENCDELAY = internal encoder delay. And then we have to add\n * POSTDELAY=288 because of the 50% MDCT overlap. A 576 MDCT granule\n * decodes to 1152 samples. To synthesize the 576 samples centered under\n * this granule we need the previous granule for the first 288 samples\n * (no problem), and the next granule for the next 288 samples (not\n * possible if this is last granule). So we need to pad with 288 samples\n * to make sure we can encode the 576 samples we are interested in.\n */\n gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n gfp.encoder_padding = 0;\n gfc.mf_size = Encoder.ENCDELAY - Encoder.MDCTDELAY;\n /*\n * we pad input with this many 0's\n */\n\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n\n gfc.decode_on_the_fly = false;\n gfc.findReplayGain = false;\n gfc.findPeakSample = false;\n\n gfc.RadioGain = 0;\n gfc.AudiophileGain = 0;\n gfc.noclipGainChange = 0;\n gfc.noclipScale = -1.0;\n\n gfp.preset = 0;\n\n gfp.write_id3tag_automatic = true;\n return 0;\n }\n\n this.lame_init = function () {\n var gfp = new LameGlobalFlags();\n\n var ret = lame_init_old(gfp);\n if (ret != 0) {\n return null;\n }\n\n gfp.lame_allocated_gfp = 1;\n return gfp;\n }\n\n function filter_coef(x) {\n if (x > 1.0)\n return 0.0;\n if (x <= 0.0)\n return 1.0;\n\n return Math.cos(Math.PI / 2 * x);\n }\n\n this.nearestBitrateFullIndex = function (bitrate) {\n /* borrowed from DM abr presets */\n\n var full_bitrate_table = [8, 16, 24, 32, 40, 48, 56, 64, 80,\n 96, 112, 128, 160, 192, 224, 256, 320];\n\n var lower_range = 0, lower_range_kbps = 0, upper_range = 0, upper_range_kbps = 0;\n\n /* We assume specified bitrate will be 320kbps */\n upper_range_kbps = full_bitrate_table[16];\n upper_range = 16;\n lower_range_kbps = full_bitrate_table[16];\n lower_range = 16;\n\n /*\n * Determine which significant bitrates the value specified falls\n * between, if loop ends without breaking then we were correct above\n * that the value was 320\n */\n for (var b = 0; b < 16; b++) {\n if ((Math.max(bitrate, full_bitrate_table[b + 1])) != bitrate) {\n upper_range_kbps = full_bitrate_table[b + 1];\n upper_range = b + 1;\n lower_range_kbps = full_bitrate_table[b];\n lower_range = (b);\n break;\n /* We found upper range */\n }\n }\n\n /* Determine which range the value specified is closer to */\n if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) {\n return lower_range;\n }\n return upper_range;\n }\n\n function optimum_samplefreq(lowpassfreq, input_samplefreq) {\n /*\n * Rules:\n *\n * - if possible, sfb21 should NOT be used\n */\n var suggested_samplefreq = 44100;\n\n if (input_samplefreq >= 48000)\n suggested_samplefreq = 48000;\n else if (input_samplefreq >= 44100)\n suggested_samplefreq = 44100;\n else if (input_samplefreq >= 32000)\n suggested_samplefreq = 32000;\n else if (input_samplefreq >= 24000)\n suggested_samplefreq = 24000;\n else if (input_samplefreq >= 22050)\n suggested_samplefreq = 22050;\n else if (input_samplefreq >= 16000)\n suggested_samplefreq = 16000;\n else if (input_samplefreq >= 12000)\n suggested_samplefreq = 12000;\n else if (input_samplefreq >= 11025)\n suggested_samplefreq = 11025;\n else if (input_samplefreq >= 8000)\n suggested_samplefreq = 8000;\n\n if (lowpassfreq == -1)\n return suggested_samplefreq;\n\n if (lowpassfreq <= 15960)\n suggested_samplefreq = 44100;\n if (lowpassfreq <= 15250)\n suggested_samplefreq = 32000;\n if (lowpassfreq <= 11220)\n suggested_samplefreq = 24000;\n if (lowpassfreq <= 9970)\n suggested_samplefreq = 22050;\n if (lowpassfreq <= 7230)\n suggested_samplefreq = 16000;\n if (lowpassfreq <= 5420)\n suggested_samplefreq = 12000;\n if (lowpassfreq <= 4510)\n suggested_samplefreq = 11025;\n if (lowpassfreq <= 3970)\n suggested_samplefreq = 8000;\n\n if (input_samplefreq < suggested_samplefreq) {\n /*\n * choose a valid MPEG sample frequency above the input sample\n * frequency to avoid SFB21/12 bitrate bloat rh 061115\n */\n if (input_samplefreq > 44100) {\n return 48000;\n }\n if (input_samplefreq > 32000) {\n return 44100;\n }\n if (input_samplefreq > 24000) {\n return 32000;\n }\n if (input_samplefreq > 22050) {\n return 24000;\n }\n if (input_samplefreq > 16000) {\n return 22050;\n }\n if (input_samplefreq > 12000) {\n return 16000;\n }\n if (input_samplefreq > 11025) {\n return 12000;\n }\n if (input_samplefreq > 8000) {\n return 11025;\n }\n return 8000;\n }\n return suggested_samplefreq;\n }\n\n /**\n * convert samp freq in Hz to index\n */\n function SmpFrqIndex(sample_freq, gpf) {\n switch (sample_freq) {\n case 44100:\n gpf.version = 1;\n return 0;\n case 48000:\n gpf.version = 1;\n return 1;\n case 32000:\n gpf.version = 1;\n return 2;\n case 22050:\n gpf.version = 0;\n return 0;\n case 24000:\n gpf.version = 0;\n return 1;\n case 16000:\n gpf.version = 0;\n return 2;\n case 11025:\n gpf.version = 0;\n return 0;\n case 12000:\n gpf.version = 0;\n return 1;\n case 8000:\n gpf.version = 0;\n return 2;\n default:\n gpf.version = 0;\n return -1;\n }\n }\n\n /**\n * @param bRate\n * legal rates from 8 to 320\n */\n function FindNearestBitrate(bRate, version, samplerate) {\n /* MPEG-1 or MPEG-2 LSF */\n if (samplerate < 16000)\n version = 2;\n\n var bitrate = Tables.bitrate_table[version][1];\n\n for (var i = 2; i <= 14; i++) {\n if (Tables.bitrate_table[version][i] > 0) {\n if (Math.abs(Tables.bitrate_table[version][i] - bRate) < Math\n .abs(bitrate - bRate))\n bitrate = Tables.bitrate_table[version][i];\n }\n }\n return bitrate;\n }\n\n /**\n * @param bRate\n * legal rates from 32 to 448 kbps\n * @param version\n * MPEG-1 or MPEG-2/2.5 LSF\n */\n function BitrateIndex(bRate, version, samplerate) {\n /* convert bitrate in kbps to index */\n if (samplerate < 16000)\n version = 2;\n for (var i = 0; i <= 14; i++) {\n if (Tables.bitrate_table[version][i] > 0) {\n if (Tables.bitrate_table[version][i] == bRate) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function optimum_bandwidth(lh, bitrate) {\n /**\n * <PRE>\n * Input:\n * bitrate total bitrate in kbps\n *\n * Output:\n * lowerlimit: best lowpass frequency limit for input filter in Hz\n * upperlimit: best highpass frequency limit for input filter in Hz\n * </PRE>\n */\n var freq_map = [new BandPass(8, 2000),\n new BandPass(16, 3700), new BandPass(24, 3900),\n new BandPass(32, 5500), new BandPass(40, 7000),\n new BandPass(48, 7500), new BandPass(56, 10000),\n new BandPass(64, 11000), new BandPass(80, 13500),\n new BandPass(96, 15100), new BandPass(112, 15600),\n new BandPass(128, 17000), new BandPass(160, 17500),\n new BandPass(192, 18600), new BandPass(224, 19400),\n new BandPass(256, 19700), new BandPass(320, 20500)];\n\n var table_index = self.nearestBitrateFullIndex(bitrate);\n lh.lowerlimit = freq_map[table_index].lowpass;\n }\n\n function lame_init_params_ppflt(gfp) {\n var gfc = gfp.internal_flags;\n /***************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /***************************************************************/\n\n var lowpass_band = 32;\n var highpass_band = -1;\n\n if (gfc.lowpass1 > 0) {\n var minband = 999;\n for (var band = 0; band <= 31; band++) {\n var freq = (band / 31.0);\n /* this band and above will be zeroed: */\n if (freq >= gfc.lowpass2) {\n lowpass_band = Math.min(lowpass_band, band);\n }\n if (gfc.lowpass1 < freq && freq < gfc.lowpass2) {\n minband = Math.min(minband, band);\n }\n }\n\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n if (minband == 999) {\n gfc.lowpass1 = (lowpass_band - .75) / 31.0;\n } else {\n gfc.lowpass1 = (minband - .75) / 31.0;\n }\n gfc.lowpass2 = lowpass_band / 31.0;\n }\n\n /*\n * make sure highpass filter is within 90% of what the effective\n * highpass frequency will be\n */\n if (gfc.highpass2 > 0) {\n if (gfc.highpass2 < .9 * (.75 / 31.0)) {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n System.err.println(\"Warning: highpass filter disabled. \"\n + \"highpass frequency too small\\n\");\n }\n }\n\n if (gfc.highpass2 > 0) {\n var maxband = -1;\n for (var band = 0; band <= 31; band++) {\n var freq = band / 31.0;\n /* this band and below will be zereod */\n if (freq <= gfc.highpass1) {\n highpass_band = Math.max(highpass_band, band);\n }\n if (gfc.highpass1 < freq && freq < gfc.highpass2) {\n maxband = Math.max(maxband, band);\n }\n }\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n gfc.highpass1 = highpass_band / 31.0;\n if (maxband == -1) {\n gfc.highpass2 = (highpass_band + .75) / 31.0;\n } else {\n gfc.highpass2 = (maxband + .75) / 31.0;\n }\n }\n\n for (var band = 0; band < 32; band++) {\n var fc1, fc2;\n var freq = band / 31.0;\n if (gfc.highpass2 > gfc.highpass1) {\n fc1 = filter_coef((gfc.highpass2 - freq)\n / (gfc.highpass2 - gfc.highpass1 + 1e-20));\n } else {\n fc1 = 1.0;\n }\n if (gfc.lowpass2 > gfc.lowpass1) {\n fc2 = filter_coef((freq - gfc.lowpass1)\n / (gfc.lowpass2 - gfc.lowpass1 + 1e-20));\n } else {\n fc2 = 1.0;\n }\n gfc.amp_filter[band] = (fc1 * fc2);\n }\n }\n\n function lame_init_qval(gfp) {\n var gfc = gfp.internal_flags;\n\n switch (gfp.quality) {\n default:\n case 9: /* no psymodel, no noise shaping */\n gfc.psymodel = 0;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 8:\n gfp.quality = 7;\n //$FALL-THROUGH$\n case 7:\n /*\n * use psymodel (for short block and m/s switching), but no noise\n * shapping\n */\n gfc.psymodel = 1;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 6:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 5:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 4:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 3:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 2:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /* inner loop */\n gfc.full_outer_loop = 0;\n break;\n\n case 1:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 0:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /*\n * type 2 disabled because of it slowness, in favor of full outer\n * loop search\n */\n gfc.full_outer_loop = 0;\n /*\n * full outer loop search disabled because of audible distortions it\n * may generate rh 060629\n */\n break;\n }\n\n }\n\n function lame_init_bitstream(gfp) {\n var gfc = gfp.internal_flags;\n gfp.frameNum = 0;\n\n if (gfp.write_id3tag_automatic) {\n id3.id3tag_write_v2(gfp);\n }\n /* initialize histogram data optionally used by frontend */\n\n gfc.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]);\n gfc.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]);\n\n gfc.PeakSample = 0.0;\n\n /* Write initial VBR Header to bitstream and init VBR data */\n if (gfp.bWriteVbrTag)\n vbr.InitVbrTag(gfp);\n }\n\n /********************************************************************\n * initialize internal params based on data in gf (globalflags struct filled\n * in by calling program)\n *\n * OUTLINE:\n *\n * We first have some complex code to determine bitrate, output samplerate\n * and mode. It is complicated by the fact that we allow the user to set\n * some or all of these parameters, and need to determine best possible\n * values for the rest of them:\n *\n * 1. set some CPU related flags 2. check if we are mono.mono, stereo.mono\n * or stereo.stereo 3. compute bitrate and output samplerate: user may have\n * set compression ratio user may have set a bitrate user may have set a\n * output samplerate 4. set some options which depend on output samplerate\n * 5. compute the actual compression ratio 6. set mode based on compression\n * ratio\n *\n * The remaining code is much simpler - it just sets options based on the\n * mode & compression ratio:\n *\n * set allow_diff_short based on mode select lowpass filter based on\n * compression ratio & mode set the bitrate index, and min/max bitrates for\n * VBR modes disable VBR tag if it is not appropriate initialize the\n * bitstream initialize scalefac_band data set sideinfo_len (based on\n * channels, CRC, out_samplerate) write an id3v2 tag into the bitstream\n * write VBR tag into the bitstream set mpeg1/2 flag estimate the number of\n * frames (based on a lot of data)\n *\n * now we set more flags: nspsytune: see code VBR modes see code CBR/ABR see\n * code\n *\n * Finally, we set the algorithm flags based on the gfp.quality value\n * lame_init_qval(gfp);\n *\n ********************************************************************/\n this.lame_init_params = function (gfp) {\n var gfc = gfp.internal_flags;\n\n gfc.Class_ID = 0;\n if (gfc.ATH == null)\n gfc.ATH = new ATH();\n if (gfc.PSY == null)\n gfc.PSY = new PSY();\n if (gfc.rgdata == null)\n gfc.rgdata = new ReplayGain();\n\n gfc.channels_in = gfp.num_channels;\n if (gfc.channels_in == 1)\n gfp.mode = MPEGMode.MONO;\n gfc.channels_out = (gfp.mode == MPEGMode.MONO) ? 1 : 2;\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n if (gfp.mode == MPEGMode.MONO)\n gfp.force_ms = false;\n /*\n * don't allow forced mid/side stereo for mono output\n */\n\n if (gfp.VBR == VbrMode.vbr_off && gfp.VBR_mean_bitrate_kbps != 128\n && gfp.brate == 0)\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n\n if (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_mtrh\n || gfp.VBR == VbrMode.vbr_mt) {\n /* these modes can handle free format condition */\n } else {\n gfp.free_format = false;\n /* mode can't be mixed with free format */\n }\n\n if (gfp.VBR == VbrMode.vbr_off && gfp.brate == 0) {\n /* no bitrate or compression ratio specified, use 11.025 */\n if (BitStream.EQ(gfp.compression_ratio, 0))\n gfp.compression_ratio = 11.025;\n /*\n * rate to compress a CD down to exactly 128000 bps\n */\n }\n\n /* find bitrate if user specify a compression ratio */\n if (gfp.VBR == VbrMode.vbr_off && gfp.compression_ratio > 0) {\n\n if (gfp.out_samplerate == 0)\n gfp.out_samplerate = map2MP3Frequency((int)(0.97 * gfp.in_samplerate));\n /*\n * round up with a margin of 3 %\n */\n\n /*\n * choose a bitrate for the output samplerate which achieves\n * specified compression ratio\n */\n gfp.brate = 0 | (gfp.out_samplerate * 16 * gfc.channels_out / (1.e3 * gfp.compression_ratio));\n\n /* we need the version for the bitrate table look up */\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n\n if (!gfp.free_format) /*\n * for non Free Format find the nearest allowed\n * bitrate\n */\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n }\n\n if (gfp.out_samplerate != 0) {\n if (gfp.out_samplerate < 16000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 64);\n } else if (gfp.out_samplerate < 32000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 160);\n } else {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 32);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 320);\n }\n }\n\n /****************************************************************/\n /* if a filter has not been enabled, see if we should add one: */\n /****************************************************************/\n if (gfp.lowpassfreq == 0) {\n var lowpass = 16000.;\n\n switch (gfp.VBR) {\n case VbrMode.vbr_off:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.brate);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode.vbr_abr:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode.vbr_rh:\n {\n var x = [19500, 19000, 18600, 18000, 17500, 16000,\n 15600, 14900, 12500, 10000, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n break;\n }\n default:\n {\n var x = [19500, 19000, 18500, 18000, 17500, 16500,\n 15500, 14500, 12500, 9500, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n }\n }\n if (gfp.mode == MPEGMode.MONO\n && (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_abr))\n lowpass *= 1.5;\n\n gfp.lowpassfreq = lowpass | 0;\n }\n\n if (gfp.out_samplerate == 0) {\n if (2 * gfp.lowpassfreq > gfp.in_samplerate) {\n gfp.lowpassfreq = gfp.in_samplerate / 2;\n }\n gfp.out_samplerate = optimum_samplefreq(gfp.lowpassfreq | 0,\n gfp.in_samplerate);\n }\n\n gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq);\n gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq);\n\n if (gfp.VBR == VbrMode.vbr_off) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n }\n if (gfp.VBR == VbrMode.vbr_abr) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n }\n\n /*\n * do not compute ReplayGain values and do not find the peak sample if\n * we can't store them\n */\n if (!gfp.bWriteVbrTag) {\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n gfc.findPeakSample = false;\n }\n gfc.findReplayGain = gfp.findReplayGain;\n gfc.decode_on_the_fly = gfp.decode_on_the_fly;\n\n if (gfc.decode_on_the_fly)\n gfc.findPeakSample = true;\n\n if (gfc.findReplayGain) {\n if (ga.InitGainAnalysis(gfc.rgdata, gfp.out_samplerate) == GainAnalysis.INIT_GAIN_ANALYSIS_ERROR) {\n gfp.internal_flags = null;\n return -6;\n }\n }\n\n if (gfc.decode_on_the_fly && !gfp.decode_only) {\n if (gfc.hip != null) {\n mpglib.hip_decode_exit(gfc.hip);\n }\n gfc.hip = mpglib.hip_decode_init();\n }\n\n gfc.mode_gr = gfp.out_samplerate <= 24000 ? 1 : 2;\n /*\n * Number of granules per frame\n */\n gfp.framesize = 576 * gfc.mode_gr;\n gfp.encoder_delay = Encoder.ENCDELAY;\n\n gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate;\n\n /**\n * <PRE>\n * sample freq bitrate compression ratio\n * [kHz] [kbps/channel] for 16 bit input\n * 44.1 56 12.6\n * 44.1 64 11.025\n * 44.1 80 8.82\n * 22.05 24 14.7\n * 22.05 32 11.025\n * 22.05 40 8.82\n * 16 16 16.0\n * 16 24 10.667\n * </PRE>\n */\n /**\n * <PRE>\n * For VBR, take a guess at the compression_ratio.\n * For example:\n *\n * VBR_q compression like\n * - 4.4 320 kbps/44 kHz\n * 0...1 5.5 256 kbps/44 kHz\n * 2 7.3 192 kbps/44 kHz\n * 4 8.8 160 kbps/44 kHz\n * 6 11 128 kbps/44 kHz\n * 9 14.7 96 kbps\n *\n * for lower bitrates, downsample with --resample\n * </PRE>\n */\n switch (gfp.VBR) {\n case VbrMode.vbr_mt:\n case VbrMode.vbr_rh:\n case VbrMode.vbr_mtrh:\n {\n /* numbers are a bit strange, but they determine the lowpass value */\n var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14,\n 15, 16.5];\n gfp.compression_ratio = cmp[gfp.VBR_q];\n }\n break;\n case VbrMode.vbr_abr:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n break;\n default:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n break;\n }\n\n /*\n * mode = -1 (not set by user) or mode = MONO (because of only 1 input\n * channel). If mode has not been set, then select J-STEREO\n */\n if (gfp.mode == MPEGMode.NOT_SET) {\n gfp.mode = MPEGMode.JOINT_STEREO;\n }\n\n /* apply user driven high pass filter */\n if (gfp.highpassfreq > 0) {\n gfc.highpass1 = 2. * gfp.highpassfreq;\n\n if (gfp.highpasswidth >= 0)\n gfc.highpass2 = 2. * (gfp.highpassfreq + gfp.highpasswidth);\n else\n /* 0% above on default */\n gfc.highpass2 = (1 + 0.00) * 2. * gfp.highpassfreq;\n\n gfc.highpass1 /= gfp.out_samplerate;\n gfc.highpass2 /= gfp.out_samplerate;\n } else {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n }\n /* apply user driven low pass filter */\n if (gfp.lowpassfreq > 0) {\n gfc.lowpass2 = 2. * gfp.lowpassfreq;\n if (gfp.lowpasswidth >= 0) {\n gfc.lowpass1 = 2. * (gfp.lowpassfreq - gfp.lowpasswidth);\n if (gfc.lowpass1 < 0) /* has to be >= 0 */\n gfc.lowpass1 = 0;\n } else { /* 0% below on default */\n gfc.lowpass1 = (1 - 0.00) * 2. * gfp.lowpassfreq;\n }\n gfc.lowpass1 /= gfp.out_samplerate;\n gfc.lowpass2 /= gfp.out_samplerate;\n } else {\n gfc.lowpass1 = 0;\n gfc.lowpass2 = 0;\n }\n\n /**********************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /**********************************************************************/\n lame_init_params_ppflt(gfp);\n /*******************************************************\n * samplerate and bitrate index\n *******************************************************/\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n if (gfc.samplerate_index < 0) {\n gfp.internal_flags = null;\n return -1;\n }\n\n if (gfp.VBR == VbrMode.vbr_off) {\n if (gfp.free_format) {\n gfc.bitrate_index = 0;\n } else {\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n gfc.bitrate_index = BitrateIndex(gfp.brate, gfp.version,\n gfp.out_samplerate);\n if (gfc.bitrate_index <= 0) {\n gfp.internal_flags = null;\n return -1;\n }\n }\n } else {\n gfc.bitrate_index = 1;\n }\n\n /* for CBR, we will write an \"info\" tag. */\n\n if (gfp.analysis)\n gfp.bWriteVbrTag = false;\n\n /* some file options not allowed if output is: not specified or stdout */\n if (gfc.pinfo != null)\n gfp.bWriteVbrTag = false;\n /* disable Xing VBR tag */\n\n bs.init_bit_stream_w(gfc);\n\n var j = gfc.samplerate_index + (3 * gfp.version) + 6\n * (gfp.out_samplerate < 16000 ? 1 : 0);\n for (var i = 0; i < Encoder.SBMAX_l + 1; i++)\n gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i];\n\n for (var i = 0; i < Encoder.PSFB21 + 1; i++) {\n var size = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21])\n / Encoder.PSFB21;\n var start = gfc.scalefac_band.l[21] + i * size;\n gfc.scalefac_band.psfb21[i] = start;\n }\n gfc.scalefac_band.psfb21[Encoder.PSFB21] = 576;\n\n for (var i = 0; i < Encoder.SBMAX_s + 1; i++)\n gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i];\n\n for (var i = 0; i < Encoder.PSFB12 + 1; i++) {\n var size = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n / Encoder.PSFB12;\n var start = gfc.scalefac_band.s[12] + i * size;\n gfc.scalefac_band.psfb12[i] = start;\n }\n gfc.scalefac_band.psfb12[Encoder.PSFB12] = 192;\n /* determine the mean bitrate for main data */\n if (gfp.version == 1) /* MPEG 1 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 17 : 4 + 32;\n else\n /* MPEG 2 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 9 : 4 + 17;\n\n if (gfp.error_protection)\n gfc.sideinfo_len += 2;\n\n lame_init_bitstream(gfp);\n\n gfc.Class_ID = LAME_ID;\n\n {\n var k;\n\n for (k = 0; k < 19; k++)\n gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out;\n\n if (gfp.ATHtype == -1)\n gfp.ATHtype = 4;\n }\n assert(gfp.VBR_q <= 9);\n assert(gfp.VBR_q >= 0);\n\n switch (gfp.VBR) {\n\n case VbrMode.vbr_mt:\n gfp.VBR = VbrMode.vbr_mtrh;\n //$FALL-THROUGH$\n case VbrMode.vbr_mtrh:\n {\n if (gfp.useTemporal == null) {\n gfp.useTemporal = false;\n /* off by default for this VBR mode */\n }\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n /**\n * <PRE>\n * The newer VBR code supports only a limited\n * subset of quality levels:\n * 9-5=5 are the same, uses x^3/4 quantization\n * 4-0=0 are the same 5 plus best huffman divide code\n * </PRE>\n */\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n if (gfp.quality < 5)\n gfp.quality = 0;\n if (gfp.quality > 5)\n gfp.quality = 5;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n gfc.iteration_loop = new VBRNewIterationLoop(qu);\n break;\n\n }\n case VbrMode.vbr_rh:\n {\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n /*\n * VBR needs at least the output of GPSYCHO, so we have to garantee\n * that by setting a minimum quality level, actually level 6 does\n * it. down to level 6\n */\n if (gfp.quality > 6)\n gfp.quality = 6;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n gfc.iteration_loop = new VBROldIterationLoop(qu);\n break;\n }\n\n default: /* cbr/abr */\n {\n var vbrmode;\n\n /*\n * no sfb21 extra with CBR code\n */\n gfc.sfb21_extra = false;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n vbrmode = gfp.VBR;\n if (vbrmode == VbrMode.vbr_off)\n gfp.VBR_mean_bitrate_kbps = gfp.brate;\n /* second, set parameters depending on bitrate */\n p.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0);\n gfp.VBR = vbrmode;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n if (vbrmode == VbrMode.vbr_off) {\n gfc.iteration_loop = new CBRNewIterationLoop(qu);\n } else {\n gfc.iteration_loop = new ABRIterationLoop(qu);\n }\n break;\n }\n }\n assert(gfp.scale >= 0);\n /* initialize default values common for all modes */\n\n if (gfp.VBR != VbrMode.vbr_off) { /* choose a min/max bitrate for VBR */\n /* if the user didn't specify VBR_max_bitrate: */\n gfc.VBR_min_bitrate = 1;\n /*\n * default: allow 8 kbps (MPEG-2) or 32 kbps (MPEG-1)\n */\n gfc.VBR_max_bitrate = 14;\n /*\n * default: allow 160 kbps (MPEG-2) or 320 kbps (MPEG-1)\n */\n if (gfp.out_samplerate < 16000)\n gfc.VBR_max_bitrate = 8;\n /* default: allow 64 kbps (MPEG-2.5) */\n if (gfp.VBR_min_bitrate_kbps != 0) {\n gfp.VBR_min_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_min_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_min_bitrate = BitrateIndex(gfp.VBR_min_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_min_bitrate < 0)\n return -1;\n }\n if (gfp.VBR_max_bitrate_kbps != 0) {\n gfp.VBR_max_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_max_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_max_bitrate = BitrateIndex(gfp.VBR_max_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_max_bitrate < 0)\n return -1;\n }\n gfp.VBR_min_bitrate_kbps = Tables.bitrate_table[gfp.version][gfc.VBR_min_bitrate];\n gfp.VBR_max_bitrate_kbps = Tables.bitrate_table[gfp.version][gfc.VBR_max_bitrate];\n gfp.VBR_mean_bitrate_kbps = Math.min(\n Tables.bitrate_table[gfp.version][gfc.VBR_max_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n gfp.VBR_mean_bitrate_kbps = Math.max(\n Tables.bitrate_table[gfp.version][gfc.VBR_min_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n }\n\n /* just another daily changing developer switch */\n if (gfp.tune) {\n gfc.PSY.mask_adjust += gfp.tune_value_a;\n gfc.PSY.mask_adjust_short += gfp.tune_value_a;\n }\n\n /* initialize internal qval settings */\n lame_init_qval(gfp);\n assert(gfp.scale >= 0);\n /*\n * automatic ATH adjustment on\n */\n if (gfp.athaa_type < 0)\n gfc.ATH.useAdjust = 3;\n else\n gfc.ATH.useAdjust = gfp.athaa_type;\n\n /* initialize internal adaptive ATH settings -jd */\n gfc.ATH.aaSensitivityP = Math.pow(10.0, gfp.athaa_sensitivity\n / -10.0);\n\n if (gfp.short_blocks == null) {\n gfp.short_blocks = ShortBlock.short_block_allowed;\n }\n\n /*\n * Note Jan/2003: Many hardware decoders cannot handle short blocks in\n * regular stereo mode unless they are coupled (same type in both\n * channels) it is a rare event (1 frame per min. or so) that LAME would\n * use uncoupled short blocks, so lets turn them off until we decide how\n * to handle this. No other encoders allow uncoupled short blocks, even\n * though it is in the standard.\n */\n /*\n * rh 20040217: coupling makes no sense for mono and dual-mono streams\n */\n if (gfp.short_blocks == ShortBlock.short_block_allowed\n && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) {\n gfp.short_blocks = ShortBlock.short_block_coupled;\n }\n\n if (gfp.quant_comp < 0)\n gfp.quant_comp = 1;\n if (gfp.quant_comp_short < 0)\n gfp.quant_comp_short = 0;\n\n if (gfp.msfix < 0)\n gfp.msfix = 0;\n\n /* select psychoacoustic model */\n gfp.exp_nspsytune = gfp.exp_nspsytune | 1;\n\n if (gfp.internal_flags.nsPsy.attackthre < 0)\n gfp.internal_flags.nsPsy.attackthre = PsyModel.NSATTACKTHRE;\n if (gfp.internal_flags.nsPsy.attackthre_s < 0)\n gfp.internal_flags.nsPsy.attackthre_s = PsyModel.NSATTACKTHRE_S;\n\n assert(gfp.scale >= 0);\n\n if (gfp.scale < 0)\n gfp.scale = 1;\n\n if (gfp.ATHtype < 0)\n gfp.ATHtype = 4;\n\n if (gfp.ATHcurve < 0)\n gfp.ATHcurve = 4;\n\n if (gfp.athaa_loudapprox < 0)\n gfp.athaa_loudapprox = 2;\n\n if (gfp.interChRatio < 0)\n gfp.interChRatio = 0;\n\n if (gfp.useTemporal == null)\n gfp.useTemporal = true;\n /* on by default */\n\n /*\n * padding method as described in\n * \"MPEG-Layer3 / Bitstream Syntax and Decoding\" by Martin Sieler, Ralph\n * Sperschneider\n *\n * note: there is no padding for the very first frame\n *\n * Robert Hegemann 2000-06-22\n */\n gfc.slot_lag = gfc.frac_SpF = 0;\n if (gfp.VBR == VbrMode.vbr_off)\n gfc.slot_lag = gfc.frac_SpF = (((gfp.version + 1) * 72000 * gfp.brate) % gfp.out_samplerate) | 0;\n\n qupvt.iteration_init(gfp);\n psy.psymodel_init(gfp);\n assert(gfp.scale >= 0);\n return 0;\n }\n\n function update_inbuffer_size(gfc, nsamples) {\n if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) {\n gfc.in_buffer_0 = new_float(nsamples);\n gfc.in_buffer_1 = new_float(nsamples);\n gfc.in_buffer_nsamples = nsamples;\n }\n }\n\n this.lame_encode_flush = function (gfp, mp3buffer, mp3bufferPos, mp3buffer_size) {\n var gfc = gfp.internal_flags;\n var buffer = new_short_n([2, 1152]);\n var imp3 = 0, mp3count, mp3buffer_size_remaining;\n\n /*\n * we always add POSTDELAY=288 padding to make sure granule with real\n * data can be complety decoded (because of 50% overlap with next\n * granule\n */\n var end_padding;\n var frames_left;\n var samples_to_encode = gfc.mf_samples_to_encode - Encoder.POSTDELAY;\n var mf_needed = calcNeeded(gfp);\n\n /* Was flush already called? */\n if (gfc.mf_samples_to_encode < 1) {\n return 0;\n }\n mp3count = 0;\n\n if (gfp.in_samplerate != gfp.out_samplerate) {\n /*\n * delay due to resampling; needs to be fixed, if resampling code\n * gets changed\n */\n samples_to_encode += 16. * gfp.out_samplerate / gfp.in_samplerate;\n }\n end_padding = gfp.framesize - (samples_to_encode % gfp.framesize);\n if (end_padding < 576)\n end_padding += gfp.framesize;\n gfp.encoder_padding = end_padding;\n\n frames_left = (samples_to_encode + end_padding) / gfp.framesize;\n\n /*\n * send in a frame of 0 padding until all internal sample buffers are\n * flushed\n */\n while (frames_left > 0 && imp3 >= 0) {\n var bunch = mf_needed - gfc.mf_size;\n var frame_num = gfp.frameNum;\n\n bunch *= gfp.in_samplerate;\n bunch /= gfp.out_samplerate;\n if (bunch > 1152)\n bunch = 1152;\n if (bunch < 1)\n bunch = 1;\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n imp3 = this.lame_encode_buffer(gfp, buffer[0], buffer[1], bunch,\n mp3buffer, mp3bufferPos, mp3buffer_size_remaining);\n\n mp3bufferPos += imp3;\n mp3count += imp3;\n frames_left -= (frame_num != gfp.frameNum) ? 1 : 0;\n }\n /*\n * Set gfc.mf_samples_to_encode to 0, so we may detect and break loops\n * calling it more than once in a row.\n */\n gfc.mf_samples_to_encode = 0;\n\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n /* mp3 related stuff. bit buffer might still contain some mp3 data */\n bs.flush_bitstream(gfp);\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 1);\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n mp3bufferPos += imp3;\n mp3count += imp3;\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n if (gfp.write_id3tag_automatic) {\n /* write a id3 tag to the bitstream */\n id3.id3tag_write_v1(gfp);\n\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 0);\n\n if (imp3 < 0) {\n return imp3;\n }\n mp3count += imp3;\n }\n return mp3count;\n };\n\n this.lame_encode_buffer = function (gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n update_inbuffer_size(gfc, nsamples);\n\n in_buffer[0] = gfc.in_buffer_0;\n in_buffer[1] = gfc.in_buffer_1;\n\n /* make a copy of input buffer, changing type to sample_t */\n for (var i = 0; i < nsamples; i++) {\n in_buffer[0][i] = buffer_l[i];\n if (gfc.channels_in > 1)\n in_buffer[1][i] = buffer_r[i];\n }\n\n return lame_encode_buffer_sample(gfp, in_buffer[0], in_buffer[1],\n nsamples, mp3buf, mp3bufPos, mp3buf_size);\n }\n\n function calcNeeded(gfp) {\n var mf_needed = Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET;\n /*\n * amount needed for FFT\n */\n mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32);\n assert(LameInternalFlags.MFSIZE >= mf_needed);\n\n return mf_needed;\n }\n\n function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var mp3size = 0, ret, i, ch, mf_needed;\n var mp3out;\n var mfbuf = [null, null];\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n /* copy out any tags that may have been written into bitstream */\n mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0);\n if (mp3out < 0)\n return mp3out;\n /* not enough buffer space */\n mp3bufPos += mp3out;\n mp3size += mp3out;\n\n in_buffer[0] = buffer_l;\n in_buffer[1] = buffer_r;\n\n /* Apply user defined re-scaling */\n\n /* user selected scaling of the samples */\n if (BitStream.NEQ(gfp.scale, 0) && BitStream.NEQ(gfp.scale, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale;\n if (gfc.channels_out == 2)\n in_buffer[1][i] *= gfp.scale;\n }\n }\n\n /* user selected scaling of the channel 0 (left) samples */\n if (BitStream.NEQ(gfp.scale_left, 0)\n && BitStream.NEQ(gfp.scale_left, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale_left;\n }\n }\n\n /* user selected scaling of the channel 1 (right) samples */\n if (BitStream.NEQ(gfp.scale_right, 0)\n && BitStream.NEQ(gfp.scale_right, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[1][i] *= gfp.scale_right;\n }\n }\n\n /* Downsample to Mono if 2 channels in and 1 channel out */\n if (gfp.num_channels == 2 && gfc.channels_out == 1) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] = 0.5 * ( in_buffer[0][i] + in_buffer[1][i]);\n in_buffer[1][i] = 0.0;\n }\n }\n\n mf_needed = calcNeeded(gfp);\n\n mfbuf[0] = gfc.mfbuf[0];\n mfbuf[1] = gfc.mfbuf[1];\n\n var in_bufferPos = 0;\n while (nsamples > 0) {\n var in_buffer_ptr = [null, null];\n var n_in = 0;\n /* number of input samples processed with fill_buffer */\n var n_out = 0;\n /* number of samples output with fill_buffer */\n /* n_in <> n_out if we are resampling */\n\n in_buffer_ptr[0] = in_buffer[0];\n in_buffer_ptr[1] = in_buffer[1];\n /* copy in new samples into mfbuf, with resampling */\n var inOut = new InOut();\n fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples,\n inOut);\n n_in = inOut.n_in;\n n_out = inOut.n_out;\n\n /* compute ReplayGain of resampled input if requested */\n if (gfc.findReplayGain && !gfc.decode_on_the_fly)\n if (ga.AnalyzeSamples(gfc.rgdata, mfbuf[0], gfc.mf_size,\n mfbuf[1], gfc.mf_size, n_out, gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n /* update in_buffer counters */\n nsamples -= n_in;\n in_bufferPos += n_in;\n if (gfc.channels_out == 2)\n ;// in_bufferPos += n_in;\n\n /* update mfbuf[] counters */\n gfc.mf_size += n_out;\n assert(gfc.mf_size <= LameInternalFlags.MFSIZE);\n\n /*\n * lame_encode_flush may have set gfc.mf_sample_to_encode to 0 so we\n * have to reinitialize it here when that happened.\n */\n if (gfc.mf_samples_to_encode < 1) {\n gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n }\n gfc.mf_samples_to_encode += n_out;\n\n if (gfc.mf_size >= mf_needed) {\n /* encode the frame. */\n /* mp3buf = pointer to current location in buffer */\n /* mp3buf_size = size of original mp3 output buffer */\n /* = 0 if we should not worry about the */\n /* buffer size because calling program is */\n /* to lazy to compute it */\n /* mp3size = size of data written to buffer so far */\n /* mp3buf_size-mp3size = amount of space avalable */\n\n var buf_size = mp3buf_size - mp3size;\n if (mp3buf_size == 0)\n buf_size = 0;\n\n ret = lame_encode_frame(gfp, mfbuf[0], mfbuf[1], mp3buf,\n mp3bufPos, buf_size);\n\n if (ret < 0)\n return ret;\n mp3bufPos += ret;\n mp3size += ret;\n\n /* shift out old samples */\n gfc.mf_size -= gfp.framesize;\n gfc.mf_samples_to_encode -= gfp.framesize;\n for (ch = 0; ch < gfc.channels_out; ch++)\n for (i = 0; i < gfc.mf_size; i++)\n mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize];\n }\n }\n assert(nsamples == 0);\n\n return mp3size;\n }\n\n function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var ret = self.enc.lame_encode_mp3_frame(gfp, inbuf_l, inbuf_r, mp3buf,\n mp3bufPos, mp3buf_size);\n gfp.frameNum++;\n return ret;\n }\n\n function InOut() {\n this.n_in = 0;\n this.n_out = 0;\n }\n\n\n function NumUsed() {\n this.num_used = 0;\n }\n\n /**\n * Greatest common divisor.\n * <p>\n * Joint work of Euclid and M. Hendry\n */\n function gcd(i, j) {\n return j != 0 ? gcd(j, i % j) : i;\n }\n\n /**\n * Resampling via FIR filter, blackman window.\n */\n function blackman(x, fcn, l) {\n /*\n * This algorithm from: SIGNAL PROCESSING ALGORITHMS IN FORTRAN AND C\n * S.D. Stearns and R.A. David, Prentice-Hall, 1992\n */\n var wcn = (Math.PI * fcn);\n\n x /= l;\n if (x < 0)\n x = 0;\n if (x > 1)\n x = 1;\n var x2 = x - .5;\n\n var bkwn = 0.42 - 0.5 * Math.cos(2 * x * Math.PI) + 0.08 * Math.cos(4 * x * Math.PI);\n if (Math.abs(x2) < 1e-9)\n return (wcn / Math.PI);\n else\n return (bkwn * Math.sin(l * wcn * x2) / (Math.PI * l * x2));\n }\n\n function fill_buffer_resample(gfp, outbuf, outbufPos, desired_len, inbuf, in_bufferPos, len, num_used, ch) {\n var gfc = gfp.internal_flags;\n var i, j = 0, k;\n /* number of convolution functions to pre-compute */\n var bpc = gfp.out_samplerate\n / gcd(gfp.out_samplerate, gfp.in_samplerate);\n if (bpc > LameInternalFlags.BPC)\n bpc = LameInternalFlags.BPC;\n\n var intratio = (Math.abs(gfc.resample_ratio\n - Math.floor(.5 + gfc.resample_ratio)) < .0001) ? 1 : 0;\n var fcn = 1.00 / gfc.resample_ratio;\n if (fcn > 1.00)\n fcn = 1.00;\n var filter_l = 31;\n if (0 == filter_l % 2)\n --filter_l;\n /* must be odd */\n filter_l += intratio;\n /* unless resample_ratio=int, it must be even */\n\n var BLACKSIZE = filter_l + 1;\n /* size of data needed for FIR */\n\n if (gfc.fill_buffer_resample_init == 0) {\n gfc.inbuf_old[0] = new_float(BLACKSIZE);\n gfc.inbuf_old[1] = new_float(BLACKSIZE);\n for (i = 0; i <= 2 * bpc; ++i)\n gfc.blackfilt[i] = new_float(BLACKSIZE);\n\n gfc.itime[0] = 0;\n gfc.itime[1] = 0;\n\n /* precompute blackman filter coefficients */\n for (j = 0; j <= 2 * bpc; j++) {\n var sum = 0.;\n var offset = (j - bpc) / (2. * bpc);\n for (i = 0; i <= filter_l; i++)\n sum += gfc.blackfilt[j][i] = blackman(i - offset, fcn,\n filter_l);\n for (i = 0; i <= filter_l; i++)\n gfc.blackfilt[j][i] /= sum;\n }\n gfc.fill_buffer_resample_init = 1;\n }\n\n var inbuf_old = gfc.inbuf_old[ch];\n\n /* time of j'th element in inbuf = itime + j/ifreq; */\n /* time of k'th element in outbuf = j/ofreq */\n for (k = 0; k < desired_len; k++) {\n var time0;\n var joff;\n\n time0 = k * gfc.resample_ratio;\n /* time of k'th output sample */\n j = 0 | Math.floor(time0 - gfc.itime[ch]);\n\n /* check if we need more input data */\n if ((filter_l + j - filter_l / 2) >= len)\n break;\n\n /* blackman filter. by default, window centered at j+.5(filter_l%2) */\n /* but we want a window centered at time0. */\n var offset = (time0 - gfc.itime[ch] - (j + .5 * (filter_l % 2)));\n assert(Math.abs(offset) <= .501);\n\n /* find the closest precomputed window for this offset: */\n joff = 0 | Math.floor((offset * 2 * bpc) + bpc + .5);\n var xvalue = 0.;\n for (i = 0; i <= filter_l; ++i) {\n\t\t/* force integer index */\n var j2 = 0 | (i + j - filter_l / 2); \n var y;\n assert(j2 < len);\n assert(j2 + BLACKSIZE >= 0);\n y = (j2 < 0) ? inbuf_old[BLACKSIZE + j2] : inbuf[in_bufferPos\n + j2];\n xvalue += y * gfc.blackfilt[joff][i];\n }\n outbuf[outbufPos + k] = xvalue;\n }\n\n /* k = number of samples added to outbuf */\n /* last k sample used data from [j-filter_l/2,j+filter_l-filter_l/2] */\n\n /* how many samples of input data were used: */\n num_used.num_used = Math.min(len, filter_l + j - filter_l / 2);\n\n /*\n * adjust our input time counter. Incriment by the number of samples\n * used, then normalize so that next output sample is at time 0, next\n * input buffer is at time itime[ch]\n */\n gfc.itime[ch] += num_used.num_used - k * gfc.resample_ratio;\n\n /* save the last BLACKSIZE samples into the inbuf_old buffer */\n if (num_used.num_used >= BLACKSIZE) {\n for (i = 0; i < BLACKSIZE; i++)\n inbuf_old[i] = inbuf[in_bufferPos + num_used.num_used + i\n - BLACKSIZE];\n } else {\n /* shift in num_used.num_used samples into inbuf_old */\n var n_shift = BLACKSIZE - num_used.num_used;\n /*\n * number of samples to\n * shift\n */\n\n /*\n * shift n_shift samples by num_used.num_used, to make room for the\n * num_used new samples\n */\n for (i = 0; i < n_shift; ++i)\n inbuf_old[i] = inbuf_old[i + num_used.num_used];\n\n /* shift in the num_used.num_used samples */\n for (j = 0; i < BLACKSIZE; ++i, ++j)\n inbuf_old[i] = inbuf[in_bufferPos + j];\n\n assert(j == num_used.num_used);\n }\n return k;\n /* return the number samples created at the new samplerate */\n }\n\n function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) {\n var gfc = gfp.internal_flags;\n\n /* copy in new samples into mfbuf, with resampling if necessary */\n if ((gfc.resample_ratio < .9999) || (gfc.resample_ratio > 1.0001)) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var numUsed = new NumUsed();\n io.n_out = fill_buffer_resample(gfp, mfbuf[ch], gfc.mf_size,\n gfp.framesize, in_buffer[ch], in_bufferPos, nsamples,\n numUsed, ch);\n io.n_in = numUsed.num_used;\n }\n } else {\n io.n_out = Math.min(gfp.framesize, nsamples);\n io.n_in = io.n_out;\n for (var i = 0; i < io.n_out; ++i) {\n mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i];\n if (gfc.channels_out == 2)\n mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i];\n }\n }\n }\n\n}\n\nmodule.exports = Lame;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nfunction Presets() {\n var Lame = require('./Lame.js');\n function VBRPresets(qual, comp, compS,\n y, shThreshold, shThresholdS,\n adj, adjShort, lower,\n curve, sens, inter,\n joint, mod, fix) {\n this.vbr_q = qual;\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.expY = y;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.masking_adj = adj;\n this.masking_adj_short = adjShort;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.ath_sensitivity = sens;\n this.interch = inter;\n this.safejoint = joint;\n this.sfb21mod = mod;\n this.msfix = fix;\n }\n\n function ABRPresets(kbps, comp, compS,\n joint, fix, shThreshold,\n shThresholdS, bass, sc,\n mask, lower, curve,\n interCh, sfScale) {\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.safejoint = joint;\n this.nsmsfix = fix;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.nsbass = bass;\n this.scale = sc;\n this.masking_adj = mask;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.interch = interCh;\n this.sfscale = sfScale;\n }\n\n var lame;\n\n this.setModules = function (_lame) {\n lame = _lame;\n };\n\n /**\n * <PRE>\n * Switch mappings for VBR mode VBR_RH\n * vbr_q qcomp_l qcomp_s expY st_lrm st_s mask adj_l adj_s ath_lower ath_curve ath_sens interChR safejoint sfb21mod msfix\n * </PRE>\n */\n var vbr_old_switch_map = [\n new VBRPresets(0, 9, 9, 0, 5.20, 125.0, -4.2, -6.3, 4.8, 1, 0, 0, 2, 21, 0.97),\n new VBRPresets(1, 9, 9, 0, 5.30, 125.0, -3.6, -5.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 5.60, 125.0, -2.2, -3.5, 2.8, 2, 0, 0, 2, 21, 1.49),\n new VBRPresets(3, 9, 9, 1, 5.80, 130.0, -1.8, -2.8, 2.6, 3, -4, 0, 2, 20, 1.64),\n new VBRPresets(4, 9, 9, 1, 6.00, 135.0, -0.7, -1.1, 1.1, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 6.40, 140.0, 0.5, 0.4, -7.5, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 6.60, 145.0, 0.67, 0.65, -14.7, 6.5, -19, 0.0004, 0, 0, 2.30),\n new VBRPresets(7, 9, 9, 1, 6.60, 145.0, 0.8, 0.75, -19.7, 8, -22, 0.0006, 0, 0, 2.70),\n new VBRPresets(8, 9, 9, 1, 6.60, 145.0, 1.2, 1.15, -27.5, 10, -23, 0.0007, 0, 0, 0),\n new VBRPresets(9, 9, 9, 1, 6.60, 145.0, 1.6, 1.6, -36, 11, -25, 0.0008, 0, 0, 0),\n new VBRPresets(10, 9, 9, 1, 6.60, 145.0, 2.0, 2.0, -36, 12, -25, 0.0008, 0, 0, 0)\n ];\n\n /**\n * <PRE>\n * vbr_q qcomp_l qcomp_s expY st_lrm st_s mask adj_l adj_s ath_lower ath_curve ath_sens interChR safejoint sfb21mod msfix\n * </PRE>\n */\n var vbr_psy_switch_map = [\n new VBRPresets(0, 9, 9, 0, 4.20, 25.0, -7.0, -4.0, 7.5, 1, 0, 0, 2, 26, 0.97),\n new VBRPresets(1, 9, 9, 0, 4.20, 25.0, -5.6, -3.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 4.20, 25.0, -4.4, -1.8, 2, 2, 0, 0, 2, 18, 1.49),\n new VBRPresets(3, 9, 9, 1, 4.20, 25.0, -3.4, -1.25, 1.1, 3, -4, 0, 2, 15, 1.64),\n new VBRPresets(4, 9, 9, 1, 4.20, 25.0, -2.2, 0.1, 0, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 4.20, 25.0, -1.0, 1.65, -7.7, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 4.20, 25.0, -0.0, 2.47, -7.7, 6.5, -19, 0.0004, 0, 0, 2),\n new VBRPresets(7, 9, 9, 1, 4.20, 25.0, 0.5, 2.0, -14.5, 8, -22, 0.0006, 0, 0, 2),\n new VBRPresets(8, 9, 9, 1, 4.20, 25.0, 1.0, 2.4, -22.0, 10, -23, 0.0007, 0, 0, 2),\n new VBRPresets(9, 9, 9, 1, 4.20, 25.0, 1.5, 2.95, -30.0, 11, -25, 0.0008, 0, 0, 2),\n new VBRPresets(10, 9, 9, 1, 4.20, 25.0, 2.0, 2.95, -36.0, 12, -30, 0.0008, 0, 0, 2)\n ];\n\n function apply_vbr_preset(gfp, a, enforce) {\n var vbr_preset = gfp.VBR == VbrMode.vbr_rh ? vbr_old_switch_map\n : vbr_psy_switch_map;\n\n var x = gfp.VBR_q_frac;\n var p = vbr_preset[a];\n var q = vbr_preset[a + 1];\n var set = p;\n\n // NOOP(vbr_q);\n // NOOP(quant_comp);\n // NOOP(quant_comp_s);\n // NOOP(expY);\n p.st_lrm = p.st_lrm + x * (q.st_lrm - p.st_lrm);\n // LERP(st_lrm);\n p.st_s = p.st_s + x * (q.st_s - p.st_s);\n // LERP(st_s);\n p.masking_adj = p.masking_adj + x * (q.masking_adj - p.masking_adj);\n // LERP(masking_adj);\n p.masking_adj_short = p.masking_adj_short + x\n * (q.masking_adj_short - p.masking_adj_short);\n // LERP(masking_adj_short);\n p.ath_lower = p.ath_lower + x * (q.ath_lower - p.ath_lower);\n // LERP(ath_lower);\n p.ath_curve = p.ath_curve + x * (q.ath_curve - p.ath_curve);\n // LERP(ath_curve);\n p.ath_sensitivity = p.ath_sensitivity + x\n * (q.ath_sensitivity - p.ath_sensitivity);\n // LERP(ath_sensitivity);\n p.interch = p.interch + x * (q.interch - p.interch);\n // LERP(interch);\n // NOOP(safejoint);\n // NOOP(sfb21mod);\n p.msfix = p.msfix + x * (q.msfix - p.msfix);\n // LERP(msfix);\n\n lame_set_VBR_q(gfp, set.vbr_q);\n\n if (enforce != 0)\n gfp.quant_comp = set.quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = set.quant_comp;\n // SET_OPTION(quant_comp, set.quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = set.quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = set.quant_comp_s;\n // SET_OPTION(quant_comp_short, set.quant_comp_s, -1);\n if (set.expY != 0) {\n gfp.experimentalY = set.expY != 0;\n }\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n // SET_OPTION(short_threshold_lrm, set.st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n // SET_OPTION(short_threshold_s, set.st_s, -1);\n if (enforce != 0)\n gfp.maskingadjust = set.masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = set.masking_adj;\n // SET_OPTION(maskingadjust, set.masking_adj, 0);\n if (enforce != 0)\n gfp.maskingadjust_short = set.masking_adj_short;\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = set.masking_adj_short;\n // SET_OPTION(maskingadjust_short, set.masking_adj_short, 0);\n if (enforce != 0)\n gfp.ATHlower = -set.ath_lower / 10.0;\n else if (!(Math.abs((-gfp.ATHlower * 10.0) - 0) > 0))\n gfp.ATHlower = -set.ath_lower / 10.0;\n // SET_OPTION(ATHlower, set.ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = set.ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = set.ath_curve;\n // SET_OPTION(ATHcurve, set.ath_curve, -1);\n if (enforce != 0)\n gfp.athaa_sensitivity = set.ath_sensitivity;\n else if (!(Math.abs(gfp.athaa_sensitivity - -1) > 0))\n gfp.athaa_sensitivity = set.ath_sensitivity;\n // SET_OPTION(athaa_sensitivity, set.ath_sensitivity, 0);\n if (set.interch > 0) {\n if (enforce != 0)\n gfp.interChRatio = set.interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = set.interch;\n // SET_OPTION(interChRatio, set.interch, -1);\n }\n\n /* parameters for which there is no proper set/get interface */\n if (set.safejoint > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | set.safejoint;\n }\n if (set.sfb21mod > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | (set.sfb21mod << 20);\n }\n if (enforce != 0)\n gfp.msfix = set.msfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = set.msfix;\n // SET_OPTION(msfix, set.msfix, -1);\n\n if (enforce == 0) {\n gfp.VBR_q = a;\n gfp.VBR_q_frac = x;\n }\n }\n\n /**\n * <PRE>\n * Switch mappings for ABR mode\n *\n * kbps quant q_s safejoint nsmsfix st_lrm st_s ns-bass scale msk ath_lwr ath_curve interch , sfscale\n * </PRE>\n */\n var abr_switch_map = [\n new ABRPresets(8, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -30.0, 11, 0.0012, 1), /* 8, impossible to use in stereo */\n new ABRPresets(16, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -25.0, 11, 0.0010, 1), /* 16 */\n new ABRPresets(24, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -20.0, 11, 0.0010, 1), /* 24 */\n new ABRPresets(32, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -15.0, 11, 0.0010, 1), /* 32 */\n new ABRPresets(40, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 40 */\n new ABRPresets(48, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 48 */\n new ABRPresets(56, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -6.0, 11, 0.0008, 1), /* 56 */\n new ABRPresets(64, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -2.0, 11, 0.0008, 1), /* 64 */\n new ABRPresets(80, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, .0, 8, 0.0007, 1), /* 80 */\n new ABRPresets(96, 9, 9, 0, 2.50, 6.60, 145, 0, 0.95, 0, 1.0, 5.5, 0.0006, 1), /* 96 */\n new ABRPresets(112, 9, 9, 0, 2.25, 6.60, 145, 0, 0.95, 0, 2.0, 4.5, 0.0005, 1), /* 112 */\n new ABRPresets(128, 9, 9, 0, 1.95, 6.40, 140, 0, 0.95, 0, 3.0, 4, 0.0002, 1), /* 128 */\n new ABRPresets(160, 9, 9, 1, 1.79, 6.00, 135, 0, 0.95, -2, 5.0, 3.5, 0, 1), /* 160 */\n new ABRPresets(192, 9, 9, 1, 1.49, 5.60, 125, 0, 0.97, -4, 7.0, 3, 0, 0), /* 192 */\n new ABRPresets(224, 9, 9, 1, 1.25, 5.20, 125, 0, 0.98, -6, 9.0, 2, 0, 0), /* 224 */\n new ABRPresets(256, 9, 9, 1, 0.97, 5.20, 125, 0, 1.00, -8, 10.0, 1, 0, 0), /* 256 */\n new ABRPresets(320, 9, 9, 1, 0.90, 5.20, 125, 0, 1.00, -10, 12.0, 0, 0, 0) /* 320 */\n ];\n\n function apply_abr_preset(gfp, preset, enforce) {\n /* Variables for the ABR stuff */\n var actual_bitrate = preset;\n\n var r = lame.nearestBitrateFullIndex(preset);\n\n gfp.VBR = VbrMode.vbr_abr;\n gfp.VBR_mean_bitrate_kbps = actual_bitrate;\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n if (gfp.VBR_mean_bitrate_kbps > 320) {\n gfp.disable_reservoir = true;\n }\n\n /* parameters for which there is no proper set/get interface */\n if (abr_switch_map[r].safejoint > 0)\n gfp.exp_nspsytune = gfp.exp_nspsytune | 2;\n /* safejoint */\n\n if (abr_switch_map[r].sfscale > 0) {\n gfp.internal_flags.noise_shaping = 2;\n }\n /* ns-bass tweaks */\n if (Math.abs(abr_switch_map[r].nsbass) > 0) {\n var k = (int)(abr_switch_map[r].nsbass * 4);\n if (k < 0)\n k += 64;\n gfp.exp_nspsytune = gfp.exp_nspsytune | (k << 2);\n }\n\n if (enforce != 0)\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n // SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n // SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1);\n\n if (enforce != 0)\n gfp.msfix = abr_switch_map[r].nsmsfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = abr_switch_map[r].nsmsfix;\n // SET_OPTION(msfix, abr_switch_map[r].nsmsfix, -1);\n\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n // SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n // SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1);\n\n /*\n * ABR seems to have big problems with clipping, especially at low\n * bitrates\n */\n /*\n * so we compensate for that here by using a scale value depending on\n * bitrate\n */\n if (enforce != 0)\n gfp.scale = abr_switch_map[r].scale;\n else if (!(Math.abs(gfp.scale - -1) > 0))\n gfp.scale = abr_switch_map[r].scale;\n // SET_OPTION(scale, abr_switch_map[r].scale, -1);\n\n if (enforce != 0)\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n // SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj, 0);\n if (abr_switch_map[r].masking_adj > 0) {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // .9, 0);\n } else {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // 1.1, 0);\n }\n\n if (enforce != 0)\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n else if (!(Math.abs((-gfp.ATHlower * 10.) - 0) > 0))\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n // SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n // SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1);\n\n if (enforce != 0)\n gfp.interChRatio = abr_switch_map[r].interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = abr_switch_map[r].interch;\n // SET_OPTION(interChRatio, abr_switch_map[r].interch, -1);\n\n return preset;\n }\n\n this.apply_preset = function(gfp, preset, enforce) {\n /* translate legacy presets */\n switch (preset) {\n case Lame.R3MIX:\n {\n preset = Lame.V3;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.MEDIUM:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode.vbr_rh;\n break;\n }\n case Lame.MEDIUM_FAST:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.STANDARD:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode.vbr_rh;\n break;\n }\n case Lame.STANDARD_FAST:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.EXTREME:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode.vbr_rh;\n break;\n }\n case Lame.EXTREME_FAST:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode.vbr_mtrh;\n break;\n }\n case Lame.INSANE:\n {\n preset = 320;\n gfp.preset = preset;\n apply_abr_preset(gfp, preset, enforce);\n gfp.VBR = VbrMode.vbr_off;\n return preset;\n }\n }\n\n gfp.preset = preset;\n {\n switch (preset) {\n case Lame.V9:\n apply_vbr_preset(gfp, 9, enforce);\n return preset;\n case Lame.V8:\n apply_vbr_preset(gfp, 8, enforce);\n return preset;\n case Lame.V7:\n apply_vbr_preset(gfp, 7, enforce);\n return preset;\n case Lame.V6:\n apply_vbr_preset(gfp, 6, enforce);\n return preset;\n case Lame.V5:\n apply_vbr_preset(gfp, 5, enforce);\n return preset;\n case Lame.V4:\n apply_vbr_preset(gfp, 4, enforce);\n return preset;\n case Lame.V3:\n apply_vbr_preset(gfp, 3, enforce);\n return preset;\n case Lame.V2:\n apply_vbr_preset(gfp, 2, enforce);\n return preset;\n case Lame.V1:\n apply_vbr_preset(gfp, 1, enforce);\n return preset;\n case Lame.V0:\n apply_vbr_preset(gfp, 0, enforce);\n return preset;\n default:\n break;\n }\n }\n if (8 <= preset && preset <= 320) {\n return apply_abr_preset(gfp, preset, enforce);\n }\n\n /* no corresponding preset found */\n gfp.preset = 0;\n return preset;\n }\n\n // Rest from getset.c:\n\n /**\n * VBR quality level.<BR>\n * 0 = highest<BR>\n * 9 = lowest\n */\n function lame_set_VBR_q(gfp, VBR_q) {\n var ret = 0;\n\n if (0 > VBR_q) {\n /* Unknown VBR quality level! */\n ret = -1;\n VBR_q = 0;\n }\n if (9 < VBR_q) {\n ret = -1;\n VBR_q = 9;\n }\n\n gfp.VBR_q = VBR_q;\n gfp.VBR_q_frac = 0;\n return ret;\n }\n\n}\n\nmodule.exports = Presets;\n","function VBRQuantize() {\n var qupvt;\n var tak;\n\n this.setModules = function (_qupvt, _tk) {\n qupvt = _qupvt;\n tak = _tk;\n }\n //TODO\n\n}\n\nmodule.exports = VBRQuantize;\n","//package mp3;\n\nfunction CalcNoiseResult() {\n /**\n * sum of quantization noise > masking\n */\n this.over_noise = 0.;\n /**\n * sum of all quantization noise\n */\n this.tot_noise = 0.;\n /**\n * max quantization noise\n */\n this.max_noise = 0.;\n /**\n * number of quantization noise > masking\n */\n this.over_count = 0;\n /**\n * SSD-like cost of distorted bands\n */\n this.over_SSD = 0;\n this.bits = 0;\n}\n\nmodule.exports = CalcNoiseResult;\n","var common = require('./common.js');\nvar new_float = common.new_float;\nvar new_int = common.new_int;\nvar assert = common.assert;\n\nfunction CalcNoiseData() {\n this.global_gain = 0;\n this.sfb_count1 = 0;\n this.step = new_int(39);\n this.noise = new_float(39);\n this.noise_log = new_float(39);\n}\n\nmodule.exports = CalcNoiseData;\n","/*\n * MP3 quantization\n *\n * Copyright (c) 1999-2000 Mark Taylor\n * Copyright (c) 1999-2003 Takehiro Tominaga\n * Copyright (c) 2000-2007 Robert Hegemann\n * Copyright (c) 2001-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Quantize.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\nvar common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar VBRQuantize = require('./VBRQuantize.js');\nvar CalcNoiseResult = require('./CalcNoiseResult.js');\nvar CalcNoiseData = require('./CalcNoiseData.js');\nvar Encoder = require('./Encoder.js');\nvar GrInfo = require('./GrInfo.js');\nvar L3Side = require('./L3Side.js');\n\nfunction Quantize() {\n var bs;\n this.rv = null;\n var rv;\n this.qupvt = null;\n var qupvt;\n\n var vbr = new VBRQuantize();\n var tk;\n\n this.setModules = function (_bs, _rv, _qupvt, _tk) {\n bs = _bs;\n rv = _rv;\n this.rv = _rv;\n qupvt = _qupvt;\n this.qupvt = _qupvt;\n tk = _tk;\n vbr.setModules(qupvt, tk);\n }\n\n /**\n * convert from L/R <. Mid/Side\n */\n this.ms_convert = function (l3_side, gr) {\n for (var i = 0; i < 576; ++i) {\n var l = l3_side.tt[gr][0].xr[i];\n var r = l3_side.tt[gr][1].xr[i];\n l3_side.tt[gr][0].xr[i] = (l + r) * (Util.SQRT2 * 0.5);\n l3_side.tt[gr][1].xr[i] = (l - r) * (Util.SQRT2 * 0.5);\n }\n };\n\n /**\n * mt 6/99\n *\n * initializes cod_info, scalefac and xrpow\n *\n * returns 0 if all energies in xr are zero, else 1\n */\n function init_xrpow_core(cod_info, xrpow, upper, sum) {\n sum = 0;\n for (var i = 0; i <= upper; ++i) {\n var tmp = Math.abs(cod_info.xr[i]);\n sum += tmp;\n xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp));\n\n if (xrpow[i] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[i];\n }\n return sum;\n }\n\n this.init_xrpow = function (gfc, cod_info, xrpow) {\n var sum = 0;\n var upper = 0 | cod_info.max_nonzero_coeff;\n\n assert(xrpow != null);\n cod_info.xrpow_max = 0;\n\n /*\n * check if there is some energy we have to quantize and calculate xrpow\n * matching our fresh scalefactors\n */\n assert(0 <= upper && upper <= 575);\n\n Arrays.fill(xrpow, upper, 576, 0);\n\n sum = init_xrpow_core(cod_info, xrpow, upper, sum);\n\n /*\n * return 1 if we have something to quantize, else 0\n */\n if (sum > 1E-20) {\n var j = 0;\n if ((gfc.substep_shaping & 2) != 0)\n j = 1;\n\n for (var i = 0; i < cod_info.psymax; i++)\n gfc.pseudohalf[i] = j;\n\n return true;\n }\n\n Arrays.fill(cod_info.l3_enc, 0, 576, 0);\n return false;\n }\n\n /**\n * Gabriel Bouvigne feb/apr 2003<BR>\n * Analog silence detection in partitionned sfb21 or sfb12 for short blocks\n *\n * From top to bottom of sfb, changes to 0 coeffs which are below ath. It\n * stops on the first coeff higher than ath.\n */\n function psfb21_analogsilence(gfc, cod_info) {\n var ath = gfc.ATH;\n var xr = cod_info.xr;\n\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n /* NORM, START or STOP type, but not SHORT blocks */\n var stop = false;\n for (var gsfb = Encoder.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.psfb21[gsfb];\n var end = gfc.scalefac_band.psfb21[gsfb + 1];\n var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.longfact[21] > 1e-12)\n ath21 *= gfc.nsPsy.longfact[21];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath21)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n } else {\n /* note: short blocks coeffs are reordered */\n for (var block = 0; block < 3; block++) {\n var stop = false;\n for (var gsfb = Encoder.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.s[12]\n * 3\n + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n * block\n + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]);\n var end = start\n + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]);\n var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.shortfact[12] > 1e-12)\n ath12 *= gfc.nsPsy.shortfact[12];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath12)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n }\n }\n\n }\n\n this.init_outer_loop = function (gfc, cod_info) {\n /*\n * initialize fresh cod_info\n */\n cod_info.part2_3_length = 0;\n cod_info.big_values = 0;\n cod_info.count1 = 0;\n cod_info.global_gain = 210;\n cod_info.scalefac_compress = 0;\n /* mixed_block_flag, block_type was set in psymodel.c */\n cod_info.table_select[0] = 0;\n cod_info.table_select[1] = 0;\n cod_info.table_select[2] = 0;\n cod_info.subblock_gain[0] = 0;\n cod_info.subblock_gain[1] = 0;\n cod_info.subblock_gain[2] = 0;\n cod_info.subblock_gain[3] = 0;\n /* this one is always 0 */\n cod_info.region0_count = 0;\n cod_info.region1_count = 0;\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 0;\n cod_info.count1table_select = 0;\n cod_info.part2_length = 0;\n cod_info.sfb_lmax = Encoder.SBPSY_l;\n cod_info.sfb_smin = Encoder.SBPSY_s;\n cod_info.psy_lmax = gfc.sfb21_extra ? Encoder.SBMAX_l : Encoder.SBPSY_l;\n cod_info.psymax = cod_info.psy_lmax;\n cod_info.sfbmax = cod_info.sfb_lmax;\n cod_info.sfbdivide = 11;\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1]\n - gfc.scalefac_band.l[sfb];\n /* which is always 0. */\n cod_info.window[sfb] = 3;\n }\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n var ixwork = new_float(576);\n\n cod_info.sfb_smin = 0;\n cod_info.sfb_lmax = 0;\n if (cod_info.mixed_block_flag != 0) {\n /*\n * MPEG-1: sfbs 0-7 long block, 3-12 short blocks MPEG-2(.5):\n * sfbs 0-5 long block, 3-12 short blocks\n */\n cod_info.sfb_smin = 3;\n cod_info.sfb_lmax = gfc.mode_gr * 2 + 4;\n }\n cod_info.psymax = cod_info.sfb_lmax\n + 3\n * ((gfc.sfb21_extra ? Encoder.SBMAX_s : Encoder.SBPSY_s) - cod_info.sfb_smin);\n cod_info.sfbmax = cod_info.sfb_lmax + 3\n * (Encoder.SBPSY_s - cod_info.sfb_smin);\n cod_info.sfbdivide = cod_info.sfbmax - 18;\n cod_info.psy_lmax = cod_info.sfb_lmax;\n /* re-order the short blocks, for more efficient encoding below */\n /* By Takehiro TOMINAGA */\n /*\n * Within each scalefactor band, data is given for successive time\n * windows, beginning with window 0 and ending with window 2. Within\n * each window, the quantized values are then arranged in order of\n * increasing frequency...\n */\n var ix = gfc.scalefac_band.l[cod_info.sfb_lmax];\n System.arraycopy(cod_info.xr, 0, ixwork, 0, 576);\n for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n for (var window = 0; window < 3; window++) {\n for (var l = start; l < end; l++) {\n cod_info.xr[ix++] = ixwork[3 * l + window];\n }\n }\n }\n\n var j = cod_info.sfb_lmax;\n for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1]\n - gfc.scalefac_band.s[sfb];\n cod_info.window[j] = 0;\n cod_info.window[j + 1] = 1;\n cod_info.window[j + 2] = 2;\n j += 3;\n }\n }\n\n cod_info.count1bits = 0;\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0];\n cod_info.slen[0] = 0;\n cod_info.slen[1] = 0;\n cod_info.slen[2] = 0;\n cod_info.slen[3] = 0;\n\n cod_info.max_nonzero_coeff = 575;\n\n /*\n * fresh scalefactors are all zero\n */\n Arrays.fill(cod_info.scalefac, 0);\n\n psfb21_analogsilence(gfc, cod_info);\n };\n\n function BinSearchDirection(ordinal) {\n this.ordinal = ordinal;\n }\n\n BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0);\n BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1);\n BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2);\n\n /**\n * author/date??\n *\n * binary step size search used by outer_loop to get a quantizer step size\n * to start with\n */\n function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) {\n var nBits;\n var CurrentStep = gfc.CurrentStep[ch];\n var flagGoneOver = false;\n var start = gfc.OldValue[ch];\n var Direction = BinSearchDirection.BINSEARCH_NONE;\n cod_info.global_gain = start;\n desired_rate -= cod_info.part2_length;\n\n assert(CurrentStep != 0);\n for (; ;) {\n var step;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n\n if (CurrentStep == 1 || nBits == desired_rate)\n break;\n /* nothing to adjust anymore */\n\n if (nBits > desired_rate) {\n /* increase Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_DOWN)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_UP;\n step = CurrentStep;\n } else {\n /* decrease Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_UP)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_DOWN;\n step = -CurrentStep;\n }\n cod_info.global_gain += step;\n if (cod_info.global_gain < 0) {\n cod_info.global_gain = 0;\n flagGoneOver = true;\n }\n if (cod_info.global_gain > 255) {\n cod_info.global_gain = 255;\n flagGoneOver = true;\n }\n }\n\n assert(cod_info.global_gain >= 0);\n assert(cod_info.global_gain < 256);\n\n while (nBits > desired_rate && cod_info.global_gain < 255) {\n cod_info.global_gain++;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n }\n gfc.CurrentStep[ch] = (start - cod_info.global_gain >= 4) ? 4 : 2;\n gfc.OldValue[ch] = cod_info.global_gain;\n cod_info.part2_3_length = nBits;\n return nBits;\n }\n\n this.trancate_smallspectrums = function (gfc, gi, l3_xmin, work) {\n var distort = new_float(L3Side.SFBMAX);\n\n if ((0 == (gfc.substep_shaping & 4) && gi.block_type == Encoder.SHORT_TYPE)\n || (gfc.substep_shaping & 0x80) != 0)\n return;\n qupvt.calc_noise(gi, l3_xmin, distort, new CalcNoiseResult(), null);\n for (var j = 0; j < 576; j++) {\n var xr = 0.0;\n if (gi.l3_enc[j] != 0)\n xr = Math.abs(gi.xr[j]);\n work[j] = xr;\n }\n\n var j = 0;\n var sfb = 8;\n if (gi.block_type == Encoder.SHORT_TYPE)\n sfb = 6;\n do {\n var allowedNoise, trancateThreshold;\n var nsame, start;\n\n var width = gi.width[sfb];\n j += width;\n if (distort[sfb] >= 1.0)\n continue;\n\n Arrays.sort(work, j - width, width);\n if (BitStream.EQ(work[j - 1], 0.0))\n continue;\n /* all zero sfb */\n\n allowedNoise = (1.0 - distort[sfb]) * l3_xmin[sfb];\n trancateThreshold = 0.0;\n start = 0;\n do {\n var noise;\n for (nsame = 1; start + nsame < width; nsame++)\n if (BitStream.NEQ(work[start + j - width], work[start + j\n + nsame - width]))\n break;\n\n noise = work[start + j - width] * work[start + j - width]\n * nsame;\n if (allowedNoise < noise) {\n if (start != 0)\n trancateThreshold = work[start + j - width - 1];\n break;\n }\n allowedNoise -= noise;\n start += nsame;\n } while (start < width);\n if (BitStream.EQ(trancateThreshold, 0.0))\n continue;\n\n do {\n if (Math.abs(gi.xr[j - width]) <= trancateThreshold)\n gi.l3_enc[j - width] = 0;\n } while (--width > 0);\n } while (++sfb < gi.psymax);\n\n gi.part2_3_length = tk.noquant_count_bits(gfc, gi, null);\n };\n\n /**\n * author/date??\n *\n * Function: Returns zero if there is a scalefac which has not been\n * amplified. Otherwise it returns one.\n */\n function loop_break(cod_info) {\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++)\n if (cod_info.scalefac[sfb]\n + cod_info.subblock_gain[cod_info.window[sfb]] == 0)\n return false;\n\n return true;\n }\n\n /* mt 5/99: Function: Improved calc_noise for a single channel */\n\n function penalties(noise) {\n return Util.FAST_LOG10((0.368 + 0.632 * noise * noise * noise));\n }\n\n /**\n * author/date??\n *\n * several different codes to decide which quantization is better\n */\n function get_klemm_noise(distort, gi) {\n var klemm_noise = 1E-37;\n for (var sfb = 0; sfb < gi.psymax; sfb++)\n klemm_noise += penalties(distort[sfb]);\n\n return Math.max(1e-20, klemm_noise);\n }\n\n function quant_compare(quant_comp, best, calc, gi, distort) {\n /**\n * noise is given in decibels (dB) relative to masking thesholds.<BR>\n *\n * over_noise: ??? (the previous comment is fully wrong)<BR>\n * tot_noise: ??? (the previous comment is fully wrong)<BR>\n * max_noise: max quantization noise\n */\n var better;\n\n switch (quant_comp) {\n default:\n case 9:\n {\n if (best.over_count > 0) {\n /* there are distorted sfb */\n better = calc.over_SSD <= best.over_SSD;\n if (calc.over_SSD == best.over_SSD)\n better = calc.bits < best.bits;\n } else {\n /* no distorted sfb */\n better = ((calc.max_noise < 0) && ((calc.max_noise * 10 + calc.bits) <= (best.max_noise * 10 + best.bits)));\n }\n break;\n }\n\n case 0:\n better = calc.over_count < best.over_count\n || (calc.over_count == best.over_count && calc.over_noise < best.over_noise)\n || (calc.over_count == best.over_count\n && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n\n case 8:\n calc.max_noise = get_klemm_noise(distort, gi);\n //$FALL-THROUGH$\n case 1:\n better = calc.max_noise < best.max_noise;\n break;\n case 2:\n better = calc.tot_noise < best.tot_noise;\n break;\n case 3:\n better = (calc.tot_noise < best.tot_noise)\n && (calc.max_noise < best.max_noise);\n break;\n case 4:\n better = (calc.max_noise <= 0.0 && best.max_noise > 0.2)\n || (calc.max_noise <= 0.0 && best.max_noise < 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise)\n || (calc.max_noise <= 0.0 && best.max_noise > 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.05\n && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise\n + calc.over_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.1\n && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise\n + calc.over_noise + calc.over_noise < best.tot_noise\n + best.over_noise + best.over_noise);\n break;\n case 5:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n case 6:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || (BitStream\n .EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise)));\n break;\n case 7:\n better = calc.over_count < best.over_count\n || calc.over_noise < best.over_noise;\n break;\n }\n\n if (best.over_count == 0) {\n /*\n * If no distorted bands, only use this quantization if it is\n * better, and if it uses less bits. Unfortunately, part2_3_length\n * is sometimes a poor estimator of the final size at low bitrates.\n */\n better = better && calc.bits < best.bits;\n }\n\n return better;\n }\n\n /**\n * author/date??\n *\n * <PRE>\n * Amplify the scalefactor bands that violate the masking threshold.\n * See ISO 11172-3 Section C.1.5.4.3.5\n *\n * distort[] = noise/masking\n * distort[] > 1 ==> noise is not masked\n * distort[] < 1 ==> noise is masked\n * max_dist = maximum value of distort[]\n *\n * Three algorithms:\n * noise_shaping_amp\n * 0 Amplify all bands with distort[]>1.\n *\n * 1 Amplify all bands with distort[] >= max_dist^(.5);\n * ( 50% in the db scale)\n *\n * 2 Amplify first band with distort[] >= max_dist;\n *\n *\n * For algorithms 0 and 1, if max_dist < 1, then amplify all bands\n * with distort[] >= .95*max_dist. This is to make sure we always\n * amplify at least one band.\n * </PRE>\n */\n function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n var ifqstep34;\n\n if (cod_info.scalefac_scale == 0) {\n ifqstep34 = 1.29683955465100964055;\n /* 2**(.75*.5) */\n } else {\n ifqstep34 = 1.68179283050742922612;\n /* 2**(.75*1) */\n }\n\n /* compute maximum value of distort[] */\n var trigger = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n if (trigger < distort[sfb])\n trigger = distort[sfb];\n }\n\n var noise_shaping_amp = gfc.noise_shaping_amp;\n if (noise_shaping_amp == 3) {\n if (bRefine)\n noise_shaping_amp = 2;\n else\n noise_shaping_amp = 1;\n }\n switch (noise_shaping_amp) {\n case 2:\n /* amplify exactly 1 band */\n break;\n\n case 1:\n /* amplify bands within 50% of max (on db scale) */\n if (trigger > 1.0)\n trigger = Math.pow(trigger, .5);\n else\n trigger *= .95;\n break;\n\n case 0:\n default:\n /* ISO algorithm. amplify all bands with distort>1 */\n if (trigger > 1.0)\n trigger = 1.0;\n else\n trigger *= .95;\n break;\n }\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var l;\n j += width;\n if (distort[sfb] < trigger)\n continue;\n\n if ((gfc.substep_shaping & 2) != 0) {\n gfc.pseudohalf[sfb] = (0 == gfc.pseudohalf[sfb]) ? 1 : 0;\n if (0 == gfc.pseudohalf[sfb] && gfc.noise_shaping_amp == 2)\n return;\n }\n cod_info.scalefac[sfb]++;\n for (l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n\n if (gfc.noise_shaping_amp == 2)\n return;\n }\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * turns on scalefac scale and adjusts scalefactors\n */\n function inc_scalefac_scale(cod_info, xrpow) {\n var ifqstep34 = 1.29683955465100964055;\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var s = cod_info.scalefac[sfb];\n if (cod_info.preflag != 0)\n s += qupvt.pretab[sfb];\n j += width;\n if ((s & 1) != 0) {\n s++;\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n cod_info.scalefac[sfb] = s >> 1;\n }\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 1;\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * increases the subblock gain and adjusts scalefactors\n */\n function inc_subblock_gain(gfc, cod_info, xrpow) {\n var sfb;\n var scalefac = cod_info.scalefac;\n\n /* subbloc_gain can't do anything in the long block region */\n for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n if (scalefac[sfb] >= 16)\n return true;\n }\n\n for (var window = 0; window < 3; window++) {\n var s1 = 0;\n var s2 = 0;\n\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbdivide; sfb += 3) {\n if (s1 < scalefac[sfb])\n s1 = scalefac[sfb];\n }\n for (; sfb < cod_info.sfbmax; sfb += 3) {\n if (s2 < scalefac[sfb])\n s2 = scalefac[sfb];\n }\n\n if (s1 < 16 && s2 < 8)\n continue;\n\n if (cod_info.subblock_gain[window] >= 7)\n return true;\n\n /*\n * even though there is no scalefactor for sfb12 subblock gain\n * affects upper frequencies too, that's why we have to go up to\n * SBMAX_s\n */\n cod_info.subblock_gain[window]++;\n var j = gfc.scalefac_band.l[cod_info.sfb_lmax];\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbmax; sfb += 3) {\n var amp;\n var width = cod_info.width[sfb];\n var s = scalefac[sfb];\n assert(s >= 0);\n s = s - (4 >> cod_info.scalefac_scale);\n if (s >= 0) {\n scalefac[sfb] = s;\n j += width * 3;\n continue;\n }\n\n scalefac[sfb] = 0;\n {\n var gain = 210 + (s << (cod_info.scalefac_scale + 1));\n amp = qupvt.IPOW20(gain);\n }\n j += width * (window + 1);\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n j += width * (3 - window - 1);\n }\n\n {\n var amp = qupvt.IPOW20(202);\n j += cod_info.width[sfb] * (window + 1);\n for (var l = -cod_info.width[sfb]; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n }\n return false;\n }\n\n /**\n * <PRE>\n * Takehiro Tominaga /date??\n * Robert Hegemann 2000-09-06: made a function of it\n *\n * amplifies scalefactor bands,\n * - if all are already amplified returns 0\n * - if some bands are amplified too much:\n * * try to increase scalefac_scale\n * * if already scalefac_scale was set\n * try on short blocks to increase subblock gain\n * </PRE>\n */\n function balance_noise(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n\n amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine);\n\n /*\n * check to make sure we have not amplified too much loop_break returns\n * 0 if there is an unamplified scalefac scale_bitcount returns 0 if no\n * scalefactors are too large\n */\n\n var status = loop_break(cod_info);\n\n if (status)\n return false;\n /* all bands amplified */\n\n /*\n * not all scalefactors have been amplified. so these scalefacs are\n * possibly valid. encode them:\n */\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n\n if (!status)\n return true;\n /* amplified some bands not exceeding limits */\n\n /*\n * some scalefactors are too large. lets try setting scalefac_scale=1\n */\n if (gfc.noise_shaping > 1) {\n Arrays.fill(gfc.pseudohalf, 0);\n if (0 == cod_info.scalefac_scale) {\n inc_scalefac_scale(cod_info, xrpow);\n status = false;\n } else {\n if (cod_info.block_type == Encoder.SHORT_TYPE\n && gfc.subblock_gain > 0) {\n status = (inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info));\n }\n }\n }\n\n if (!status) {\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n }\n return !status;\n }\n\n /**\n * <PRE>\n * Function: The outer iteration loop controls the masking conditions\n * of all scalefactorbands. It computes the best scalefac and\n * global gain. This module calls the inner iteration loop\n *\n * mt 5/99 completely rewritten to allow for bit reservoir control,\n * mid/side channels with L/R or mid/side masking thresholds,\n * and chooses best quantization instead of last quantization when\n * no distortion free quantization can be found.\n *\n * added VBR support mt 5/99\n *\n * some code shuffle rh 9/00\n * </PRE>\n *\n * @param l3_xmin\n * allowed distortion\n * @param xrpow\n * coloured magnitudes of spectral\n * @param targ_bits\n * maximum allowed bits\n */\n this.outer_loop = function (gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) {\n var gfc = gfp.internal_flags;\n var cod_info_w = new GrInfo();\n var save_xrpow = new_float(576);\n var distort = new_float(L3Side.SFBMAX);\n var best_noise_info = new CalcNoiseResult();\n var better;\n var prev_noise = new CalcNoiseData();\n var best_part2_3_length = 9999999;\n var bEndOfSearch = false;\n var bRefine = false;\n var best_ggain_pass1 = 0;\n\n bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow);\n\n if (0 == gfc.noise_shaping)\n /* fast mode, no noise shaping, we are ready */\n return 100;\n /* default noise_info.over_count */\n\n /* compute the distortion in this quantization */\n /* coefficients and thresholds both l/r (or both mid/side) */\n qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info,\n prev_noise);\n best_noise_info.bits = cod_info.part2_3_length;\n\n cod_info_w.assign(cod_info);\n var age = 0;\n System.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n\n while (!bEndOfSearch) {\n /* BEGIN MAIN LOOP */\n do {\n var noise_info = new CalcNoiseResult();\n var search_limit;\n var maxggain = 255;\n\n /*\n * When quantization with no distorted bands is found, allow up\n * to X new unsuccesful tries in serial. This gives us more\n * possibilities for different quant_compare modes. Much more\n * than 3 makes not a big difference, it is only slower.\n */\n\n if ((gfc.substep_shaping & 2) != 0) {\n search_limit = 20;\n } else {\n search_limit = 3;\n }\n\n /*\n * Check if the last scalefactor band is distorted. in VBR mode\n * we can't get rid of the distortion, so quit now and VBR mode\n * will try again with more bits. (makes a 10% speed increase,\n * the files I tested were binary identical, 2000/05/20 Robert\n * Hegemann) distort[] > 1 means noise > allowed noise\n */\n if (gfc.sfb21_extra) {\n if (distort[cod_info_w.sfbmax] > 1.0)\n break;\n if (cod_info_w.block_type == Encoder.SHORT_TYPE\n && (distort[cod_info_w.sfbmax + 1] > 1.0 || distort[cod_info_w.sfbmax + 2] > 1.0))\n break;\n }\n\n /* try a new scalefactor conbination on cod_info_w */\n if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine))\n break;\n if (cod_info_w.scalefac_scale != 0)\n maxggain = 254;\n\n /*\n * inner_loop starts with the initial quantization step computed\n * above and slowly increases until the bits < huff_bits. Thus\n * it is important not to start with too large of an inital\n * quantization step. Too small is ok, but inner_loop will take\n * longer\n */\n var huff_bits = targ_bits - cod_info_w.part2_length;\n if (huff_bits <= 0)\n break;\n\n /*\n * increase quantizer stepsize until needed bits are below\n * maximum\n */\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc, xrpow,\n cod_info_w, prev_noise)) > huff_bits\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n\n if (best_noise_info.over_count == 0) {\n\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc,\n xrpow, cod_info_w, prev_noise)) > best_part2_3_length\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n }\n\n /* compute the distortion in this quantization */\n qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info,\n prev_noise);\n noise_info.bits = cod_info_w.part2_3_length;\n\n /*\n * check if this quantization is better than our saved\n * quantization\n */\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n // NORM, START or STOP type\n better = gfp.quant_comp;\n } else\n better = gfp.quant_comp_short;\n\n better = quant_compare(better, best_noise_info, noise_info,\n cod_info_w, distort) ? 1 : 0;\n\n /* save data so we can restore this quantization later */\n if (better != 0) {\n best_part2_3_length = cod_info.part2_3_length;\n best_noise_info = noise_info;\n cod_info.assign(cod_info_w);\n age = 0;\n /* save data so we can restore this quantization later */\n /* store for later reuse */\n System.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n } else {\n /* early stop? */\n if (gfc.full_outer_loop == 0) {\n if (++age > search_limit\n && best_noise_info.over_count == 0)\n break;\n if ((gfc.noise_shaping_amp == 3) && bRefine && age > 30)\n break;\n if ((gfc.noise_shaping_amp == 3)\n && bRefine\n && (cod_info_w.global_gain - best_ggain_pass1) > 15)\n break;\n }\n }\n } while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255);\n\n if (gfc.noise_shaping_amp == 3) {\n if (!bRefine) {\n /* refine search */\n cod_info_w.assign(cod_info);\n System.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n age = 0;\n best_ggain_pass1 = cod_info_w.global_gain;\n\n bRefine = true;\n } else {\n /* search already refined, stop */\n bEndOfSearch = true;\n }\n\n } else {\n bEndOfSearch = true;\n }\n }\n\n assert((cod_info.global_gain + cod_info.scalefac_scale) <= 255);\n /*\n * finish up\n */\n if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh)\n /* restore for reuse on next try */\n System.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n /*\n * do the 'substep shaping'\n */\n else if ((gfc.substep_shaping & 1) != 0)\n trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow);\n\n return best_noise_info.over_count;\n }\n\n /**\n * Robert Hegemann 2000-09-06\n *\n * update reservoir status after FINAL quantization/bitrate\n */\n this.iteration_finish_one = function (gfc, gr, ch) {\n var l3_side = gfc.l3_side;\n var cod_info = l3_side.tt[gr][ch];\n\n /*\n * try some better scalefac storage\n */\n tk.best_scalefac_store(gfc, gr, ch, l3_side);\n\n /*\n * best huffman_divide may save some bits too\n */\n if (gfc.use_best_huffman == 1)\n tk.best_huffman_divide(gfc, cod_info);\n\n /*\n * update reservoir status after FINAL quantization/bitrate\n */\n rv.ResvAdjust(gfc, cod_info);\n };\n\n /**\n *\n * 2000-09-04 Robert Hegemann\n *\n * @param l3_xmin\n * allowed distortion of the scalefactor\n * @param xrpow\n * coloured magnitudes of spectral values\n */\n this.VBR_encode_granule = function (gfp, cod_info, l3_xmin, xrpow, ch, min_bits, max_bits) {\n var gfc = gfp.internal_flags;\n var bst_cod_info = new GrInfo();\n var bst_xrpow = new_float(576);\n var Max_bits = max_bits;\n var real_bits = max_bits + 1;\n var this_bits = (max_bits + min_bits) / 2;\n var dbits, over, found = 0;\n var sfb21_extra = gfc.sfb21_extra;\n\n assert(Max_bits <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n Arrays.fill(bst_cod_info.l3_enc, 0);\n\n /*\n * search within round about 40 bits of optimal\n */\n do {\n assert(this_bits >= min_bits);\n assert(this_bits <= max_bits);\n assert(min_bits <= max_bits);\n\n if (this_bits > Max_bits - 42)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = sfb21_extra;\n\n over = outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, this_bits);\n\n /*\n * is quantization as good as we are looking for ? in this case: is\n * no scalefactor band distorted?\n */\n if (over <= 0) {\n found = 1;\n /*\n * now we know it can be done with \"real_bits\" and maybe we can\n * skip some iterations\n */\n real_bits = cod_info.part2_3_length;\n\n /*\n * store best quantization so far\n */\n bst_cod_info.assign(cod_info);\n System.arraycopy(xrpow, 0, bst_xrpow, 0, 576);\n\n /*\n * try with fewer bits\n */\n max_bits = real_bits - 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n } else {\n /*\n * try with more bits\n */\n min_bits = this_bits + 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n\n if (found != 0) {\n found = 2;\n /*\n * start again with best quantization so far\n */\n cod_info.assign(bst_cod_info);\n System.arraycopy(bst_xrpow, 0, xrpow, 0, 576);\n }\n }\n } while (dbits > 12);\n\n gfc.sfb21_extra = sfb21_extra;\n\n /*\n * found=0 => nothing found, use last one found=1 => we just found the\n * best and left the loop found=2 => we restored a good one and have now\n * l3_enc to restore too\n */\n if (found == 2) {\n System.arraycopy(bst_cod_info.l3_enc, 0, cod_info.l3_enc, 0, 576);\n }\n assert(cod_info.part2_3_length <= Max_bits);\n }\n\n /**\n * Robert Hegemann 2000-09-05\n *\n * calculates * how many bits are available for analog silent granules * how\n * many bits to use for the lowest allowed bitrate * how many bits each\n * bitrate would provide\n */\n this.get_framebits = function (gfp, frameBits) {\n var gfc = gfp.internal_flags;\n\n /*\n * always use at least this many bits per granule per channel unless we\n * detect analog silence, see below\n */\n gfc.bitrate_index = gfc.VBR_min_bitrate;\n var bitsPerFrame = bs.getframebits(gfp);\n\n /*\n * bits for analog silence\n */\n gfc.bitrate_index = 1;\n bitsPerFrame = bs.getframebits(gfp);\n\n for (var i = 1; i <= gfc.VBR_max_bitrate; i++) {\n gfc.bitrate_index = i;\n var mb = new MeanBits(bitsPerFrame);\n frameBits[i] = rv.ResvFrameBegin(gfp, mb);\n bitsPerFrame = mb.bits;\n }\n };\n\n /* RH: this one needs to be overhauled sometime */\n\n /**\n * <PRE>\n * 2000-09-04 Robert Hegemann\n *\n * * converts LR to MS coding when necessary\n * * calculates allowed/adjusted quantization noise amounts\n * * detects analog silent frames\n *\n * some remarks:\n * - lower masking depending on Quality setting\n * - quality control together with adjusted ATH MDCT scaling\n * on lower quality setting allocate more noise from\n * ATH masking, and on higher quality setting allocate\n * less noise from ATH masking.\n * - experiments show that going more than 2dB over GPSYCHO's\n * limits ends up in very annoying artefacts\n * </PRE>\n */\n this.VBR_old_prepare = function (gfp, pe, ms_ener_ratio, ratio, l3_xmin, frameBits, min_bits,\n max_bits, bands) {\n var gfc = gfp.internal_flags;\n\n var masking_lower_db, adjust = 0.0;\n var analog_silence = 1;\n var bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var avg = rv.ResvFrameBegin(gfp, new MeanBits(0)) / gfc.mode_gr;\n\n get_framebits(gfp, frameBits);\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n var mxb = qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n qupvt.reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n // NORM, START or STOP type\n adjust = 1.28 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.05;\n masking_lower_db = gfc.PSY.mask_adjust - adjust;\n } else {\n adjust = 2.56 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.14;\n masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n }\n gfc.masking_lower = Math.pow(10.0,\n masking_lower_db * 0.1);\n\n init_outer_loop(gfc, cod_info);\n bands[gr][ch] = qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]);\n if (bands[gr][ch] != 0)\n analog_silence = 0;\n\n min_bits[gr][ch] = 126;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > frameBits[gfc.VBR_max_bitrate]) {\n max_bits[gr][ch] *= frameBits[gfc.VBR_max_bitrate];\n max_bits[gr][ch] /= bits;\n }\n if (min_bits[gr][ch] > max_bits[gr][ch])\n min_bits[gr][ch] = max_bits[gr][ch];\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n this.bitpressure_strategy = function (gfc, l3_xmin, min_bits, max_bits) {\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var gi = gfc.l3_side.tt[gr][ch];\n var pxmin = l3_xmin[gr][ch];\n var pxminPos = 0;\n for (var sfb = 0; sfb < gi.psy_lmax; sfb++)\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_l / Encoder.SBMAX_l;\n\n if (gi.block_type == Encoder.SHORT_TYPE) {\n for (var sfb = gi.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_s / Encoder.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_s / Encoder.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder.SBMAX_s / Encoder.SBMAX_s;\n }\n }\n max_bits[gr][ch] = 0 | Math.max(min_bits[gr][ch],\n 0.9 * max_bits[gr][ch]);\n }\n }\n };\n\n this.VBR_new_prepare = function (gfp, pe, ratio, l3_xmin, frameBits, max_bits) {\n var gfc = gfp.internal_flags;\n\n var analog_silence = 1;\n var avg = 0, bits = 0;\n var maximum_framebits;\n\n if (!gfp.free_format) {\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n\n var mb = new MeanBits(avg);\n rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n\n get_framebits(gfp, frameBits);\n maximum_framebits = frameBits[gfc.VBR_max_bitrate];\n } else {\n gfc.bitrate_index = 0;\n var mb = new MeanBits(avg);\n maximum_framebits = rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n frameBits[0] = maximum_framebits;\n }\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n gfc.masking_lower = Math.pow(10.0,\n gfc.PSY.mask_adjust * 0.1);\n\n init_outer_loop(gfc, cod_info);\n if (0 != qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]))\n analog_silence = 0;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > maximum_framebits) {\n max_bits[gr][ch] *= maximum_framebits;\n max_bits[gr][ch] /= bits;\n }\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n /**\n * calculates target bits for ABR encoding\n *\n * mt 2000/05/31\n */\n this.calc_target_bits = function (gfp, pe, ms_ener_ratio, targ_bits, analog_silence_bits, max_frame_bits) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var res_factor;\n var gr, ch, totbits, mean_bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var mb = new MeanBits(mean_bits);\n max_frame_bits[0] = rv.ResvFrameBegin(gfp, mb);\n mean_bits = mb.bits;\n\n gfc.bitrate_index = 1;\n mean_bits = bs.getframebits(gfp) - gfc.sideinfo_len * 8;\n analog_silence_bits[0] = mean_bits / (gfc.mode_gr * gfc.channels_out);\n\n mean_bits = gfp.VBR_mean_bitrate_kbps * gfp.framesize * 1000;\n if ((gfc.substep_shaping & 1) != 0)\n mean_bits *= 1.09;\n mean_bits /= gfp.out_samplerate;\n mean_bits -= gfc.sideinfo_len * 8;\n mean_bits /= (gfc.mode_gr * gfc.channels_out);\n\n /**\n * <PRE>\n * res_factor is the percentage of the target bitrate that should\n * be used on average. the remaining bits are added to the\n * bitreservoir and used for difficult to encode frames.\n *\n * Since we are tracking the average bitrate, we should adjust\n * res_factor \"on the fly\", increasing it if the average bitrate\n * is greater than the requested bitrate, and decreasing it\n * otherwise. Reasonable ranges are from .9 to 1.0\n *\n * Until we get the above suggestion working, we use the following\n * tuning:\n * compression ratio res_factor\n * 5.5 (256kbps) 1.0 no need for bitreservoir\n * 11 (128kbps) .93 7% held for reservoir\n *\n * with linear interpolation for other values.\n * </PRE>\n */\n res_factor = .93 + .07 * (11.0 - gfp.compression_ratio)\n / (11.0 - 5.5);\n if (res_factor < .90)\n res_factor = .90;\n if (res_factor > 1.00)\n res_factor = 1.00;\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n if (pe[gr][ch] > 700) {\n var add_bits = (int)((pe[gr][ch] - 700) / 1.4);\n\n var cod_info = l3_side.tt[gr][ch];\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n /* short blocks use a little extra, no matter what the pe */\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n if (add_bits < mean_bits / 2)\n add_bits = mean_bits / 2;\n }\n /* at most increase bits by 1.5*average */\n if (add_bits > mean_bits * 3 / 2)\n add_bits = mean_bits * 3 / 2;\n else if (add_bits < 0)\n add_bits = 0;\n\n targ_bits[gr][ch] += add_bits;\n }\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n }\n sum += targ_bits[gr][ch];\n }\n /* for ch */\n if (sum > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[gr][ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n targ_bits[gr][ch] /= sum;\n }\n }\n }\n /* for gr */\n\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR)\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.reduce_side(targ_bits[gr], ms_ener_ratio[gr], mean_bits\n * gfc.channels_out,\n LameInternalFlags.MAX_BITS_PER_GRANULE);\n }\n\n /*\n * sum target bits\n */\n totbits = 0;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL)\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n totbits += targ_bits[gr][ch];\n }\n }\n\n /*\n * repartion target bits if needed\n */\n if (totbits > max_frame_bits[0]) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] *= max_frame_bits[0];\n targ_bits[gr][ch] /= totbits;\n }\n }\n }\n }\n\n}\n\nmodule.exports = Quantize;\n","/*\n * bit reservoir source file\n *\n * Copyright (c) 1999-2000 Mark Taylor\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Reservoir.java,v 1.9 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n/**\n * ResvFrameBegin:<BR>\n * Called (repeatedly) at the beginning of a frame. Updates the maximum size of\n * the reservoir, and checks to make sure main_data_begin was set properly by\n * the formatter<BR>\n * Background information:\n * \n * This is the original text from the ISO standard. Because of sooo many bugs\n * and irritations correcting comments are added in brackets []. A '^W' means\n * you should remove the last word.\n * \n * <PRE>\n * 1. The following rule can be used to calculate the maximum\n * number of bits used for one granule [^W frame]:<BR>\n * At the highest possible bitrate of Layer III (320 kbps\n * per stereo signal [^W^W^W], 48 kHz) the frames must be of\n * [^W^W^W are designed to have] constant length, i.e.\n * one buffer [^W^W the frame] length is:<BR>\n * \n * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte\n * \n * This value is used as the maximum buffer per channel [^W^W] at\n * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps\n * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit\n * [per granule and channel] at 48 kHz sampling frequency.\n * This means that there is a maximum deviation (short time buffer\n * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps.\n * The actual deviation is equal to the number of bytes [with the\n * meaning of octets] denoted by the main_data_end offset pointer.\n * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits\n * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits].\n * ... The xchange of buffer bits between the left and right channel\n * is allowed without restrictions [exception: dual channel].\n * Because of the [constructed] constraint on the buffer size\n * main_data_end is always set to 0 in the case of bit_rate_index==14,\n * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case\n * all data are allocated between adjacent header [^W sync] words\n * [, i.e. there is no buffering at all].\n * </PRE>\n */\n\nvar common = require('./common.js');\nvar assert = common.assert;\n\nfunction Reservoir() {\n\tvar bs;\n\n\tthis.setModules = function(_bs) {\n\t\tbs = _bs;\n\t}\n\n\tthis.ResvFrameBegin = function(gfp, mean_bits) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar maxmp3buf;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar frameLength = bs.getframebits(gfp);\n\t\tmean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr;\n\n\t\t/**\n\t\t * <PRE>\n\t\t * Meaning of the variables:\n\t\t * resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1))\n\t\t * Number of bits can be stored in previous frame(s) due to\n\t\t * counter size constaints\n\t\t * maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5))\n\t\t * Number of bits allowed to encode one frame (you can take 8*511 bit\n\t\t * from the bit reservoir and at most 8*1440 bit from the current\n\t\t * frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible\n\t\t * value for MPEG-1 and -2)\n\t\t * \n\t\t * maximum allowed granule/channel size times 4 = 8*2047 bits.,\n\t\t * so this is the absolute maximum supported by the format.\n\t\t * \n\t\t * \n\t\t * fullFrameBits: maximum number of bits available for encoding\n\t\t * the current frame.\n\t\t * \n\t\t * mean_bits: target number of bits per granule.\n\t\t * \n\t\t * frameLength:\n\t\t * \n\t\t * gfc.ResvMax: maximum allowed reservoir\n\t\t * \n\t\t * gfc.ResvSize: current reservoir size\n\t\t * \n\t\t * l3_side.resvDrain_pre:\n\t\t * ancillary data to be added to previous frame:\n\t\t * (only usefull in VBR modes if it is possible to have\n\t\t * maxmp3buf < fullFrameBits)). Currently disabled,\n\t\t * see #define NEW_DRAIN\n\t\t * 2010-02-13: RH now enabled, it seems to be needed for CBR too,\n\t\t * as there exists one example, where the FhG decoder\n\t\t * can't decode a -b320 CBR file anymore.\n\t\t * \n\t\t * l3_side.resvDrain_post:\n\t\t * ancillary data to be added to this frame:\n\t\t * \n\t\t * </PRE>\n\t\t */\n\n\t\t/* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */\n\t\tvar resvLimit = (8 * 256) * gfc.mode_gr - 8;\n\n\t\t/*\n\t\t * maximum allowed frame size. dont use more than this number of bits,\n\t\t * even if the frame has the space for them:\n\t\t */\n\t\tif (gfp.brate > 320) {\n\t\t\t/* in freeformat the buffer is constant */\n\t\t\tmaxmp3buf = 8 * ((int) ((gfp.brate * 1000)\n\t\t\t\t\t/ (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t} else {\n\t\t\t/*\n\t\t\t * all mp3 decoders should have enough buffer to handle this value:\n\t\t\t * size of a 320kbps 32kHz frame\n\t\t\t */\n\t\t\tmaxmp3buf = 8 * 1440;\n\n\t\t\t/*\n\t\t\t * Bouvigne suggests this more lax interpretation of the ISO doc\n\t\t\t * instead of using 8*960.\n\t\t\t */\n\n\t\t\tif (gfp.strict_ISO) {\n\t\t\t\tmaxmp3buf = 8 * ((int) (320000 / (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t\t}\n\t\t}\n\n\t\tgfc.ResvMax = maxmp3buf - frameLength;\n\t\tif (gfc.ResvMax > resvLimit)\n\t\t\tgfc.ResvMax = resvLimit;\n\t\tif (gfc.ResvMax < 0 || gfp.disable_reservoir)\n\t\t\tgfc.ResvMax = 0;\n\n\t\tvar fullFrameBits = mean_bits.bits * gfc.mode_gr\n\t\t\t\t+ Math.min(gfc.ResvSize, gfc.ResvMax);\n\n\t\tif (fullFrameBits > maxmp3buf)\n\t\t\tfullFrameBits = maxmp3buf;\n\n\t\tassert (0 == gfc.ResvMax % 8);\n\t\tassert (gfc.ResvMax >= 0);\n\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t// frame analyzer code\n\t\tif (gfc.pinfo != null) {\n\t\t\t/*\n\t\t\t * expected bits per channel per granule [is this also right for\n\t\t\t * mono/stereo, MPEG-1/2 ?]\n\t\t\t */\n\t\t\tgfc.pinfo.mean_bits = mean_bits.bits / 2;\n\t\t\tgfc.pinfo.resvsize = gfc.ResvSize;\n\t\t}\n\n\t\treturn fullFrameBits;\n\t}\n\n\t/**\n\t * returns targ_bits: target number of bits to use for 1 granule<BR>\n\t * extra_bits: amount extra available from reservoir<BR>\n\t * Mark Taylor 4/99\n\t */\n\tthis.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar add_bits;\n var ResvSize = gfc.ResvSize, ResvMax = gfc.ResvMax;\n\n\t\t/* compensate the saved bits used in the 1st granule */\n\t\tif (cbr != 0)\n\t\t\tResvSize += mean_bits;\n\n\t\tif ((gfc.substep_shaping & 1) != 0)\n\t\t\tResvMax *= 0.9;\n\n\t\ttarg_bits.bits = mean_bits;\n\n\t\t/* extra bits if the reservoir is almost full */\n\t\tif (ResvSize * 10 > ResvMax * 9) {\n\t\t\tadd_bits = ResvSize - (ResvMax * 9) / 10;\n\t\t\ttarg_bits.bits += add_bits;\n\t\t\tgfc.substep_shaping |= 0x80;\n\t\t} else {\n\t\t\tadd_bits = 0;\n\t\t\tgfc.substep_shaping &= 0x7f;\n\t\t\t/*\n\t\t\t * build up reservoir. this builds the reservoir a little slower\n\t\t\t * than FhG. It could simple be mean_bits/15, but this was rigged to\n\t\t\t * always produce 100 (the old value) at 128kbs\n\t\t\t */\n\t\t\tif (!gfp.disable_reservoir && 0 == (gfc.substep_shaping & 1))\n\t\t\t\ttarg_bits.bits -= .1 * mean_bits;\n\t\t}\n\n\t\t/* amount from the reservoir we are allowed to use. ISO says 6/10 */\n\t\tvar extra_bits = (ResvSize < (gfc.ResvMax * 6) / 10 ? ResvSize\n\t\t\t\t: (gfc.ResvMax * 6) / 10);\n\t\textra_bits -= add_bits;\n\n\t\tif (extra_bits < 0)\n\t\t\textra_bits = 0;\n\t\treturn extra_bits;\n\t}\n\n\t/**\n\t * Called after a granule's bit allocation. Readjusts the size of the\n\t * reservoir to reflect the granule's usage.\n\t */\n\tthis.ResvAdjust = function(gfc, gi) {\n\t\tgfc.ResvSize -= gi.part2_3_length + gi.part2_length;\n\t}\n\n\t/**\n\t * Called after all granules in a frame have been allocated. Makes sure that\n\t * the reservoir size is within limits, possibly by adding stuffing bits.\n\t */\n\tthis.ResvFrameEnd = function(gfc, mean_bits) {\n\t\tvar over_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tgfc.ResvSize += mean_bits * gfc.mode_gr;\n\t\tvar stuffingBits = 0;\n\t\tl3_side.resvDrain_post = 0;\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t/* we must be byte aligned */\n\t\tif ((over_bits = gfc.ResvSize % 8) != 0)\n\t\t\tstuffingBits += over_bits;\n\n\t\tover_bits = (gfc.ResvSize - stuffingBits) - gfc.ResvMax;\n\t\tif (over_bits > 0) {\n\t\t\tassert (0 == over_bits % 8);\n\t\t\tassert (over_bits >= 0);\n\t\t\tstuffingBits += over_bits;\n\t\t}\n\n\t\t/*\n\t\t * NOTE: enabling the NEW_DRAIN code fixes some problems with FhG\n\t\t * decoder shipped with MS Windows operating systems. Using this, it is\n\t\t * even possible to use Gabriel's lax buffer consideration again, which\n\t\t * assumes, any decoder should have a buffer large enough for a 320 kbps\n\t\t * frame at 32 kHz sample rate.\n\t\t * \n\t\t * old drain code: lame -b320 BlackBird.wav --. does not play with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * new drain code: lame -b320 BlackBird.wav --. plays fine with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * Robert Hegemann, 2010-02-13.\n\t\t */\n\t\t/*\n\t\t * drain as many bits as possible into previous frame ancillary data In\n\t\t * particular, in VBR mode ResvMax may have changed, and we have to make\n\t\t * sure main_data_begin does not create a reservoir bigger than ResvMax\n\t\t * mt 4/00\n\t\t */\n\t\t{\n\t\t\tvar mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8;\n\t\t\tl3_side.resvDrain_pre += 8 * mdb_bytes;\n\t\t\tstuffingBits -= 8 * mdb_bytes;\n\t\t\tgfc.ResvSize -= 8 * mdb_bytes;\n\t\t\tl3_side.main_data_begin -= mdb_bytes;\n\t\t}\n\t\t/* drain the rest into this frames ancillary data */\n\t\tl3_side.resvDrain_post += stuffingBits;\n\t\tgfc.ResvSize -= stuffingBits;\n\t}\n}\n\nmodule.exports = Reservoir;\n","function Version() {\n\n /**\n * URL for the LAME website.\n */\n var LAME_URL = \"http://www.mp3dev.org/\";\n\n /**\n * Major version number.\n */\n var LAME_MAJOR_VERSION = 3;\n /**\n * Minor version number.\n */\n var LAME_MINOR_VERSION = 98;\n /**\n * Patch level.\n */\n var LAME_PATCH_VERSION = 4;\n\n /**\n * Major version number.\n */\n var PSY_MAJOR_VERSION = 0;\n /**\n * Minor version number.\n */\n var PSY_MINOR_VERSION = 93;\n\n /**\n * A string which describes the version of LAME.\n *\n * @return string which describes the version of LAME\n */\n this.getLameVersion = function () {\n // primary to write screen reports\n return (LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION);\n }\n\n /**\n * The short version of the LAME version string.\n *\n * @return short version of the LAME version string\n */\n this.getLameShortVersion = function () {\n // Adding date and time to version string makes it harder for output\n // validation\n return (LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION);\n }\n\n /**\n * The shortest version of the LAME version string.\n *\n * @return shortest version of the LAME version string\n */\n this.getLameVeryShortVersion = function () {\n // Adding date and time to version string makes it harder for output\n return (\"LAME\" + LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \"r\");\n }\n\n /**\n * String which describes the version of GPSYCHO\n *\n * @return string which describes the version of GPSYCHO\n */\n this.getPsyVersion = function () {\n return (PSY_MAJOR_VERSION + \".\" + PSY_MINOR_VERSION);\n }\n\n /**\n * String which is a URL for the LAME website.\n *\n * @return string which is a URL for the LAME website\n */\n this.getLameUrl = function () {\n return LAME_URL;\n }\n\n /**\n * Quite useless for a java version, however we are compatible ;-)\n *\n * @return \"32bits\"\n */\n this.getLameOsBitness = function () {\n return \"32bits\";\n }\n\n}\n\nmodule.exports = Version;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\n/**\n * A Vbr header may be present in the ancillary data field of the first frame of\n * an mp3 bitstream<BR>\n * The Vbr header (optionally) contains\n * <UL>\n * <LI>frames total number of audio frames in the bitstream\n * <LI>bytes total number of bytes in the bitstream\n * <LI>toc table of contents\n * </UL>\n *\n * toc (table of contents) gives seek points for random access.<BR>\n * The ith entry determines the seek point for i-percent duration.<BR>\n * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes<BR>\n * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes\n */\nVBRTag.NUMTOCENTRIES = 100;\nVBRTag.MAXFRAMESIZE = 2880;\n\nfunction VBRTag() {\n\n var lame;\n var bs;\n var v;\n\n this.setModules = function (_lame, _bs, _v) {\n lame = _lame;\n bs = _bs;\n v = _v;\n };\n\n var FRAMES_FLAG = 0x0001;\n var BYTES_FLAG = 0x0002;\n var TOC_FLAG = 0x0004;\n var VBR_SCALE_FLAG = 0x0008;\n\n var NUMTOCENTRIES = VBRTag.NUMTOCENTRIES;\n\n /**\n * (0xB40) the max freeformat 640 32kHz framesize.\n */\n var MAXFRAMESIZE = VBRTag.MAXFRAMESIZE;\n\n /**\n * <PRE>\n * 4 bytes for Header Tag\n * 4 bytes for Header Flags\n * 100 bytes for entry (toc)\n * 4 bytes for frame size\n * 4 bytes for stream size\n * 4 bytes for VBR scale. a VBR quality indicator: 0=best 100=worst\n * 20 bytes for LAME tag. for example, \"LAME3.12 (beta 6)\"\n * ___________\n * 140 bytes\n * </PRE>\n */\n var VBRHEADERSIZE = (NUMTOCENTRIES + 4 + 4 + 4 + 4 + 4);\n\n var LAMEHEADERSIZE = (VBRHEADERSIZE + 9 + 1 + 1 + 8\n + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2);\n\n /**\n * The size of the Xing header MPEG-1, bit rate in kbps.\n */\n var XING_BITRATE1 = 128;\n /**\n * The size of the Xing header MPEG-2, bit rate in kbps.\n */\n var XING_BITRATE2 = 64;\n /**\n * The size of the Xing header MPEG-2.5, bit rate in kbps.\n */\n var XING_BITRATE25 = 32;\n\n /**\n * ISO-8859-1 charset for byte to string operations.\n */\n var ISO_8859_1 = null; //Charset.forName(\"ISO-8859-1\");\n\n /**\n * VBR header magic string.\n */\n var VBRTag0 = \"Xing\";\n /**\n * VBR header magic string (VBR == VBRMode.vbr_off).\n */\n var VBRTag1 = \"Info\";\n\n /**\n * Lookup table for fast CRC-16 computation. Uses the polynomial\n * x^16+x^15+x^2+1\n */\n var crc16Lookup = [0x0000, 0xC0C1, 0xC181, 0x0140,\n 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741,\n 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41,\n 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40,\n 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941,\n 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40,\n 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540,\n 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341,\n 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141,\n 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740,\n 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40,\n 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41,\n 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940,\n 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41,\n 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541,\n 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340,\n 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141,\n 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740,\n 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40,\n 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41,\n 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940,\n 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41,\n 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541,\n 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340,\n 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140,\n 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741,\n 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41,\n 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40,\n 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941,\n 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40,\n 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540,\n 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341,\n 0x4100, 0x81C1, 0x8081, 0x4040];\n\n /***********************************************************************\n * Robert Hegemann 2001-01-17\n ***********************************************************************/\n\n function addVbr(v, bitrate) {\n v.nVbrNumFrames++;\n v.sum += bitrate;\n v.seen++;\n\n if (v.seen < v.want) {\n return;\n }\n\n if (v.pos < v.size) {\n v.bag[v.pos] = v.sum;\n v.pos++;\n v.seen = 0;\n }\n if (v.pos == v.size) {\n for (var i = 1; i < v.size; i += 2) {\n v.bag[i / 2] = v.bag[i];\n }\n v.want *= 2;\n v.pos /= 2;\n }\n }\n\n function xingSeekTable(v, t) {\n if (v.pos <= 0)\n return;\n\n for (var i = 1; i < NUMTOCENTRIES; ++i) {\n var j = i / NUMTOCENTRIES, act, sum;\n var indx = 0 | (Math.floor(j * v.pos));\n if (indx > v.pos - 1)\n indx = v.pos - 1;\n act = v.bag[indx];\n sum = v.sum;\n var seek_point = 0 | (256. * act / sum);\n if (seek_point > 255)\n seek_point = 255;\n t[i] = 0xff & seek_point;\n }\n }\n\n /**\n * Add VBR entry, used to fill the VBR TOC entries.\n *\n * @param gfp\n * global flags\n */\n this.addVbrFrame = function (gfp) {\n var gfc = gfp.internal_flags;\n var kbps = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n assert(gfc.VBR_seek_table.bag != null);\n addVbr(gfc.VBR_seek_table, kbps);\n }\n\n /**\n * Read big endian integer (4-bytes) from header.\n *\n * @param buf\n * header containing the integer\n * @param bufPos\n * offset into the header\n * @return extracted integer\n */\n function extractInteger(buf, bufPos) {\n var x = buf[bufPos + 0] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 1] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 2] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 3] & 0xff;\n return x;\n }\n\n /**\n * Write big endian integer (4-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createInteger(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 24) & 0xff);\n buf[bufPos + 1] = 0xff & ((value >> 16) & 0xff);\n buf[bufPos + 2] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 3] = 0xff & (value & 0xff);\n }\n\n /**\n * Write big endian short (2-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createShort(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 1] = 0xff & (value & 0xff);\n }\n\n /**\n * Check for magic strings (Xing/Info).\n *\n * @param buf\n * header to check\n * @param bufPos\n * header offset to check\n * @return magic string found\n */\n function isVbrTag(buf, bufPos) {\n return new String(buf, bufPos, VBRTag0.length(), ISO_8859_1)\n .equals(VBRTag0)\n || new String(buf, bufPos, VBRTag1.length(), ISO_8859_1)\n .equals(VBRTag1);\n }\n\n function shiftInBitsValue(x, n, v) {\n return 0xff & ((x << n) | (v & ~(-1 << n)));\n }\n\n /**\n * Construct the MP3 header using the settings of the global flags.\n *\n * <img src=\"1000px-Mp3filestructure.svg.png\">\n *\n * @param gfp\n * global flags\n * @param buffer\n * header\n */\n function setLameTagFrameHeader(gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n // MP3 Sync Word\n buffer[0] = shiftInBitsValue(buffer[0], 8, 0xff);\n\n buffer[1] = shiftInBitsValue(buffer[1], 3, 7);\n buffer[1] = shiftInBitsValue(buffer[1], 1,\n (gfp.out_samplerate < 16000) ? 0 : 1);\n // Version\n buffer[1] = shiftInBitsValue(buffer[1], 1, gfp.version);\n // 01 == Layer 3\n buffer[1] = shiftInBitsValue(buffer[1], 2, 4 - 3);\n // Error protection\n buffer[1] = shiftInBitsValue(buffer[1], 1, (!gfp.error_protection) ? 1\n : 0);\n\n // Bit rate\n buffer[2] = shiftInBitsValue(buffer[2], 4, gfc.bitrate_index);\n // Frequency\n buffer[2] = shiftInBitsValue(buffer[2], 2, gfc.samplerate_index);\n // Pad. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, 0);\n // Priv. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, gfp.extension);\n\n // Mode\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.mode.ordinal());\n // Mode extension (Used with Joint Stereo)\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfc.mode_ext);\n // Copy\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.copyright);\n // Original\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.original);\n // Emphasis\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.emphasis);\n\n /* the default VBR header. 48 kbps layer III, no padding, no crc */\n /* but sampling freq, mode and copyright/copy protection taken */\n /* from first valid frame */\n buffer[0] = 0xff;\n var abyte = 0xff & (buffer[1] & 0xf1);\n var bitrate;\n if (1 == gfp.version) {\n bitrate = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n bitrate = XING_BITRATE25;\n else\n bitrate = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode.vbr_off)\n bitrate = gfp.brate;\n\n var bbyte;\n if (gfp.free_format)\n bbyte = 0x00;\n else\n bbyte = 0xff & (16 * lame.BitrateIndex(bitrate, gfp.version,\n gfp.out_samplerate));\n\n /*\n * Use as much of the info from the real frames in the Xing header:\n * samplerate, channels, crc, etc...\n */\n if (gfp.version == 1) {\n /* MPEG1 */\n buffer[1] = 0xff & (abyte | 0x0a);\n /* was 0x0b; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG1 frame */\n } else {\n /* MPEG2 */\n buffer[1] = 0xff & (abyte | 0x02);\n /* was 0x03; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG2 frame */\n }\n }\n\n /**\n * Get VBR tag information\n *\n * @param buf\n * header to analyze\n * @param bufPos\n * offset into the header\n * @return VBR tag data\n */\n this.getVbrTag = function (buf) {\n var pTagData = new VBRTagData();\n var bufPos = 0;\n\n /* get Vbr header data */\n pTagData.flags = 0;\n\n /* get selected MPEG header data */\n var hId = (buf[bufPos + 1] >> 3) & 1;\n var hSrIndex = (buf[bufPos + 2] >> 2) & 3;\n var hMode = (buf[bufPos + 3] >> 6) & 3;\n var hBitrate = ((buf[bufPos + 2] >> 4) & 0xf);\n hBitrate = Tables.bitrate_table[hId][hBitrate];\n\n /* check for FFE syncword */\n if ((buf[bufPos + 1] >> 4) == 0xE)\n pTagData.samprate = Tables.samplerate_table[2][hSrIndex];\n else\n pTagData.samprate = Tables.samplerate_table[hId][hSrIndex];\n\n /* determine offset of header */\n if (hId != 0) {\n /* mpeg1 */\n if (hMode != 3)\n bufPos += (32 + 4);\n else\n bufPos += (17 + 4);\n } else {\n /* mpeg2 */\n if (hMode != 3)\n bufPos += (17 + 4);\n else\n bufPos += (9 + 4);\n }\n\n if (!isVbrTag(buf, bufPos))\n return null;\n\n bufPos += 4;\n\n pTagData.hId = hId;\n\n /* get flags */\n var head_flags = pTagData.flags = extractInteger(buf, bufPos);\n bufPos += 4;\n\n if ((head_flags & FRAMES_FLAG) != 0) {\n pTagData.frames = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & BYTES_FLAG) != 0) {\n pTagData.bytes = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & TOC_FLAG) != 0) {\n if (pTagData.toc != null) {\n for (var i = 0; i < NUMTOCENTRIES; i++)\n pTagData.toc[i] = buf[bufPos + i];\n }\n bufPos += NUMTOCENTRIES;\n }\n\n pTagData.vbrScale = -1;\n\n if ((head_flags & VBR_SCALE_FLAG) != 0) {\n pTagData.vbrScale = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n pTagData.headersize = ((hId + 1) * 72000 * hBitrate)\n / pTagData.samprate;\n\n bufPos += 21;\n var encDelay = buf[bufPos + 0] << 4;\n encDelay += buf[bufPos + 1] >> 4;\n var encPadding = (buf[bufPos + 1] & 0x0F) << 8;\n encPadding += buf[bufPos + 2] & 0xff;\n /* check for reasonable values (this may be an old Xing header, */\n /* not a INFO tag) */\n if (encDelay < 0 || encDelay > 3000)\n encDelay = -1;\n if (encPadding < 0 || encPadding > 3000)\n encPadding = -1;\n\n pTagData.encDelay = encDelay;\n pTagData.encPadding = encPadding;\n\n /* success */\n return pTagData;\n }\n\n /**\n * Initializes the header\n *\n * @param gfp\n * global flags\n */\n this.InitVbrTag = function (gfp) {\n var gfc = gfp.internal_flags;\n\n /**\n * <PRE>\n * Xing VBR pretends to be a 48kbs layer III frame. (at 44.1kHz).\n * (at 48kHz they use 56kbs since 48kbs frame not big enough for\n * table of contents)\n * let's always embed Xing header inside a 64kbs layer III frame.\n * this gives us enough room for a LAME version string too.\n * size determined by sampling frequency (MPEG1)\n * 32kHz: 216 bytes@48kbs 288bytes@ 64kbs\n * 44.1kHz: 156 bytes 208bytes@64kbs (+1 if padding = 1)\n * 48kHz: 144 bytes 192\n *\n * MPEG 2 values are the same since the framesize and samplerate\n * are each reduced by a factor of 2.\n * </PRE>\n */\n var kbps_header;\n if (1 == gfp.version) {\n kbps_header = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n kbps_header = XING_BITRATE25;\n else\n kbps_header = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode.vbr_off)\n kbps_header = gfp.brate;\n\n // make sure LAME Header fits into Frame\n var totalFrameSize = ((gfp.version + 1) * 72000 * kbps_header)\n / gfp.out_samplerate;\n var headerSize = (gfc.sideinfo_len + LAMEHEADERSIZE);\n gfc.VBR_seek_table.TotalFrameSize = totalFrameSize;\n if (totalFrameSize < headerSize || totalFrameSize > MAXFRAMESIZE) {\n /* disable tag, it wont fit */\n gfp.bWriteVbrTag = false;\n return;\n }\n\n gfc.VBR_seek_table.nVbrNumFrames = 0;\n gfc.VBR_seek_table.nBytesWritten = 0;\n gfc.VBR_seek_table.sum = 0;\n\n gfc.VBR_seek_table.seen = 0;\n gfc.VBR_seek_table.want = 1;\n gfc.VBR_seek_table.pos = 0;\n\n if (gfc.VBR_seek_table.bag == null) {\n gfc.VBR_seek_table.bag = new int[400];\n gfc.VBR_seek_table.size = 400;\n }\n\n // write dummy VBR tag of all 0's into bitstream\n var buffer = new_byte(MAXFRAMESIZE);\n\n setLameTagFrameHeader(gfp, buffer);\n var n = gfc.VBR_seek_table.TotalFrameSize;\n for (var i = 0; i < n; ++i) {\n bs.add_dummy_byte(gfp, buffer[i] & 0xff, 1);\n }\n }\n\n /**\n * Fast CRC-16 computation (uses table crc16Lookup).\n *\n * @param value\n * @param crc\n * @return\n */\n function crcUpdateLookup(value, crc) {\n var tmp = crc ^ value;\n crc = (crc >> 8) ^ crc16Lookup[tmp & 0xff];\n return crc;\n }\n\n this.updateMusicCRC = function (crc, buffer, bufferPos, size) {\n for (var i = 0; i < size; ++i)\n crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]);\n }\n\n /**\n * Write LAME info: mini version + info on various switches used (Jonathan\n * Dee 2001/08/31).\n *\n * @param gfp\n * global flags\n * @param musicLength\n * music length\n * @param streamBuffer\n * pointer to output buffer\n * @param streamBufferPos\n * offset into the output buffer\n * @param crc\n * computation of CRC-16 of Lame Tag so far (starting at frame\n * sync)\n * @return number of bytes written to the stream\n */\n function putLameVBR(gfp, musicLength, streamBuffer, streamBufferPos, crc) {\n var gfc = gfp.internal_flags;\n var bytesWritten = 0;\n\n /* encoder delay */\n var encDelay = gfp.encoder_delay;\n /* encoder padding */\n var encPadding = gfp.encoder_padding;\n\n /* recall: gfp.VBR_q is for example set by the switch -V */\n /* gfp.quality by -q, -h, -f, etc */\n var quality = (100 - 10 * gfp.VBR_q - gfp.quality);\n\n var version = v.getLameVeryShortVersion();\n var vbr;\n var revision = 0x00;\n var revMethod;\n // numbering different in vbr_mode vs. Lame tag\n var vbrTypeTranslator = [1, 5, 3, 2, 4, 0, 3];\n var lowpass = 0 | (((gfp.lowpassfreq / 100.0) + .5) > 255 ? 255\n : (gfp.lowpassfreq / 100.0) + .5);\n var peakSignalAmplitude = 0;\n var radioReplayGain = 0;\n var audiophileReplayGain = 0;\n var noiseShaping = gfp.internal_flags.noise_shaping;\n var stereoMode = 0;\n var nonOptimal = 0;\n var sourceFreq = 0;\n var misc = 0;\n var musicCRC = 0;\n\n // psy model type: Gpsycho or NsPsytune\n var expNPsyTune = (gfp.exp_nspsytune & 1) != 0;\n var safeJoint = (gfp.exp_nspsytune & 2) != 0;\n var noGapMore = false;\n var noGapPrevious = false;\n var noGapCount = gfp.internal_flags.nogap_total;\n var noGapCurr = gfp.internal_flags.nogap_current;\n\n // 4 bits\n var athType = gfp.ATHtype;\n var flags = 0;\n\n // vbr modes\n var abrBitrate;\n switch (gfp.VBR) {\n case vbr_abr:\n abrBitrate = gfp.VBR_mean_bitrate_kbps;\n break;\n case vbr_off:\n abrBitrate = gfp.brate;\n break;\n default:\n abrBitrate = gfp.VBR_min_bitrate_kbps;\n }\n\n // revision and vbr method\n if (gfp.VBR.ordinal() < vbrTypeTranslator.length)\n vbr = vbrTypeTranslator[gfp.VBR.ordinal()];\n else\n vbr = 0x00; // unknown\n\n revMethod = 0x10 * revision + vbr;\n\n // ReplayGain\n if (gfc.findReplayGain) {\n if (gfc.RadioGain > 0x1FE)\n gfc.RadioGain = 0x1FE;\n if (gfc.RadioGain < -0x1FE)\n gfc.RadioGain = -0x1FE;\n\n // set name code\n radioReplayGain = 0x2000;\n // set originator code to `determined automatically'\n radioReplayGain |= 0xC00;\n\n if (gfc.RadioGain >= 0) {\n // set gain adjustment\n radioReplayGain |= gfc.RadioGain;\n } else {\n // set the sign bit\n radioReplayGain |= 0x200;\n // set gain adjustment\n radioReplayGain |= -gfc.RadioGain;\n }\n }\n\n // peak sample\n if (gfc.findPeakSample)\n peakSignalAmplitude = Math\n .abs(0 | ((( gfc.PeakSample) / 32767.0) * Math.pow(2, 23) + .5));\n\n // nogap\n if (noGapCount != -1) {\n if (noGapCurr > 0)\n noGapPrevious = true;\n\n if (noGapCurr < noGapCount - 1)\n noGapMore = true;\n }\n\n // flags\n flags = athType + ((expNPsyTune ? 1 : 0) << 4)\n + ((safeJoint ? 1 : 0) << 5) + ((noGapMore ? 1 : 0) << 6)\n + ((noGapPrevious ? 1 : 0) << 7);\n\n if (quality < 0)\n quality = 0;\n\n // stereo mode field (Intensity stereo is not implemented)\n switch (gfp.mode) {\n case MONO:\n stereoMode = 0;\n break;\n case STEREO:\n stereoMode = 1;\n break;\n case DUAL_CHANNEL:\n stereoMode = 2;\n break;\n case JOINT_STEREO:\n if (gfp.force_ms)\n stereoMode = 4;\n else\n stereoMode = 3;\n break;\n case NOT_SET:\n //$FALL-THROUGH$\n default:\n stereoMode = 7;\n break;\n }\n\n if (gfp.in_samplerate <= 32000)\n sourceFreq = 0x00;\n else if (gfp.in_samplerate == 48000)\n sourceFreq = 0x02;\n else if (gfp.in_samplerate > 48000)\n sourceFreq = 0x03;\n else {\n // default is 44100Hz\n sourceFreq = 0x01;\n }\n\n // Check if the user overrided the default LAME behavior with some\n // nasty options\n if (gfp.short_blocks == ShortBlock.short_block_forced\n || gfp.short_blocks == ShortBlock.short_block_dispensed\n || ((gfp.lowpassfreq == -1) && (gfp.highpassfreq == -1)) || /* \"-k\" */\n (gfp.scale_left < gfp.scale_right)\n || (gfp.scale_left > gfp.scale_right)\n || (gfp.disable_reservoir && gfp.brate < 320) || gfp.noATH\n || gfp.ATHonly || (athType == 0) || gfp.in_samplerate <= 32000)\n nonOptimal = 1;\n\n misc = noiseShaping + (stereoMode << 2) + (nonOptimal << 5)\n + (sourceFreq << 6);\n\n musicCRC = gfc.nMusicCRC;\n\n // Write all this information into the stream\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, quality);\n bytesWritten += 4;\n\n for (var j = 0; j < 9; j++) {\n streamBuffer[streamBufferPos + bytesWritten + j] = 0xff & version .charAt(j);\n }\n bytesWritten += 9;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & revMethod;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & lowpass;\n bytesWritten++;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten,\n peakSignalAmplitude);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n radioReplayGain);\n bytesWritten += 2;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n audiophileReplayGain);\n bytesWritten += 2;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & flags;\n bytesWritten++;\n\n if (abrBitrate >= 255)\n streamBuffer[streamBufferPos + bytesWritten] = 0xFF;\n else\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & abrBitrate;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & (encDelay >> 4);\n streamBuffer[streamBufferPos + bytesWritten + 1] = 0xff & ((encDelay << 4) + (encPadding >> 8));\n streamBuffer[streamBufferPos + bytesWritten + 2] = 0xff & encPadding;\n\n bytesWritten += 3;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & misc;\n bytesWritten++;\n\n // unused in rev0\n streamBuffer[streamBufferPos + bytesWritten++] = 0;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, gfp.preset);\n bytesWritten += 2;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, musicLength);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, musicCRC);\n bytesWritten += 2;\n\n // Calculate tag CRC.... must be done here, since it includes previous\n // information\n\n for (var i = 0; i < bytesWritten; i++)\n crc = crcUpdateLookup(streamBuffer[streamBufferPos + i], crc);\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, crc);\n bytesWritten += 2;\n\n return bytesWritten;\n }\n\n function skipId3v2(fpStream) {\n // seek to the beginning of the stream\n fpStream.seek(0);\n // read 10 bytes in case there's an ID3 version 2 header here\n var id3v2Header = new_byte(10);\n fpStream.readFully(id3v2Header);\n /* does the stream begin with the ID3 version 2 file identifier? */\n var id3v2TagSize;\n if (!new String(id3v2Header, \"ISO-8859-1\").startsWith(\"ID3\")) {\n /*\n * the tag size (minus the 10-byte header) is encoded into four\n * bytes where the most significant bit is clear in each byte\n */\n id3v2TagSize = (((id3v2Header[6] & 0x7f) << 21)\n | ((id3v2Header[7] & 0x7f) << 14)\n | ((id3v2Header[8] & 0x7f) << 7) | (id3v2Header[9] & 0x7f))\n + id3v2Header.length;\n } else {\n /* no ID3 version 2 tag in this stream */\n id3v2TagSize = 0;\n }\n return id3v2TagSize;\n }\n\n this.getLameTagFrame = function (gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n if (!gfp.bWriteVbrTag) {\n return 0;\n }\n if (gfc.Class_ID != Lame.LAME_ID) {\n return 0;\n }\n if (gfc.VBR_seek_table.pos <= 0) {\n return 0;\n }\n if (buffer.length < gfc.VBR_seek_table.TotalFrameSize) {\n return gfc.VBR_seek_table.TotalFrameSize;\n }\n\n Arrays.fill(buffer, 0, gfc.VBR_seek_table.TotalFrameSize, 0);\n\n // 4 bytes frame header\n setLameTagFrameHeader(gfp, buffer);\n\n // Create TOC entries\n var toc = new_byte(NUMTOCENTRIES);\n\n if (gfp.free_format) {\n for (var i = 1; i < NUMTOCENTRIES; ++i)\n toc[i] = 0xff & (255 * i / 100);\n } else {\n xingSeekTable(gfc.VBR_seek_table, toc);\n }\n\n // Start writing the tag after the zero frame\n var streamIndex = gfc.sideinfo_len;\n /**\n * Note: Xing header specifies that Xing data goes in the ancillary data\n * with NO ERROR PROTECTION. If error protecton in enabled, the Xing\n * data still starts at the same offset, and now it is in sideinfo data\n * block, and thus will not decode correctly by non-Xing tag aware\n * players\n */\n if (gfp.error_protection)\n streamIndex -= 2;\n\n // Put Vbr tag\n if (gfp.VBR == VbrMode.vbr_off) {\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(3);\n\n } else {\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(3);\n }\n\n // Put header flags\n createInteger(buffer, streamIndex, FRAMES_FLAG + BYTES_FLAG + TOC_FLAG\n + VBR_SCALE_FLAG);\n streamIndex += 4;\n\n // Put Total Number of frames\n createInteger(buffer, streamIndex, gfc.VBR_seek_table.nVbrNumFrames);\n streamIndex += 4;\n\n // Put total audio stream size, including Xing/LAME Header\n var streamSize = (gfc.VBR_seek_table.nBytesWritten + gfc.VBR_seek_table.TotalFrameSize);\n createInteger(buffer, streamIndex, 0 | streamSize);\n streamIndex += 4;\n\n /* Put TOC */\n System.arraycopy(toc, 0, buffer, streamIndex, toc.length);\n streamIndex += toc.length;\n\n if (gfp.error_protection) {\n // (jo) error_protection: add crc16 information to header\n bs.CRC_writeheader(gfc, buffer);\n }\n\n // work out CRC so far: initially crc = 0\n var crc = 0x00;\n for (var i = 0; i < streamIndex; i++)\n crc = crcUpdateLookup(buffer[i], crc);\n // Put LAME VBR info\n streamIndex += putLameVBR(gfp, streamSize, buffer, streamIndex, crc);\n\n return gfc.VBR_seek_table.TotalFrameSize;\n }\n\n /**\n * Write final VBR tag to the file.\n *\n * @param gfp\n * global flags\n * @param stream\n * stream to add the VBR tag to\n * @return 0 (OK), -1 else\n * @throws IOException\n * I/O error\n */\n this.putVbrTag = function (gfp, stream) {\n var gfc = gfp.internal_flags;\n\n if (gfc.VBR_seek_table.pos <= 0)\n return -1;\n\n // Seek to end of file\n stream.seek(stream.length());\n\n // Get file size, abort if file has zero length.\n if (stream.length() == 0)\n return -1;\n\n // The VBR tag may NOT be located at the beginning of the stream. If an\n // ID3 version 2 tag was added, then it must be skipped to write the VBR\n // tag data.\n var id3v2TagSize = skipId3v2(stream);\n\n // Seek to the beginning of the stream\n stream.seek(id3v2TagSize);\n\n var buffer = new_byte(MAXFRAMESIZE);\n var bytes = getLameTagFrame(gfp, buffer);\n if (bytes > buffer.length) {\n return -1;\n }\n\n if (bytes < 1) {\n return 0;\n }\n\n // Put it all to disk again\n stream.write(buffer, 0, bytes);\n // success\n return 0;\n }\n\n}\n\nmodule.exports = VBRTag;\n","var common = require('./common.js');\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar Float = common.Float;\nvar ShortBlock = common.ShortBlock;\nvar Util = common.Util;\nvar Arrays = common.Arrays;\nvar new_array_n = common.new_array_n;\nvar new_byte = common.new_byte;\nvar new_double = common.new_double;\nvar new_float = common.new_float;\nvar new_float_n = common.new_float_n;\nvar new_int = common.new_int;\nvar new_int_n = common.new_int_n;\nvar assert = common.assert;\n\nvar Lame = require('./Lame.js');\nvar Presets = require('./Presets.js');\nvar GainAnalysis = require('./GainAnalysis.js');\nvar QuantizePVT = require('./QuantizePVT.js');\nvar Quantize = require('./Quantize.js');\nvar Takehiro = require('./Takehiro.js');\nvar Reservoir = require('./Reservoir.js');\nvar MPEGMode = require('./MPEGMode.js');\nvar BitStream = require('./BitStream.js');\nvar Encoder = require('./Encoder.js');\nvar Version = require('./Version.js');\nvar VBRTag = require('./VBRTag.js');\n\nfunction GetAudio() {\n var parse;\n var mpg;\n\n this.setModules = function (parse2, mpg2) {\n parse = parse2;\n mpg = mpg2;\n }\n}\n\n\nfunction Parse() {\n var ver;\n var id3;\n var pre;\n\n this.setModules = function (ver2, id32, pre2) {\n ver = ver2;\n id3 = id32;\n pre = pre2;\n }\n}\n\nfunction MPGLib() {\n}\n\nfunction ID3Tag() {\n var bits;\n var ver;\n\n this.setModules = function (_bits, _ver) {\n bits = _bits;\n ver = _ver;\n }\n}\n\nfunction Mp3Encoder(channels, samplerate, kbps) {\n if (arguments.length != 3) {\n console.error('WARN: Mp3Encoder(channels, samplerate, kbps) not specified');\n channels = 1;\n samplerate = 44100;\n kbps = 128;\n }\n var lame = new Lame();\n var gaud = new GetAudio();\n var ga = new GainAnalysis();\n var bs = new BitStream();\n var p = new Presets();\n var qupvt = new QuantizePVT();\n var qu = new Quantize();\n var vbr = new VBRTag();\n var ver = new Version();\n var id3 = new ID3Tag();\n var rv = new Reservoir();\n var tak = new Takehiro();\n var parse = new Parse();\n var mpg = new MPGLib();\n\n lame.setModules(ga, bs, p, qupvt, qu, vbr, ver, id3, mpg);\n bs.setModules(ga, mpg, ver, vbr);\n id3.setModules(bs, ver);\n p.setModules(lame);\n qu.setModules(bs, rv, qupvt, tak);\n qupvt.setModules(tak, rv, lame.enc.psy);\n rv.setModules(bs);\n tak.setModules(qupvt);\n vbr.setModules(lame, bs, ver);\n gaud.setModules(parse, mpg);\n parse.setModules(ver, id3, p);\n\n var gfp = lame.lame_init();\n\n gfp.num_channels = channels;\n gfp.in_samplerate = samplerate;\n gfp.brate = kbps;\n gfp.mode = MPEGMode.STEREO;\n gfp.quality = 3;\n gfp.bWriteVbrTag = false;\n gfp.disable_reservoir = true;\n gfp.write_id3tag_automatic = false;\n\n var retcode = lame.lame_init_params(gfp);\n assert(0 == retcode);\n var maxSamples = 1152;\n var mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n var mp3buf = new_byte(mp3buf_size);\n\n this.encodeBuffer = function (left, right) {\n if (channels == 1) {\n right = left;\n }\n assert(left.length == right.length);\n if (left.length > maxSamples) {\n maxSamples = left.length;\n mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n mp3buf = new_byte(mp3buf_size);\n }\n\n var _sz = lame.lame_encode_buffer(gfp, left, right, left.length, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n\n this.flush = function () {\n var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n}\n\nfunction WavHeader() {\n this.dataOffset = 0;\n this.dataLen = 0;\n this.channels = 0;\n this.sampleRate = 0;\n}\n\nfunction fourccToInt(fourcc) {\n return fourcc.charCodeAt(0) << 24 | fourcc.charCodeAt(1) << 16 | fourcc.charCodeAt(2) << 8 | fourcc.charCodeAt(3);\n}\n\nWavHeader.RIFF = fourccToInt(\"RIFF\");\nWavHeader.WAVE = fourccToInt(\"WAVE\");\nWavHeader.fmt_ = fourccToInt(\"fmt \");\nWavHeader.data = fourccToInt(\"data\");\n\nWavHeader.readHeader = function (dataView) {\n var w = new WavHeader();\n\n var header = dataView.getUint32(0, false);\n if (WavHeader.RIFF != header) {\n return;\n }\n var fileLen = dataView.getUint32(4, true);\n if (WavHeader.WAVE != dataView.getUint32(8, false)) {\n return;\n }\n if (WavHeader.fmt_ != dataView.getUint32(12, false)) {\n return;\n }\n var fmtLen = dataView.getUint32(16, true);\n var pos = 16 + 4;\n switch (fmtLen) {\n case 16:\n case 18:\n w.channels = dataView.getUint16(pos + 2, true);\n w.sampleRate = dataView.getUint32(pos + 4, true);\n break;\n default:\n throw 'extended fmt chunk not implemented';\n }\n pos += fmtLen;\n var data = WavHeader.data;\n var len = 0;\n while (data != header) {\n header = dataView.getUint32(pos, false);\n len = dataView.getUint32(pos + 4, true);\n if (data == header) {\n break;\n }\n pos += (len + 8);\n }\n w.dataLen = len;\n w.dataOffset = pos + 8;\n return w;\n};\n\nmodule.exports.Mp3Encoder = Mp3Encoder;\nmodule.exports.WavHeader = WavHeader;\n"],"names":["new_byte","count","Int8Array","new_short","Int16Array","new_int","Int32Array","new_float","Float32Array","new_double","Float64Array","new_float_n","args","length","sz","slice","A","i","push","new_int_n","new_short_n","new_array_n","Array","Arrays","fill","a","fromIndex","toIndex","val","arguments","System","arraycopy","src","srcPos","dest","destPos","srcEnd","out","println","message","console","log","printf","apply","Util","SQRT2","FAST_LOG10","x","Math","log10","FAST_LOG10_X","y","ShortBlock","ordinal","short_block_allowed","short_block_coupled","short_block_dispensed","short_block_forced","Float","MAX_VALUE","VbrMode","vbr_off","vbr_mt","vbr_rh","vbr_abr","vbr_mtrh","vbr_default","assert","module","common","require","Encoder","NewMDCT","enwindow","NS","NL","win","tantab_l","SHORT_TYPE","cx","ca","cs","order","window_subband","x1","x1Pos","wp","x2","w","s","t","u","v","xr","mdct_short","inout","inoutPos","l","tc0","tc1","tc2","ts0","ts1","ts2","mdct_long","outPos","_in","ct","st","tc3","tc4","ts5","ts6","ts7","ts8","ts3","ts4","tc5","tc6","tc7","tc8","mdct_sub48","gfc","w0","w1","wk","wkPos","ch","channels_out","gr","mode_gr","band","gi","l3_side","tt","mdct_enc","mdct_encPos","samp","sb_sample","sampPos","k","type","block_type","band0","band1","mixed_block_flag","amp_filter","work","b","bu","bd","III_psy_xmin","SBMAX_l","SBMAX_s","self","assign","iii_psy_xmin","j","III_psy_ratio","thm","en","MPEGMode","_ordinal","STEREO","JOINT_STEREO","DUAL_CHANNEL","MONO","NOT_SET","ENCDELAY","POSTDELAY","MDCTDELAY","FFTOFFSET","DECDELAY","SBLIMIT","CBANDS","SBPSY_l","SBPSY_s","PSFB21","PSFB12","BLKSIZE","HBLKSIZE","BLKSIZE_s","HBLKSIZE_s","NORM_TYPE","START_TYPE","STOP_TYPE","MPG_MD_LR_LR","MPG_MD_LR_I","MPG_MD_MS_LR","MPG_MD_MS_I","fircoef","bs","psy","vbr","qupvt","setModules","_bs","_psy","_qupvt","_vbr","newMDCT","adjust_ATH","gr2_max","max_pow","ATH","useAdjust","adjust","loudness_sq","max","aaSensitivityP","adjustLimit","adj_lim_new","updateStats","bitrate_index","mode_ext","bitrate_stereoMode_Hist","bt","bitrate_blockType_Hist","lame_encode_frame_init","gfp","inbuf","internal_flags","primebuff0","primebuff1","mf_size","framesize","lame_encode_mp3_frame","inbuf_l","inbuf_r","mp3buf","mp3bufPos","mp3buf_size","mp3count","masking_LR","masking_MS","masking","tot_ener","ms_ener_ratio","pe","pe_MS","pe_use","padding","slot_lag","frac_SpF","out_samplerate","psymodel","ret","bufp","bufpPos","blocktype","VBR","L3psycho_anal_vbr","L3psycho_anal_ns","mode","cod_info","force_ms","sum_pe_MS","sum_pe_LR","gi0","gi1","analysis","pinfo","ms_ratio","ers","energy","f","nsPsy","pefirbuf","iteration_loop","format_bitstream","copy_buffer","bWriteVbrTag","addVbrFrame","pcmdata","set_frame_pinfo","FFT","window","window_s","costab","fht","fz","fzPos","n","tri","k4","fi","fn","s1","c1","k1","k2","k3","kx","f0","f1","f2","f3","c2","s2","g0","g1","g2","g3","rv_tbl","fft_short","x_real","chn","buffer","bufPos","fft_long","jj","init_fft","cos","PI","PsyModel","fft","LOG10","rpelev","rpelev2","rpelev_s","rpelev2_s","DELBARK","VO_SCALE","temporalmask_sustain_sec","NS_PREECHO_ATT0","NS_PREECHO_ATT1","NS_PREECHO_ATT2","NS_MSFIX","NSFIRLEN","LN_TO_LOG10","NON_LINEAR_SCALE_ENERGY","psycho_loudness_approx","loudness_power","eql_w","compute_ffts","fftenergy","fftenergy_s","wsamp_l","wsamp_lPos","wsamp_s","wsamp_sPos","gr_out","r","re","im","totalenergy","energy_save","athaa_loudapprox","loudness_sq_save","I1LIMIT","I2LIMIT","MLIMIT","ma_max_i1","ma_max_i2","ma_max_m","tab","init_mask_add_max_values","pow","table1","table2","table3","mask_add","m1","m2","kk","shortblock","ratio","cb_s","cb_l","table2_","vbrpsy_mask_add","calc_interchannel_masking","sb","sblock","msfix1","mld","mld_l","rmid","min","rside","mld_s","ns_msfix","msfix","athadjust","msfix2","athlower","thmLR","thmM","thmS","ath","bm_l","bm_s","convert_partition2scalefac_s","eb","thr","enn","thmm","bo_s_sb","bo_s","npart_s","b_lim","w_curr","PSY","bo_s_weight","w_next","convert_partition2scalefac_l","bo_l_sb","bo_l","npart_l","bo_l_weight","compute_masking_s","ebb","numlines_s","el","s3ind_s","ecb","s3_ss","nb_s1","blocktype_old","nb_s2","block_type_set","uselongblock","blocktype_d","short_blocks","NS_INTERP","regcoef_s","pecalc_s","mr","masking_lower","pe_s","regcoef_l","pecalc_l","pe_l","calc_energy","avg","m","numlines_l","rnumlines_l","calc_mask_index_l","mask_idx","last_tab_entry","masking_ratio","masking_MS_ratio","percep_entropy","percep_MS_entropy","wsamp_L","wsamp_S","eb_l","eb_s","numchn","ns_hpfsmpl","pcfact","mask_idx_l","mask_idx_s","ResvMax","ResvSize","firbuf","firbufPos","sum1","sum2","en_subshort","en_short","attack_intensity","ns_uselongblock","attackThreshold","ns_attacks","last_en_subshort","pf","pfPos","pfe","p","abs","ers_save","attackthre_s","attackthre","lastAttacks","idx","s3ind","eb2","s3_ll","nb_1","nb_2","interChRatio","ATHlower","ppe","ppePos","vbrpsy_compute_fft_l","vbrpsy_compute_fft_s","vbrpsy_compute_loudness_approximation_l","fircoef_","vbrpsy_attack_detection","sub_short_factor","n_chn_out","n_chn_psy","factor","vbrpsy_skip_masking_s","vbrpsy_skip_masking_l","psyvbr_calc_mask_index_s","vbrpsy_compute_masking_s","float","int","last","dd","dd_n","avg_mask","minval_s","vbrpsy_compute_masking_l","ecb_limit","ecb_limit_2","ecb_limit_1","minval_l","vbrpsy_compute_block_type","vbrpsy_apply_block_type","vbrpsy_compute_MS_thresholds","cb_mld","ath_cb","ebM","ebS","thmL","thmR","mld_m","thmMS","ch01","mld_cb_l","mld_cb_s","new_thmm","s3_func_x","bark","hf_slope","tempx","tempy","exp","norm_s3_func_x","lim_a","lim_b","h","sum","norm","s3_func","temp","sqrt","freq2bark","freq","atan","init_numline","numlines","bo","bm","bval","bval_width","bo_w","sfreq","blksize","scalepos","deltafreq","sbmax","b_frq","sample_freq_frac","partition","ni","bark1","j2","sfb","i1","i2","start","end","arg","floor","f_tmp","bark2","init_s3_values","npart","use_old_s3","s3","numberOfNoneZero","s3_x_norm","stereo_demask","psymodel_init","useOldS3","bvl_a","bvl_b","snr_l_a","snr_l_b","snr_s_a","snr_s_b","experimentalZ","ms_ener_ratio_old","scalefac_band","snr","level","ATHformula","decay","exp_nspsytune","frame_duration","ATHtype","freq_inc","eql_balance","ATHformula_GB","value","ATHcurve","LameGlobalFlags","class_id","num_samples","num_channels","in_samplerate","scale","scale_left","scale_right","decode_only","quality","free_format","findReplayGain","decode_on_the_fly","write_id3tag_automatic","brate","compression_ratio","copyright","original","extension","emphasis","error_protection","strict_ISO","disable_reservoir","quant_comp","quant_comp_short","experimentalY","preset","VBR_q_frac","VBR_q","VBR_mean_bitrate_kbps","VBR_min_bitrate_kbps","VBR_max_bitrate_kbps","VBR_hard_min","lowpassfreq","highpassfreq","lowpasswidth","highpasswidth","maskingadjust","maskingadjust_short","ATHonly","ATHshort","noATH","athaa_type","athaa_sensitivity","useTemporal","tune","tune_value_a","version","encoder_delay","encoder_padding","frameNum","lame_allocated_gfp","L3Side","SFBMAX","GrInfo","l3_enc","scalefac","xrpow_max","part2_3_length","big_values","count1","global_gain","scalefac_compress","table_select","subblock_gain","region0_count","region1_count","preflag","scalefac_scale","count1table_select","part2_length","sfb_lmax","sfb_smin","psy_lmax","sfbmax","psymax","sfbdivide","width","count1bits","sfb_partition_table","slen","max_nonzero_coeff","clone_int","array","clone_float","other","IIISideInfo","main_data_begin","private_bits","resvDrain_pre","resvDrain_post","scfsi","ScaleFac","arrL","arrS","arr21","arr12","psfb21","psfb12","NsPsy","longfact","shortfact","VBRSeekInfo","seen","want","pos","size","bag","nVbrNumFrames","nBytesWritten","TotalFrameSize","LameInternalFlags","MFSIZE","MAX_HEADER_BUF","MAX_BITS_PER_CHANNEL","MAX_BITS_PER_GRANULE","BPC","MAX_HEADER_LEN","Class_ID","iteration_init_init","fill_buffer_resample_init","mfbuf","channels_in","resample_ratio","mf_samples_to_encode","VBR_min_bitrate","VBR_max_bitrate","samplerate_index","lowpass1","lowpass2","highpass1","highpass2","noise_shaping","noise_shaping_amp","substep_shaping","noise_shaping_stop","use_best_huffman","full_outer_loop","tag_spec","nMusicCRC","OldValue","CurrentStep","bv_scf","pseudohalf","sfb21_extra","inbuf_old","blackfilt","itime","sideinfo_len","Header","write_timing","ptr","buf","header","h_ptr","w_ptr","ancillary_flag","numlines_s_num1","numlines_l_num1","ms_ratio_s_old","ms_ratio_l_old","VBR_seek_table","nogap_total","nogap_current","findPeakSample","PeakSample","RadioGain","AudiophileGain","rgdata","noclipGainChange","noclipScale","hip","in_buffer_nsamples","in_buffer_0","in_buffer_1","GainAnalysis","STEPS_per_dB","MAX_dB","GAIN_NOT_ENOUGH_SAMPLES","GAIN_ANALYSIS_ERROR","GAIN_ANALYSIS_OK","INIT_GAIN_ANALYSIS_ERROR","INIT_GAIN_ANALYSIS_OK","YULE_ORDER","MAX_ORDER","MAX_SAMP_FREQ","RMS_WINDOW_TIME_NUMERATOR","RMS_WINDOW_TIME_DENOMINATOR","MAX_SAMPLES_PER_WINDOW","PINK_REF","RMS_PERCENTILE","ABYule","ABButter","filterYule","input","inputPos","output","outputPos","nSamples","kernel","filterButter","ResetSampleFrequency","rgData","samplefreq","linprebuf","lstepbuf","loutbuf","rinprebuf","rstepbuf","routbuf","reqindex","sampleWindow","lsum","rsum","totsamp","ill","InitGainAnalysis","linpre","rinpre","lstep","rstep","lout","rout","B","fsqr","d","AnalyzeSamples","left_samples","left_samplesPos","right_samples","right_samplesPos","curleft","curleftBase","curright","currightBase","batchsamples","cursamples","cursamplepos","ival","analyzeResult","len","elems","upper","ceil","GetTitleGain","retval","ReplayGain","freqindex","first","MeanBits","meanBits","bits","CBRNewIterationLoop","_quantize","quantize","l3_xmin","xrpow","targ_bits","mean_bits","max_bits","mb","rv","ResvFrameBegin","on_pe","ms_convert","reduce_side","masking_lower_db","mask_adjust","mask_adjust_short","init_outer_loop","init_xrpow","calc_xmin","outer_loop","iteration_finish_one","ResvFrameEnd","HuffCodeTab","hl","xlen","linmax","table","hlen","Tables","t1HB","t2HB","t3HB","t5HB","t6HB","t7HB","t8HB","t9HB","t10HB","t11HB","t12HB","t13HB","t15HB","t16HB","t24HB","t32HB","t33HB","t1l","t2l","t3l","t5l","t6l","t7l","t8l","t9l","t10l","t11l","t12l","t13l","t15l","t16_5l","t16l","t24l","t32l","t33l","ht","largetbl","table23","table56","bitrate_table","samplerate_table","scfsi_band","QuantizePVT","Q_MAX","Q_MAX2","LARGE_BITS","IXMAX_VAL","BitStream","tak","_tk","_rv","POW20","pow20","IPOW20","ipow20","DBL_EPSILON","PRECALC_SIZE","NSATHSCALE","nr_of_sfb_block","pretab","sfBandIndex","pow43","adj43","ATHmdct","compute_ath","ATH_l","ATH_psfb21","ATH_s","ATH_psfb12","samp_freq","ATH_f","iteration_init","huffman_init","bass","alto","treble","sfb21","cbr","tbits","add_bits","extra_bits","ResvMaxBits","fac","move_bits","athAdjust","athFloor","o","pxmin","pxminPos","gsfb","ath_over","enable_athaa_fix","en0","xmin","rh1","rh2","xa","xb","e","max_nonzero","EQ","tmpATH","StartLine","calc_noise_core","startline","step","noise","ix","ix01","calc_noise","distort","res","prev_noise","distortPos","l3_xminPos","over","over_noise_db","tot_noise_db","max_noise","scalefacPos","over_SSD","noise_log","usefullsize","sl","tmp","over_count","tot_noise","over_noise","set_pinfo","sfb2","en1","ifqstep","xfsf","CalcNoiseResult","bw","LAMEsfb","en_s","xfsf_s","thr_s","LAMEsfb_s","LAMEqss","LAMEmainbits","LAMEsfbits","Takehiro","Bits","subdv_table","quantize_lines_xrpow_01","istep","xrPos","ixPos","compareval0","quantize_lines_xrpow","remaining","x0","x3","rx0","rx1","rx2","rx3","quantize_xrpow","xp","pi","codInfo","prevNoise","prev_data_use","accumulate","accumulate01","xpPos","iData","iDataPos","acc_iData","acc_iDataPos","acc_xp","acc_xpPos","sfb_count1","ix_max","endPos","max1","max2","count_bit_ESC","t1","t2","linbits","count_bit_noESC","hlen1","count_bit_noESC_from2","count_bit_noESC_from3","sum3","hlen2","hlen3","huf_tbl_noESC","choose_table","choice2","choice","noquant_count_bits","a1","a2","bi","best_huffman_divide","count_bits","gain","roundfac","recalc_divide_init","r01_bits","r01_div","r0_tbl","r1_tbl","bigv","r0","r0bits","r0t","r1","r1t","recalc_divide_sub","cod_info2","r2","r2t","slen1_n","slen2_n","slen1_tab","slen2_tab","scfsi_calc","c","best_scalefac_store","recalc","scale_bitcount","scale_bitcount_lsf","all_scalefactors_not_negative","scale_short","scale_mixed","scale_long","max_slen1","max_slen2","max_range_sfac_tab","table_number","row_in_table","nr_sfb","max_sfac","partition_table","slen1","slen2","slen3","slen4","log2tab","err","scfb_anz","bv_index","NEQ","Lame","CRC16_POLYNOMIAL","ga","mpg","ver","_ga","_mpg","_ver","totbit","bufByteIdx","bufBitIdx","getframebits","bit_rate","bytes","putheader_bits","putbits2","putbits_noheaders","drain_into_ancillary","remainingBits","getLameShortVersion","charAt","writeheader","CRC_update","crc","CRC_writeheader","byte","encodeSideInfo2","bitsPerFrame","old","huffman_coder_count1","huffbits","Huffmancode","tableindex","cbits","xbits","ext","linbits_x1","linbits_x2","ShortHuffmancodebits","region1Start","LongHuffmancodebits","bigvalues","region2Start","writeMainData","data_bits","tot_bits","sfb_partition","scale_bits","sfbs","TotalBytes","total","compute_flushbits","total_bytes_output","flushbits","remaining_headers","last_ptr","first_ptr","flush_bitstream","add_dummy_byte","bufferPos","mp3data","minimum","updateMusicCRC","pcm_buf","mp3_in","samples_out","hip_decode1_unclipped","init_bit_stream_w","LAME_MAXMP3BUFFER","LAME_MAXALBUMART","V9","V8","V7","V6","V5","V4","V3","V2","V1","V0","R3MIX","STANDARD","EXTREME","INSANE","STANDARD_FAST","EXTREME_FAST","MEDIUM","MEDIUM_FAST","qu","id3","mpglib","enc","_p","_qu","_id3","_mpglib","LowPassHighPass","lowerlimit","BandPass","bitrate","lPass","lowpass","LAME_ID","lame_init_old","lame_init","filter_coef","nearestBitrateFullIndex","full_bitrate_table","lower_range","lower_range_kbps","upper_range","upper_range_kbps","optimum_samplefreq","input_samplefreq","suggested_samplefreq","SmpFrqIndex","sample_freq","gpf","FindNearestBitrate","bRate","samplerate","BitrateIndex","optimum_bandwidth","lh","freq_map","table_index","lame_init_params_ppflt","lowpass_band","highpass_band","minband","maxband","fc1","fc2","lame_init_qval","lame_init_bitstream","id3tag_write_v2","InitVbrTag","lame_init_params","map2MP3Frequency","linear_int","hip_decode_exit","hip_decode_init","cmp","apply_preset","LAME_DEFAULT_QUALITY","VBRNewIterationLoop","VBROldIterationLoop","vbrmode","ABRIterationLoop","NSATTACKTHRE","NSATTACKTHRE_S","update_inbuffer_size","nsamples","lame_encode_flush","mp3buffer","mp3bufferPos","mp3buffer_size","imp3","mp3buffer_size_remaining","end_padding","frames_left","samples_to_encode","mf_needed","calcNeeded","bunch","frame_num","lame_encode_buffer","id3tag_write_v1","buffer_l","buffer_r","in_buffer","lame_encode_buffer_sample","mp3size","mp3out","in_bufferPos","in_buffer_ptr","n_in","n_out","inOut","InOut","fill_buffer","buf_size","lame_encode_frame","NumUsed","num_used","gcd","blackman","fcn","wcn","bkwn","sin","fill_buffer_resample","outbuf","outbufPos","desired_len","bpc","intratio","filter_l","BLACKSIZE","offset","time0","joff","xvalue","n_shift","io","numUsed","Presets","VBRPresets","qual","comp","compS","shThreshold","shThresholdS","adj","adjShort","lower","curve","sens","inter","joint","mod","fix","vbr_q","quant_comp_s","expY","st_lrm","st_s","masking_adj","masking_adj_short","ath_lower","ath_curve","ath_sensitivity","interch","safejoint","sfb21mod","ABRPresets","kbps","sc","mask","interCh","sfScale","nsmsfix","nsbass","sfscale","lame","_lame","vbr_old_switch_map","vbr_psy_switch_map","apply_vbr_preset","enforce","vbr_preset","q","set","lame_set_VBR_q","abr_switch_map","apply_abr_preset","actual_bitrate","VBRQuantize","CalcNoiseData","Quantize","tk","init_xrpow_core","psfb21_analogsilence","stop","ath21","block","ath12","ixwork","BinSearchDirection","BINSEARCH_NONE","BINSEARCH_UP","BINSEARCH_DOWN","bin_search_StepSize","desired_rate","nBits","flagGoneOver","Direction","trancate_smallspectrums","allowedNoise","trancateThreshold","nsame","sort","loop_break","penalties","get_klemm_noise","klemm_noise","quant_compare","best","calc","better","amp_scalefac_bands","bRefine","ifqstep34","trigger","inc_scalefac_scale","inc_subblock_gain","amp","balance_noise","status","cod_info_w","save_xrpow","best_noise_info","best_part2_3_length","bEndOfSearch","best_ggain_pass1","age","noise_info","search_limit","maxggain","huff_bits","ResvAdjust","VBR_encode_granule","min_bits","bst_cod_info","bst_xrpow","Max_bits","real_bits","this_bits","dbits","found","get_framebits","frameBits","VBR_old_prepare","bands","analog_silence","mxb","bitpressure_strategy","VBR_new_prepare","maximum_framebits","calc_target_bits","analog_silence_bits","max_frame_bits","res_factor","totbits","Reservoir","maxmp3buf","frameLength","resvLimit","fullFrameBits","resvsize","over_bits","stuffingBits","mdb_bytes","Version","LAME_URL","LAME_MAJOR_VERSION","LAME_MINOR_VERSION","LAME_PATCH_VERSION","PSY_MAJOR_VERSION","PSY_MINOR_VERSION","getLameVersion","getLameVeryShortVersion","getPsyVersion","getLameUrl","getLameOsBitness","VBRTag","NUMTOCENTRIES","MAXFRAMESIZE","_v","FRAMES_FLAG","BYTES_FLAG","TOC_FLAG","VBR_SCALE_FLAG","VBRHEADERSIZE","LAMEHEADERSIZE","XING_BITRATE1","XING_BITRATE2","XING_BITRATE25","ISO_8859_1","VBRTag0","VBRTag1","crc16Lookup","addVbr","xingSeekTable","act","indx","seek_point","extractInteger","createInteger","createShort","isVbrTag","String","equals","shiftInBitsValue","setLameTagFrameHeader","abyte","bbyte","getVbrTag","pTagData","VBRTagData","flags","hId","hSrIndex","hMode","hBitrate","samprate","head_flags","frames","toc","vbrScale","headersize","encDelay","encPadding","kbps_header","totalFrameSize","headerSize","crcUpdateLookup","putLameVBR","musicLength","streamBuffer","streamBufferPos","bytesWritten","revision","revMethod","vbrTypeTranslator","peakSignalAmplitude","radioReplayGain","audiophileReplayGain","noiseShaping","stereoMode","nonOptimal","sourceFreq","misc","musicCRC","expNPsyTune","safeJoint","noGapMore","noGapPrevious","noGapCount","noGapCurr","athType","abrBitrate","skipId3v2","fpStream","seek","id3v2Header","readFully","id3v2TagSize","startsWith","getLameTagFrame","streamIndex","streamSize","putVbrTag","stream","write","GetAudio","parse2","mpg2","Parse","ver2","id32","pre2","MPGLib","ID3Tag","_bits","Mp3Encoder","channels","error","gaud","parse","maxSamples","encodeBuffer","left","right","_sz","subarray","flush","WavHeader","dataOffset","dataLen","sampleRate","fourccToInt","fourcc","charCodeAt","RIFF","WAVE","fmt_","data","readHeader","dataView","getUint32","fmtLen","getUint16"],"mappings":"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"}
|