1*49fe348cSAndroid Build Coastguard Worker /****************************************************************************** 2*49fe348cSAndroid Build Coastguard Worker * 3*49fe348cSAndroid Build Coastguard Worker * Copyright 2022 Google LLC 4*49fe348cSAndroid Build Coastguard Worker * 5*49fe348cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*49fe348cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*49fe348cSAndroid Build Coastguard Worker * You may obtain a copy of the License at: 8*49fe348cSAndroid Build Coastguard Worker * 9*49fe348cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*49fe348cSAndroid Build Coastguard Worker * 11*49fe348cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*49fe348cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*49fe348cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*49fe348cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*49fe348cSAndroid Build Coastguard Worker * limitations under the License. 16*49fe348cSAndroid Build Coastguard Worker * 17*49fe348cSAndroid Build Coastguard Worker ******************************************************************************/ 18*49fe348cSAndroid Build Coastguard Worker 19*49fe348cSAndroid Build Coastguard Worker #ifndef __LC3BIN_H 20*49fe348cSAndroid Build Coastguard Worker #define __LC3BIN_H 21*49fe348cSAndroid Build Coastguard Worker 22*49fe348cSAndroid Build Coastguard Worker #include <stdio.h> 23*49fe348cSAndroid Build Coastguard Worker #include <stdint.h> 24*49fe348cSAndroid Build Coastguard Worker #include <lc3.h> 25*49fe348cSAndroid Build Coastguard Worker 26*49fe348cSAndroid Build Coastguard Worker 27*49fe348cSAndroid Build Coastguard Worker /** 28*49fe348cSAndroid Build Coastguard Worker * Read LC3 binary header 29*49fe348cSAndroid Build Coastguard Worker * fp Opened file, moved after header on return 30*49fe348cSAndroid Build Coastguard Worker * frame_us Return frame duration, in us 31*49fe348cSAndroid Build Coastguard Worker * srate_hz Return samplerate, in Hz 32*49fe348cSAndroid Build Coastguard Worker * hrmode Return true when high-resolution mode enabled 33*49fe348cSAndroid Build Coastguard Worker * nchannels Return number of channels 34*49fe348cSAndroid Build Coastguard Worker * nsamples Return count of source samples by channels 35*49fe348cSAndroid Build Coastguard Worker * return 0: Ok -1: Bad LC3 File 36*49fe348cSAndroid Build Coastguard Worker */ 37*49fe348cSAndroid Build Coastguard Worker int lc3bin_read_header(FILE *fp, 38*49fe348cSAndroid Build Coastguard Worker int *frame_us, int *srate_hz, bool *hrmode, 39*49fe348cSAndroid Build Coastguard Worker int *nchannels, int *nsamples); 40*49fe348cSAndroid Build Coastguard Worker 41*49fe348cSAndroid Build Coastguard Worker /** 42*49fe348cSAndroid Build Coastguard Worker * Read LC3 block of data 43*49fe348cSAndroid Build Coastguard Worker * fp Opened file 44*49fe348cSAndroid Build Coastguard Worker * nchannels Number of channels 45*49fe348cSAndroid Build Coastguard Worker * buffer Output buffer of `nchannels * LC3_HR_MAX_FRAME_BYTES` 46*49fe348cSAndroid Build Coastguard Worker * return Size of the frames block, -1 on error 47*49fe348cSAndroid Build Coastguard Worker */ 48*49fe348cSAndroid Build Coastguard Worker int lc3bin_read_data(FILE *fp, int nchannels, void *buffer); 49*49fe348cSAndroid Build Coastguard Worker 50*49fe348cSAndroid Build Coastguard Worker /** 51*49fe348cSAndroid Build Coastguard Worker * Write LC3 binary header 52*49fe348cSAndroid Build Coastguard Worker * fp Opened file, moved after header on return 53*49fe348cSAndroid Build Coastguard Worker * frame_us Frame duration, in us 54*49fe348cSAndroid Build Coastguard Worker * srate_hz Samplerate, in Hz 55*49fe348cSAndroid Build Coastguard Worker * hrmode True when high-resolution mode enabled 56*49fe348cSAndroid Build Coastguard Worker * bitrate Bitrate indication of the stream, in bps 57*49fe348cSAndroid Build Coastguard Worker * nchannels Number of channels 58*49fe348cSAndroid Build Coastguard Worker * nsamples Count of source samples by channels 59*49fe348cSAndroid Build Coastguard Worker */ 60*49fe348cSAndroid Build Coastguard Worker void lc3bin_write_header(FILE *fp, 61*49fe348cSAndroid Build Coastguard Worker int frame_us, int srate_hz, bool hrmode, 62*49fe348cSAndroid Build Coastguard Worker int bitrate, int nchannels, int nsamples); 63*49fe348cSAndroid Build Coastguard Worker 64*49fe348cSAndroid Build Coastguard Worker /** 65*49fe348cSAndroid Build Coastguard Worker * Write LC3 block of data 66*49fe348cSAndroid Build Coastguard Worker * fp Opened file 67*49fe348cSAndroid Build Coastguard Worker * data The frames data 68*49fe348cSAndroid Build Coastguard Worker * nbytes Size of the frames block 69*49fe348cSAndroid Build Coastguard Worker */ 70*49fe348cSAndroid Build Coastguard Worker void lc3bin_write_data(FILE *fp, const void *data, int nbytes); 71*49fe348cSAndroid Build Coastguard Worker 72*49fe348cSAndroid Build Coastguard Worker 73*49fe348cSAndroid Build Coastguard Worker #endif /* __LC3BIN_H */ 74