/*
* Copyright (C) 2013 - 2016 Sony Corporation
*
* 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.
*/
#ifndef _LDACLIB_H
#define _LDACLIB_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/***************************************************************************************************
Macro Definitions
***************************************************************************************************/
#define LDAC_HOST_ENDIAN_LITTLE
#define LDAC_PRCNCH 2
#define LDAC_FRMHDRBYTES 3
#define LDAC_CONFIGBYTES 4
typedef int LDAC_RESULT;
#define LDAC_S_OK ((LDAC_RESULT)0x00000000L)
#define LDAC_S_FALSE ((LDAC_RESULT)0x00000001L)
#define LDAC_E_UNEXPECTED ((LDAC_RESULT)0x8000FFFFL)
#define LDAC_E_OUTOFMEMORY ((LDAC_RESULT)0x8007000EL)
#define LDAC_E_INVALIDARG ((LDAC_RESULT)0x80070057L)
#define LDAC_E_FAIL ((LDAC_RESULT)0x80004005L)
#define LDAC_E_NOTIMPL ((LDAC_RESULT)0x80004001L)
#define LDAC_SUCCEEDED(result) ((LDAC_RESULT)(result)>=0)
#define LDAC_FAILED(result) ((LDAC_RESULT)(result)<0)
#define DECLSPEC
typedef struct _handle_ldac_struct *HANDLE_LDAC;
typedef enum {
LDAC_SMPL_FMT_NONE,
LDAC_SMPL_FMT_S08,
LDAC_SMPL_FMT_S16,
LDAC_SMPL_FMT_S24,
LDAC_SMPL_FMT_S32,
LDAC_SMPL_FMT_F32,
LDAC_SMPL_FMT_NUM,
LDAC_SMPL_FMT_MAX = 0x7fffffff
} LDAC_SMPL_FMT_T;
/***************************************************************************************************
Function Declarations
***************************************************************************************************/
/* Common API Functions */
DECLSPEC int ldaclib_get_version(void);
DECLSPEC int ldaclib_get_major_version(void);
DECLSPEC int ldaclib_get_minor_version(void);
DECLSPEC int ldaclib_get_branch_version(void);
DECLSPEC LDAC_RESULT ldaclib_get_sampling_rate_index(int, int *);
DECLSPEC LDAC_RESULT ldaclib_get_sampling_rate(int, int *);
DECLSPEC LDAC_RESULT ldaclib_get_frame_samples(int, int *);
DECLSPEC LDAC_RESULT ldaclib_get_nlnn(int, int *);
DECLSPEC LDAC_RESULT ldaclib_get_channel(int, int *);
DECLSPEC LDAC_RESULT ldaclib_get_channel_config_index(int, int *);
DECLSPEC LDAC_RESULT ldaclib_check_nlnn_shift(int, int);
DECLSPEC HANDLE_LDAC ldaclib_get_handle(void);
DECLSPEC LDAC_RESULT ldaclib_free_handle(HANDLE_LDAC);
DECLSPEC LDAC_RESULT ldaclib_set_config_info(HANDLE_LDAC, int, int, int, int);
DECLSPEC LDAC_RESULT ldaclib_get_config_info(HANDLE_LDAC, int *, int *, int *, int *);
DECLSPEC LDAC_RESULT ldaclib_set_frame_header(HANDLE_LDAC, unsigned char *, int, int, int, int);
/* Encoder API Functions */
DECLSPEC LDAC_RESULT ldaclib_get_encode_setting(int, int, int *, int *, int *, int *, int *, int *, int *);
DECLSPEC LDAC_RESULT ldaclib_set_encode_frame_length(HANDLE_LDAC, int);
DECLSPEC LDAC_RESULT ldaclib_get_encode_frame_length(HANDLE_LDAC, int *);
DECLSPEC LDAC_RESULT ldaclib_set_encode_info(HANDLE_LDAC, int, int, int, int, int, int, int);
DECLSPEC LDAC_RESULT ldaclib_init_encode(HANDLE_LDAC);
DECLSPEC LDAC_RESULT ldaclib_free_encode(HANDLE_LDAC);
DECLSPEC LDAC_RESULT ldaclib_encode(HANDLE_LDAC, char *[], LDAC_SMPL_FMT_T, unsigned char *, int *);
DECLSPEC LDAC_RESULT ldaclib_flush_encode(HANDLE_LDAC, LDAC_SMPL_FMT_T, unsigned char *, int *);
/* Error Code Dispatch */
DECLSPEC LDAC_RESULT ldaclib_get_error_code(HANDLE_LDAC, int *);
DECLSPEC LDAC_RESULT ldaclib_get_internal_error_code(HANDLE_LDAC, int *);
DECLSPEC LDAC_RESULT ldaclib_clear_error_code(HANDLE_LDAC);
DECLSPEC LDAC_RESULT ldaclib_clear_internal_error_code(HANDLE_LDAC);
/***************************************************************************************************
Error Code Definitions
***************************************************************************************************/
#define LDAC_ERR_NONE 0
/* Non Fatal Error */
#define LDAC_ERR_NON_FATAL 1
/* Non Fatal Error (Block Level) */
#define LDAC_ERR_BIT_ALLOCATION 5
/* Non Fatal Error (Handle Level) */
#define LDAC_ERR_NOT_IMPLEMENTED 128
#define LDAC_ERR_NON_FATAL_ENCODE 132
/* Fatal Error */
#define LDAC_ERR_FATAL 256
/* Fatal Error (Block Level) */
#define LDAC_ERR_SYNTAX_BAND 260
#define LDAC_ERR_SYNTAX_GRAD_A 261
#define LDAC_ERR_SYNTAX_GRAD_B 262
#define LDAC_ERR_SYNTAX_GRAD_C 263
#define LDAC_ERR_SYNTAX_GRAD_D 264
#define LDAC_ERR_SYNTAX_GRAD_E 265
#define LDAC_ERR_SYNTAX_IDSF 266
#define LDAC_ERR_SYNTAX_SPEC 267
#define LDAC_ERR_BIT_PACKING 280
#define LDAC_ERR_ALLOC_MEMORY 300
/* Fatal Error (Handle Level) */
#define LDAC_ERR_FATAL_HANDLE 512
#define LDAC_ERR_ILL_SYNCWORD 516
#define LDAC_ERR_ILL_SMPL_FORMAT 517
#define LDAC_ERR_ASSERT_SAMPLING_RATE 530
#define LDAC_ERR_ASSERT_SUP_SAMPLING_RATE 531
#define LDAC_ERR_CHECK_SAMPLING_RATE 532
#define LDAC_ERR_ASSERT_CHANNEL_CONFIG 533
#define LDAC_ERR_CHECK_CHANNEL_CONFIG 534
#define LDAC_ERR_ASSERT_FRAME_LENGTH 535
#define LDAC_ERR_ASSERT_SUP_FRAME_LENGTH 536
#define LDAC_ERR_ASSERT_FRAME_STATUS 537
#define LDAC_ERR_ASSERT_NSHIFT 538
#define LDAC_ERR_ENC_INIT_ALLOC 550
#define LDAC_ERR_ENC_ILL_GRADMODE 551
#define LDAC_ERR_ENC_ILL_GRADPAR_A 552
#define LDAC_ERR_ENC_ILL_GRADPAR_B 553
#define LDAC_ERR_ENC_ILL_GRADPAR_C 554
#define LDAC_ERR_ENC_ILL_GRADPAR_D 555
#define LDAC_ERR_ENC_ILL_NBANDS 556
#define LDAC_ERR_PACK_BLOCK_FAILED 557
#define LDAC_ERR_DEC_INIT_ALLOC 570
#define LDAC_ERR_INPUT_BUFFER_SIZE 571
#define LDAC_ERR_UNPACK_BLOCK_FAILED 572
#define LDAC_ERR_UNPACK_BLOCK_ALIGN 573
#define LDAC_ERR_UNPACK_FRAME_ALIGN 574
#define LDAC_ERR_FRAME_LENGTH_OVER 575
#define LDAC_ERR_FRAME_ALIGN_OVER 576
#define LDAC_ERR_FRAME_LIMIT 998
#define LDAC_ERR_TIME_EXPIRED 999
#define LDAC_ERROR(err) ((LDAC_ERR_NON_FATAL) <= (err) ? 1 : 0)
#define LDAC_FATAL_ERROR(err) ((LDAC_ERR_FATAL) <= (err) ? 1 : 0)
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _LDACLIB_H */