mirror of
https://codeberg.org/ashley/poke.git
synced 2024-11-24 20:48:23 +01:00
add alac source code - part two :^
This commit is contained in:
parent
3ae7f9c5aa
commit
8f45e2eca2
5 changed files with 2299 additions and 0 deletions
1425
alac/codec/ALACEncoder.cpp
Normal file
1425
alac/codec/ALACEncoder.cpp
Normal file
File diff suppressed because it is too large
Load diff
92
alac/codec/ALACEncoder.h
Normal file
92
alac/codec/ALACEncoder.h
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Apple Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* @APPLE_APACHE_LICENSE_HEADER_START@
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* @APPLE_APACHE_LICENSE_HEADER_END@
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
File: ALACEncoder.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "ALACAudioTypes.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct BitBuffer;
|
||||||
|
|
||||||
|
class ALACEncoder
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ALACEncoder();
|
||||||
|
virtual ~ALACEncoder();
|
||||||
|
|
||||||
|
virtual int32_t Encode(AudioFormatDescription theInputFormat, AudioFormatDescription theOutputFormat,
|
||||||
|
unsigned char * theReadBuffer, unsigned char * theWriteBuffer, int32_t * ioNumBytes);
|
||||||
|
virtual int32_t Finish( );
|
||||||
|
|
||||||
|
void SetFastMode( bool fast ) { mFastMode = fast; };
|
||||||
|
|
||||||
|
// this must be called *before* InitializeEncoder()
|
||||||
|
void SetFrameSize( uint32_t frameSize ) { mFrameSize = frameSize; };
|
||||||
|
|
||||||
|
void GetConfig( ALACSpecificConfig & config );
|
||||||
|
uint32_t GetMagicCookieSize(uint32_t inNumChannels);
|
||||||
|
void GetMagicCookie( void * config, uint32_t * ioSize );
|
||||||
|
|
||||||
|
virtual int32_t InitializeEncoder(AudioFormatDescription theOutputFormat);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void GetSourceFormat( const AudioFormatDescription * source, AudioFormatDescription * output );
|
||||||
|
|
||||||
|
int32_t EncodeStereo( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t channelIndex, uint32_t numSamples );
|
||||||
|
int32_t EncodeStereoFast( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t channelIndex, uint32_t numSamples );
|
||||||
|
int32_t EncodeStereoEscape( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t numSamples );
|
||||||
|
int32_t EncodeMono( struct BitBuffer * bitstream, void * input, uint32_t stride, uint32_t channelIndex, uint32_t numSamples );
|
||||||
|
|
||||||
|
|
||||||
|
// ALAC encoder parameters
|
||||||
|
int16_t mBitDepth;
|
||||||
|
bool mFastMode;
|
||||||
|
|
||||||
|
// encoding state
|
||||||
|
int16_t mLastMixRes[kALACMaxChannels];
|
||||||
|
|
||||||
|
// encoding buffers
|
||||||
|
int32_t * mMixBufferU;
|
||||||
|
int32_t * mMixBufferV;
|
||||||
|
int32_t * mPredictorU;
|
||||||
|
int32_t * mPredictorV;
|
||||||
|
uint16_t * mShiftBufferUV;
|
||||||
|
|
||||||
|
uint8_t * mWorkBuffer;
|
||||||
|
|
||||||
|
// per-channel coefficients buffers
|
||||||
|
int16_t mCoefsU[kALACMaxChannels][kALACMaxSearches][kALACMaxCoefs];
|
||||||
|
int16_t mCoefsV[kALACMaxChannels][kALACMaxSearches][kALACMaxCoefs];
|
||||||
|
|
||||||
|
// encoding statistics
|
||||||
|
uint32_t mTotalBytesGenerated;
|
||||||
|
uint32_t mAvgBitRate;
|
||||||
|
uint32_t mMaxFrameBytes;
|
||||||
|
uint32_t mFrameSize;
|
||||||
|
uint32_t mMaxOutputBytes;
|
||||||
|
uint32_t mNumChannels;
|
||||||
|
uint32_t mOutputSampleRate;
|
||||||
|
};
|
335
alac/codec/APPLE_LICENSE.txt
Normal file
335
alac/codec/APPLE_LICENSE.txt
Normal file
|
@ -0,0 +1,335 @@
|
||||||
|
APPLE PUBLIC SOURCE LICENSE
|
||||||
|
Version 2.0 - August 6, 2003
|
||||||
|
|
||||||
|
Please read this License carefully before downloading this software. By
|
||||||
|
downloading or using this software, you are agreeing to be bound by the terms
|
||||||
|
of this License. If you do not or cannot agree to the terms of this License,
|
||||||
|
please do not download or use the software.
|
||||||
|
|
||||||
|
Apple Note: In January 2007, Apple changed its corporate name from "Apple
|
||||||
|
Computer, Inc." to "Apple Inc." This change has been reflected below and
|
||||||
|
copyright years updated, but no other changes have been made to the APSL 2.0.
|
||||||
|
|
||||||
|
1. General; Definitions. This License applies to any program or other
|
||||||
|
work which Apple Inc. ("Apple") makes publicly available and which contains a
|
||||||
|
notice placed by Apple identifying such program or work as "Original Code" and
|
||||||
|
stating that it is subject to the terms of this Apple Public Source License
|
||||||
|
version 2.0 ("License"). As used in this License:
|
||||||
|
|
||||||
|
1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is the
|
||||||
|
grantor of rights, (i) claims of patents that are now or hereafter acquired,
|
||||||
|
owned by or assigned to Apple and (ii) that cover subject matter contained in
|
||||||
|
the Original Code, but only to the extent necessary to use, reproduce and/or
|
||||||
|
distribute the Original Code without infringement; and (b) in the case where
|
||||||
|
You are the grantor of rights, (i) claims of patents that are now or hereafter
|
||||||
|
acquired, owned by or assigned to You and (ii) that cover subject matter in
|
||||||
|
Your Modifications, taken alone or in combination with Original Code.
|
||||||
|
|
||||||
|
1.2 "Contributor" means any person or entity that creates or contributes to
|
||||||
|
the creation of Modifications.
|
||||||
|
|
||||||
|
1.3 "Covered Code" means the Original Code, Modifications, the combination
|
||||||
|
of Original Code and any Modifications, and/or any respective portions thereof.
|
||||||
|
|
||||||
|
1.4 "Externally Deploy" means: (a) to sublicense, distribute or otherwise
|
||||||
|
make Covered Code available, directly or indirectly, to anyone other than You;
|
||||||
|
and/or (b) to use Covered Code, alone or as part of a Larger Work, in any way
|
||||||
|
to provide a service, including but not limited to delivery of content, through
|
||||||
|
electronic communication with a client other than You.
|
||||||
|
|
||||||
|
1.5 "Larger Work" means a work which combines Covered Code or portions
|
||||||
|
thereof with code not governed by the terms of this License.
|
||||||
|
|
||||||
|
1.6 "Modifications" mean any addition to, deletion from, and/or change to,
|
||||||
|
the substance and/or structure of the Original Code, any previous
|
||||||
|
Modifications, the combination of Original Code and any previous Modifications,
|
||||||
|
and/or any respective portions thereof. When code is released as a series of
|
||||||
|
files, a Modification is: (a) any addition to or deletion from the contents of
|
||||||
|
a file containing Covered Code; and/or (b) any new file or other representation
|
||||||
|
of computer program statements that contains any part of Covered Code.
|
||||||
|
|
||||||
|
1.7 "Original Code" means (a) the Source Code of a program or other work as
|
||||||
|
originally made available by Apple under this License, including the Source
|
||||||
|
Code of any updates or upgrades to such programs or works made available by
|
||||||
|
Apple under this License, and that has been expressly identified by Apple as
|
||||||
|
such in the header file(s) of such work; and (b) the object code compiled from
|
||||||
|
such Source Code and originally made available by Apple under this License
|
||||||
|
|
||||||
|
1.8 "Source Code" means the human readable form of a program or other work
|
||||||
|
that is suitable for making modifications to it, including all modules it
|
||||||
|
contains, plus any associated interface definition files, scripts used to
|
||||||
|
control compilation and installation of an executable (object code).
|
||||||
|
|
||||||
|
1.9 "You" or "Your" means an individual or a legal entity exercising rights
|
||||||
|
under this License. For legal entities, "You" or "Your" includes any entity
|
||||||
|
which controls, is controlled by, or is under common control with, You, where
|
||||||
|
"control" means (a) the power, direct or indirect, to cause the direction or
|
||||||
|
management of such entity, whether by contract or otherwise, or (b) ownership
|
||||||
|
of fifty percent (50%) or more of the outstanding shares or beneficial
|
||||||
|
ownership of such entity.
|
||||||
|
|
||||||
|
2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
|
||||||
|
conditions of this License, Apple hereby grants You, effective on the date You
|
||||||
|
accept this License and download the Original Code, a world-wide, royalty-free,
|
||||||
|
non-exclusive license, to the extent of Apple's Applicable Patent Rights and
|
||||||
|
copyrights covering the Original Code, to do the following:
|
||||||
|
|
||||||
|
2.1 Unmodified Code. You may use, reproduce, display, perform, internally
|
||||||
|
distribute within Your organization, and Externally Deploy verbatim, unmodified
|
||||||
|
copies of the Original Code, for commercial or non-commercial purposes,
|
||||||
|
provided that in each instance:
|
||||||
|
|
||||||
|
(a) You must retain and reproduce in all copies of Original Code the
|
||||||
|
copyright and other proprietary notices and disclaimers of Apple as they appear
|
||||||
|
in the Original Code, and keep intact all notices in the Original Code that
|
||||||
|
refer to this License; and
|
||||||
|
|
||||||
|
(b) You must include a copy of this License with every copy of Source Code
|
||||||
|
of Covered Code and documentation You distribute or Externally Deploy, and You
|
||||||
|
may not offer or impose any terms on such Source Code that alter or restrict
|
||||||
|
this License or the recipients' rights hereunder, except as permitted under
|
||||||
|
Section 6.
|
||||||
|
|
||||||
|
2.2 Modified Code. You may modify Covered Code and use, reproduce,
|
||||||
|
display, perform, internally distribute within Your organization, and
|
||||||
|
Externally Deploy Your Modifications and Covered Code, for commercial or
|
||||||
|
non-commercial purposes, provided that in each instance You also meet all of
|
||||||
|
these conditions:
|
||||||
|
|
||||||
|
(a) You must satisfy all the conditions of Section 2.1 with respect to the
|
||||||
|
Source Code of the Covered Code;
|
||||||
|
|
||||||
|
(b) You must duplicate, to the extent it does not already exist, the notice
|
||||||
|
in Exhibit A in each file of the Source Code of all Your Modifications, and
|
||||||
|
cause the modified files to carry prominent notices stating that You changed
|
||||||
|
the files and the date of any change; and
|
||||||
|
|
||||||
|
(c) If You Externally Deploy Your Modifications, You must make Source Code
|
||||||
|
of all Your Externally Deployed Modifications either available to those to whom
|
||||||
|
You have Externally Deployed Your Modifications, or publicly available. Source
|
||||||
|
Code of Your Externally Deployed Modifications must be released under the terms
|
||||||
|
set forth in this License, including the license grants set forth in Section 3
|
||||||
|
below, for as long as you Externally Deploy the Covered Code or twelve (12)
|
||||||
|
months from the date of initial External Deployment, whichever is longer. You
|
||||||
|
should preferably distribute the Source Code of Your Externally Deployed
|
||||||
|
Modifications electronically (e.g. download from a web site).
|
||||||
|
|
||||||
|
2.3 Distribution of Executable Versions. In addition, if You Externally
|
||||||
|
Deploy Covered Code (Original Code and/or Modifications) in object code,
|
||||||
|
executable form only, You must include a prominent notice, in the code itself
|
||||||
|
as well as in related documentation, stating that Source Code of the Covered
|
||||||
|
Code is available under the terms of this License with information on how and
|
||||||
|
where to obtain such Source Code.
|
||||||
|
|
||||||
|
2.4 Third Party Rights. You expressly acknowledge and agree that although
|
||||||
|
Apple and each Contributor grants the licenses to their respective portions of
|
||||||
|
the Covered Code set forth herein, no assurances are provided by Apple or any
|
||||||
|
Contributor that the Covered Code does not infringe the patent or other
|
||||||
|
intellectual property rights of any other entity. Apple and each Contributor
|
||||||
|
disclaim any liability to You for claims brought by any other entity based on
|
||||||
|
infringement of intellectual property rights or otherwise. As a condition to
|
||||||
|
exercising the rights and licenses granted hereunder, You hereby assume sole
|
||||||
|
responsibility to secure any other intellectual property rights needed, if any.
|
||||||
|
For example, if a third party patent license is required to allow You to
|
||||||
|
distribute the Covered Code, it is Your responsibility to acquire that license
|
||||||
|
before distributing the Covered Code.
|
||||||
|
|
||||||
|
3. Your Grants. In consideration of, and as a condition to, the licenses
|
||||||
|
granted to You under this License, You hereby grant to any person or entity
|
||||||
|
receiving or distributing Covered Code under this License a non-exclusive,
|
||||||
|
royalty-free, perpetual, irrevocable license, under Your Applicable Patent
|
||||||
|
Rights and other intellectual property rights (other than patent) owned or
|
||||||
|
controlled by You, to use, reproduce, display, perform, modify, sublicense,
|
||||||
|
distribute and Externally Deploy Your Modifications of the same scope and
|
||||||
|
extent as Apple's licenses under Sections 2.1 and 2.2 above.
|
||||||
|
|
||||||
|
4. Larger Works. You may create a Larger Work by combining Covered Code
|
||||||
|
with other code not governed by the terms of this License and distribute the
|
||||||
|
Larger Work as a single product. In each such instance, You must make sure the
|
||||||
|
requirements of this License are fulfilled for the Covered Code or any portion
|
||||||
|
thereof.
|
||||||
|
|
||||||
|
5. Limitations on Patent License. Except as expressly stated in Section
|
||||||
|
2, no other patent rights, express or implied, are granted by Apple herein.
|
||||||
|
Modifications and/or Larger Works may require additional patent licenses from
|
||||||
|
Apple which Apple may grant in its sole discretion.
|
||||||
|
|
||||||
|
6. Additional Terms. You may choose to offer, and to charge a fee for,
|
||||||
|
warranty, support, indemnity or liability obligations and/or other rights
|
||||||
|
consistent with the scope of the license granted herein ("Additional Terms") to
|
||||||
|
one or more recipients of Covered Code. However, You may do so only on Your own
|
||||||
|
behalf and as Your sole responsibility, and not on behalf of Apple or any
|
||||||
|
Contributor. You must obtain the recipient's agreement that any such Additional
|
||||||
|
Terms are offered by You alone, and You hereby agree to indemnify, defend and
|
||||||
|
hold Apple and every Contributor harmless for any liability incurred by or
|
||||||
|
claims asserted against Apple or such Contributor by reason of any such
|
||||||
|
Additional Terms.
|
||||||
|
|
||||||
|
7. Versions of the License. Apple may publish revised and/or new versions
|
||||||
|
of this License from time to time. Each version will be given a distinguishing
|
||||||
|
version number. Once Original Code has been published under a particular
|
||||||
|
version of this License, You may continue to use it under the terms of that
|
||||||
|
version. You may also choose to use such Original Code under the terms of any
|
||||||
|
subsequent version of this License published by Apple. No one other than Apple
|
||||||
|
has the right to modify the terms applicable to Covered Code created under this
|
||||||
|
License.
|
||||||
|
|
||||||
|
8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in
|
||||||
|
part pre-release, untested, or not fully tested works. The Covered Code may
|
||||||
|
contain errors that could cause failures or loss of data, and may be incomplete
|
||||||
|
or contain inaccuracies. You expressly acknowledge and agree that use of the
|
||||||
|
Covered Code, or any portion thereof, is at Your sole and entire risk. THE
|
||||||
|
COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
|
||||||
|
ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE"
|
||||||
|
FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
|
||||||
|
ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
|
||||||
|
SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF
|
||||||
|
QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE AND EACH
|
||||||
|
CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
|
||||||
|
COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
|
||||||
|
REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
|
||||||
|
ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
|
||||||
|
WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED
|
||||||
|
REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You acknowledge
|
||||||
|
that the Covered Code is not intended for use in the operation of nuclear
|
||||||
|
facilities, aircraft navigation, communication systems, or air traffic control
|
||||||
|
machines in which case the failure of the Covered Code could lead to death,
|
||||||
|
personal injury, or severe physical or environmental damage.
|
||||||
|
|
||||||
|
9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO
|
||||||
|
EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
|
||||||
|
INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
|
||||||
|
YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
|
||||||
|
UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS
|
||||||
|
LIABILITY OR OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF
|
||||||
|
THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL
|
||||||
|
PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF
|
||||||
|
LIABILITY OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT
|
||||||
|
APPLY TO YOU. In no event shall Apple's total liability to You for all damages
|
||||||
|
(other than as may be required by applicable law) under this License exceed the
|
||||||
|
amount of fifty dollars ($50.00).
|
||||||
|
|
||||||
|
10. Trademarks. This License does not grant any rights to use the
|
||||||
|
trademarks or trade names "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime
|
||||||
|
Streaming Server" or any other trademarks, service marks, logos or trade names
|
||||||
|
belonging to Apple (collectively "Apple Marks") or to any trademark, service
|
||||||
|
mark, logo or trade name belonging to any Contributor. You agree not to use
|
||||||
|
any Apple Marks in or as part of the name of products derived from the Original
|
||||||
|
Code or to endorse or promote products derived from the Original Code other
|
||||||
|
than as expressly permitted by and in strict compliance at all times with
|
||||||
|
Apple's third party trademark usage guidelines which are posted at
|
||||||
|
http://www.apple.com/legal/guidelinesfor3rdparties.html.
|
||||||
|
|
||||||
|
11. Ownership. Subject to the licenses granted under this License, each
|
||||||
|
Contributor retains all rights, title and interest in and to any Modifications
|
||||||
|
made by such Contributor. Apple retains all rights, title and interest in and
|
||||||
|
to the Original Code and any Modifications made by or on behalf of Apple
|
||||||
|
("Apple Modifications"), and such Apple Modifications will not be automatically
|
||||||
|
subject to this License. Apple may, at its sole discretion, choose to license
|
||||||
|
such Apple Modifications under this License, or on different terms from those
|
||||||
|
contained in this License or may choose not to license them at all.
|
||||||
|
|
||||||
|
12. Termination.
|
||||||
|
|
||||||
|
12.1 Termination. This License and the rights granted hereunder will
|
||||||
|
terminate:
|
||||||
|
|
||||||
|
(a) automatically without notice from Apple if You fail to comply with any
|
||||||
|
term(s) of this License and fail to cure such breach within 30 days of becoming
|
||||||
|
aware of such breach;
|
||||||
|
(b) immediately in the event of the circumstances described in Section
|
||||||
|
13.5(b); or
|
||||||
|
(c) automatically without notice from Apple if You, at any time during the
|
||||||
|
term of this License, commence an action for patent infringement against Apple;
|
||||||
|
provided that Apple did not first commence an action for patent infringement
|
||||||
|
against You in that instance.
|
||||||
|
|
||||||
|
12.2 Effect of Termination. Upon termination, You agree to immediately stop
|
||||||
|
any further use, reproduction, modification, sublicensing and distribution of
|
||||||
|
the Covered Code. All sublicenses to the Covered Code which have been properly
|
||||||
|
granted prior to termination shall survive any termination of this License.
|
||||||
|
Provisions which, by their nature, should remain in effect beyond the
|
||||||
|
termination of this License shall survive, including but not limited to
|
||||||
|
Sections 3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other
|
||||||
|
for compensation, indemnity or damages of any sort solely as a result of
|
||||||
|
terminating this License in accordance with its terms, and termination of this
|
||||||
|
License will be without prejudice to any other right or remedy of any party.
|
||||||
|
|
||||||
|
13. Miscellaneous.
|
||||||
|
|
||||||
|
13.1 Government End Users. The Covered Code is a "commercial item" as
|
||||||
|
defined in FAR 2.101. Government software and technical data rights in the
|
||||||
|
Covered Code include only those rights customarily provided to the public as
|
||||||
|
defined in this License. This customary commercial license in technical data
|
||||||
|
and software is provided in accordance with FAR 12.211 (Technical Data) and
|
||||||
|
12.212 (Computer Software) and, for Department of Defense purchases, DFAR
|
||||||
|
252.227-7015 (Technical Data -- Commercial Items) and 227.7202-3 (Rights in
|
||||||
|
Commercial Computer Software or Computer Software Documentation). Accordingly,
|
||||||
|
all U.S. Government End Users acquire Covered Code with only those rights set
|
||||||
|
forth herein.
|
||||||
|
|
||||||
|
13.2 Relationship of Parties. This License will not be construed as
|
||||||
|
creating an agency, partnership, joint venture or any other form of legal
|
||||||
|
association between or among You, Apple or any Contributor, and You will not
|
||||||
|
represent to the contrary, whether expressly, by implication, appearance or
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
13.3 Independent Development. Nothing in this License will impair Apple's
|
||||||
|
right to acquire, license, develop, have others develop for it, market and/or
|
||||||
|
distribute technology or products that perform the same or similar functions
|
||||||
|
as, or otherwise compete with, Modifications, Larger Works, technology or
|
||||||
|
products that You may develop, produce, market or distribute.
|
||||||
|
|
||||||
|
13.4 Waiver; Construction. Failure by Apple or any Contributor to enforce
|
||||||
|
any provision of this License will not be deemed a waiver of future enforcement
|
||||||
|
of that or any other provision. Any law or regulation which provides that the
|
||||||
|
language of a contract shall be construed against the drafter will not apply to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
13.5 Severability. (a) If for any reason a court of competent jurisdiction
|
||||||
|
finds any provision of this License, or portion thereof, to be unenforceable,
|
||||||
|
that provision of the License will be enforced to the maximum extent
|
||||||
|
permissible so as to effect the economic benefits and intent of the parties,
|
||||||
|
and the remainder of this License will continue in full force and effect. (b)
|
||||||
|
Notwithstanding the foregoing, if applicable law prohibits or restricts You
|
||||||
|
from fully and/or specifically complying with Sections 2 and/or 3 or prevents
|
||||||
|
the enforceability of either of those Sections, this License will immediately
|
||||||
|
terminate and You must immediately discontinue any use of the Covered Code and
|
||||||
|
destroy all copies of it that are in your possession or control.
|
||||||
|
|
||||||
|
13.6 Dispute Resolution. Any litigation or other dispute resolution between
|
||||||
|
You and Apple relating to this License shall take place in the Northern
|
||||||
|
District of California, and You and Apple hereby consent to the personal
|
||||||
|
jurisdiction of, and venue in, the state and federal courts within that
|
||||||
|
District with respect to this License. The application of the United Nations
|
||||||
|
Convention on Contracts for the International Sale of Goods is expressly
|
||||||
|
excluded.
|
||||||
|
|
||||||
|
13.7 Entire Agreement; Governing Law. This License constitutes the entire
|
||||||
|
agreement between the parties with respect to the subject matter hereof. This
|
||||||
|
License shall be governed by the laws of the United States and the State of
|
||||||
|
California, except that body of California law concerning conflicts of law.
|
||||||
|
|
||||||
|
Where You are located in the province of Quebec, Canada, the following clause
|
||||||
|
applies: The parties hereby confirm that they have requested that this License
|
||||||
|
and all related documents be drafted in English. Les parties ont exigé que le
|
||||||
|
présent contrat et tous les documents connexes soient rédigés en anglais.
|
||||||
|
|
||||||
|
EXHIBIT A.
|
||||||
|
|
||||||
|
"Portions Copyright (c) 1999-2007 Apple Inc. All Rights Reserved.
|
||||||
|
|
||||||
|
This file contains Original Code and/or Modifications of Original Code as
|
||||||
|
defined in and that are subject to the Apple Public Source License Version 2.0
|
||||||
|
(the 'License'). You may not use this file except in compliance with the
|
||||||
|
License. Please obtain a copy of the License at
|
||||||
|
http://www.opensource.apple.com/apsl/ and read it before using this file.
|
||||||
|
|
||||||
|
The Original Code and all software distributed under the License are
|
||||||
|
distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
|
||||||
|
OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
|
||||||
|
LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
|
||||||
|
specific language governing rights and limitations under the License."
|
||||||
|
|
386
alac/codec/dp_enc.c
Normal file
386
alac/codec/dp_enc.c
Normal file
|
@ -0,0 +1,386 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Apple Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* @APPLE_APACHE_LICENSE_HEADER_START@
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* @APPLE_APACHE_LICENSE_HEADER_END@
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
File: dp_enc.c
|
||||||
|
|
||||||
|
Contains: Dynamic Predictor encode routines
|
||||||
|
|
||||||
|
Copyright: (c) 2001-2011 Apple, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "dplib.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#if __GNUC__
|
||||||
|
#define ALWAYS_INLINE __attribute__((always_inline))
|
||||||
|
#else
|
||||||
|
#define ALWAYS_INLINE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if TARGET_CPU_PPC && (__MWERKS__ >= 0x3200)
|
||||||
|
// align loops to a 16 byte boundary to make the G5 happy
|
||||||
|
#pragma function_align 16
|
||||||
|
#define LOOP_ALIGN asm { align 16 }
|
||||||
|
#else
|
||||||
|
#define LOOP_ALIGN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void init_coefs( int16_t * coefs, uint32_t denshift, int32_t numPairs )
|
||||||
|
{
|
||||||
|
int32_t k;
|
||||||
|
int32_t den = 1 << denshift;
|
||||||
|
|
||||||
|
coefs[0] = (AINIT * den) >> 4;
|
||||||
|
coefs[1] = (BINIT * den) >> 4;
|
||||||
|
coefs[2] = (CINIT * den) >> 4;
|
||||||
|
for ( k = 3; k < numPairs; k++ )
|
||||||
|
coefs[k] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void copy_coefs( int16_t * srcCoefs, int16_t * dstCoefs, int32_t numPairs )
|
||||||
|
{
|
||||||
|
int32_t k;
|
||||||
|
|
||||||
|
for ( k = 0; k < numPairs; k++ )
|
||||||
|
dstCoefs[k] = srcCoefs[k];
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int32_t ALWAYS_INLINE sign_of_int( int32_t i )
|
||||||
|
{
|
||||||
|
int32_t negishift;
|
||||||
|
|
||||||
|
negishift = ((uint32_t)-i) >> 31;
|
||||||
|
return negishift | (i >> 31);
|
||||||
|
}
|
||||||
|
|
||||||
|
void pc_block( int32_t * in, int32_t * pc1, int32_t num, int16_t * coefs, int32_t numactive, uint32_t chanbits, uint32_t denshift )
|
||||||
|
{
|
||||||
|
register int16_t a0, a1, a2, a3;
|
||||||
|
register int32_t b0, b1, b2, b3;
|
||||||
|
int32_t j, k, lim;
|
||||||
|
int32_t * pin;
|
||||||
|
int32_t sum1, dd;
|
||||||
|
int32_t sg, sgn;
|
||||||
|
int32_t top;
|
||||||
|
int32_t del, del0;
|
||||||
|
uint32_t chanshift = 32 - chanbits;
|
||||||
|
int32_t denhalf = 1 << (denshift - 1);
|
||||||
|
|
||||||
|
pc1[0] = in[0];
|
||||||
|
if ( numactive == 0 )
|
||||||
|
{
|
||||||
|
// just copy if numactive == 0 (but don't bother if in/out pointers the same)
|
||||||
|
if ( (num > 1) && (in != pc1) )
|
||||||
|
memcpy( &pc1[1], &in[1], (num - 1) * sizeof(int32_t) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ( numactive == 31 )
|
||||||
|
{
|
||||||
|
// short-circuit if numactive == 31
|
||||||
|
for( j = 1; j < num; j++ )
|
||||||
|
{
|
||||||
|
del = in[j] - in[j-1];
|
||||||
|
pc1[j] = (del << chanshift) >> chanshift;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( j = 1; j <= numactive; j++ )
|
||||||
|
{
|
||||||
|
del = in[j] - in[j-1];
|
||||||
|
pc1[j] = (del << chanshift) >> chanshift;
|
||||||
|
}
|
||||||
|
|
||||||
|
lim = numactive + 1;
|
||||||
|
|
||||||
|
if ( numactive == 4 )
|
||||||
|
{
|
||||||
|
// optimization for numactive == 4
|
||||||
|
a0 = coefs[0];
|
||||||
|
a1 = coefs[1];
|
||||||
|
a2 = coefs[2];
|
||||||
|
a3 = coefs[3];
|
||||||
|
|
||||||
|
for ( j = lim; j < num; j++ )
|
||||||
|
{
|
||||||
|
LOOP_ALIGN
|
||||||
|
|
||||||
|
top = in[j - lim];
|
||||||
|
pin = in + j - 1;
|
||||||
|
|
||||||
|
b0 = top - pin[0];
|
||||||
|
b1 = top - pin[-1];
|
||||||
|
b2 = top - pin[-2];
|
||||||
|
b3 = top - pin[-3];
|
||||||
|
|
||||||
|
sum1 = (denhalf - a0 * b0 - a1 * b1 - a2 * b2 - a3 * b3) >> denshift;
|
||||||
|
|
||||||
|
del = in[j] - top - sum1;
|
||||||
|
del = (del << chanshift) >> chanshift;
|
||||||
|
pc1[j] = del;
|
||||||
|
del0 = del;
|
||||||
|
|
||||||
|
sg = sign_of_int(del);
|
||||||
|
if ( sg > 0 )
|
||||||
|
{
|
||||||
|
sgn = sign_of_int( b3 );
|
||||||
|
a3 -= sgn;
|
||||||
|
del0 -= (4 - 3) * ((sgn * b3) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b2 );
|
||||||
|
a2 -= sgn;
|
||||||
|
del0 -= (4 - 2) * ((sgn * b2) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b1 );
|
||||||
|
a1 -= sgn;
|
||||||
|
del0 -= (4 - 1) * ((sgn * b1) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
a0 -= sign_of_int( b0 );
|
||||||
|
}
|
||||||
|
else if ( sg < 0 )
|
||||||
|
{
|
||||||
|
// note: to avoid unnecessary negations, we flip the value of "sgn"
|
||||||
|
sgn = -sign_of_int( b3 );
|
||||||
|
a3 -= sgn;
|
||||||
|
del0 -= (4 - 3) * ((sgn * b3) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b2 );
|
||||||
|
a2 -= sgn;
|
||||||
|
del0 -= (4 - 2) * ((sgn * b2) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b1 );
|
||||||
|
a1 -= sgn;
|
||||||
|
del0 -= (4 - 1) * ((sgn * b1) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
a0 += sign_of_int( b0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
coefs[0] = a0;
|
||||||
|
coefs[1] = a1;
|
||||||
|
coefs[2] = a2;
|
||||||
|
coefs[3] = a3;
|
||||||
|
}
|
||||||
|
else if ( numactive == 8 )
|
||||||
|
{
|
||||||
|
// optimization for numactive == 8
|
||||||
|
register int16_t a4, a5, a6, a7;
|
||||||
|
register int32_t b4, b5, b6, b7;
|
||||||
|
|
||||||
|
a0 = coefs[0];
|
||||||
|
a1 = coefs[1];
|
||||||
|
a2 = coefs[2];
|
||||||
|
a3 = coefs[3];
|
||||||
|
a4 = coefs[4];
|
||||||
|
a5 = coefs[5];
|
||||||
|
a6 = coefs[6];
|
||||||
|
a7 = coefs[7];
|
||||||
|
|
||||||
|
for ( j = lim; j < num; j++ )
|
||||||
|
{
|
||||||
|
LOOP_ALIGN
|
||||||
|
|
||||||
|
top = in[j - lim];
|
||||||
|
pin = in + j - 1;
|
||||||
|
|
||||||
|
b0 = top - (*pin--);
|
||||||
|
b1 = top - (*pin--);
|
||||||
|
b2 = top - (*pin--);
|
||||||
|
b3 = top - (*pin--);
|
||||||
|
b4 = top - (*pin--);
|
||||||
|
b5 = top - (*pin--);
|
||||||
|
b6 = top - (*pin--);
|
||||||
|
b7 = top - (*pin);
|
||||||
|
pin += 8;
|
||||||
|
|
||||||
|
sum1 = (denhalf - a0 * b0 - a1 * b1 - a2 * b2 - a3 * b3
|
||||||
|
- a4 * b4 - a5 * b5 - a6 * b6 - a7 * b7) >> denshift;
|
||||||
|
|
||||||
|
del = in[j] - top - sum1;
|
||||||
|
del = (del << chanshift) >> chanshift;
|
||||||
|
pc1[j] = del;
|
||||||
|
del0 = del;
|
||||||
|
|
||||||
|
sg = sign_of_int(del);
|
||||||
|
if ( sg > 0 )
|
||||||
|
{
|
||||||
|
sgn = sign_of_int( b7 );
|
||||||
|
a7 -= sgn;
|
||||||
|
del0 -= 1 * ((sgn * b7) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b6 );
|
||||||
|
a6 -= sgn;
|
||||||
|
del0 -= 2 * ((sgn * b6) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b5 );
|
||||||
|
a5 -= sgn;
|
||||||
|
del0 -= 3 * ((sgn * b5) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b4 );
|
||||||
|
a4 -= sgn;
|
||||||
|
del0 -= 4 * ((sgn * b4) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b3 );
|
||||||
|
a3 -= sgn;
|
||||||
|
del0 -= 5 * ((sgn * b3) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b2 );
|
||||||
|
a2 -= sgn;
|
||||||
|
del0 -= 6 * ((sgn * b2) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = sign_of_int( b1 );
|
||||||
|
a1 -= sgn;
|
||||||
|
del0 -= 7 * ((sgn * b1) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
a0 -= sign_of_int( b0 );
|
||||||
|
}
|
||||||
|
else if ( sg < 0 )
|
||||||
|
{
|
||||||
|
// note: to avoid unnecessary negations, we flip the value of "sgn"
|
||||||
|
sgn = -sign_of_int( b7 );
|
||||||
|
a7 -= sgn;
|
||||||
|
del0 -= 1 * ((sgn * b7) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b6 );
|
||||||
|
a6 -= sgn;
|
||||||
|
del0 -= 2 * ((sgn * b6) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b5 );
|
||||||
|
a5 -= sgn;
|
||||||
|
del0 -= 3 * ((sgn * b5) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b4 );
|
||||||
|
a4 -= sgn;
|
||||||
|
del0 -= 4 * ((sgn * b4) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b3 );
|
||||||
|
a3 -= sgn;
|
||||||
|
del0 -= 5 * ((sgn * b3) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b2 );
|
||||||
|
a2 -= sgn;
|
||||||
|
del0 -= 6 * ((sgn * b2) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
sgn = -sign_of_int( b1 );
|
||||||
|
a1 -= sgn;
|
||||||
|
del0 -= 7 * ((sgn * b1) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
a0 += sign_of_int( b0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
coefs[0] = a0;
|
||||||
|
coefs[1] = a1;
|
||||||
|
coefs[2] = a2;
|
||||||
|
coefs[3] = a3;
|
||||||
|
coefs[4] = a4;
|
||||||
|
coefs[5] = a5;
|
||||||
|
coefs[6] = a6;
|
||||||
|
coefs[7] = a7;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//pc_block_general:
|
||||||
|
// general case
|
||||||
|
for ( j = lim; j < num; j++ )
|
||||||
|
{
|
||||||
|
LOOP_ALIGN
|
||||||
|
|
||||||
|
top = in[j - lim];
|
||||||
|
pin = in + j - 1;
|
||||||
|
|
||||||
|
sum1 = 0;
|
||||||
|
for ( k = 0; k < numactive; k++ )
|
||||||
|
sum1 -= coefs[k] * (top - pin[-k]);
|
||||||
|
|
||||||
|
del = in[j] - top - ((sum1 + denhalf) >> denshift);
|
||||||
|
del = (del << chanshift) >> chanshift;
|
||||||
|
pc1[j] = del;
|
||||||
|
del0 = del;
|
||||||
|
|
||||||
|
sg = sign_of_int( del );
|
||||||
|
if ( sg > 0 )
|
||||||
|
{
|
||||||
|
for ( k = (numactive - 1); k >= 0; k-- )
|
||||||
|
{
|
||||||
|
dd = top - pin[-k];
|
||||||
|
sgn = sign_of_int( dd );
|
||||||
|
coefs[k] -= sgn;
|
||||||
|
del0 -= (numactive - k) * ((sgn * dd) >> denshift);
|
||||||
|
if ( del0 <= 0 )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( sg < 0 )
|
||||||
|
{
|
||||||
|
for ( k = (numactive - 1); k >= 0; k-- )
|
||||||
|
{
|
||||||
|
dd = top - pin[-k];
|
||||||
|
sgn = sign_of_int( dd );
|
||||||
|
coefs[k] += sgn;
|
||||||
|
del0 -= (numactive - k) * ((-sgn * dd) >> denshift);
|
||||||
|
if ( del0 >= 0 )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
61
alac/codec/dplib.h
Normal file
61
alac/codec/dplib.h
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Apple Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* @APPLE_APACHE_LICENSE_HEADER_START@
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* @APPLE_APACHE_LICENSE_HEADER_END@
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
File: dplib.h
|
||||||
|
|
||||||
|
Contains: Dynamic Predictor routines
|
||||||
|
|
||||||
|
Copyright: Copyright (C) 2001-2011 Apple, Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __DPLIB_H__
|
||||||
|
#define __DPLIB_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// defines
|
||||||
|
|
||||||
|
#define DENSHIFT_MAX 15
|
||||||
|
#define DENSHIFT_DEFAULT 9
|
||||||
|
#define AINIT 38
|
||||||
|
#define BINIT (-29)
|
||||||
|
#define CINIT (-2)
|
||||||
|
#define NUMCOEPAIRS 16
|
||||||
|
|
||||||
|
// prototypes
|
||||||
|
|
||||||
|
void init_coefs( int16_t * coefs, uint32_t denshift, int32_t numPairs );
|
||||||
|
void copy_coefs( int16_t * srcCoefs, int16_t * dstCoefs, int32_t numPairs );
|
||||||
|
|
||||||
|
// NOTE: these routines read at least "numactive" samples so the i/o buffers must be at least that big
|
||||||
|
|
||||||
|
void pc_block( int32_t * in, int32_t * pc, int32_t num, int16_t * coefs, int32_t numactive, uint32_t chanbits, uint32_t denshift );
|
||||||
|
void unpc_block( int32_t * pc, int32_t * out, int32_t num, int16_t * coefs, int32_t numactive, uint32_t chanbits, uint32_t denshift );
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __DPLIB_H__ */
|
Loading…
Reference in a new issue