On Tue, Aug 11, 2015 at 3:03 AM, Paul B Mahol <one...@gmail.com> wrote: > > Dana 11. 8. 2015. 03:51 osoba "Ganesh Ajjanagadde" <gajjanaga...@gmail.com> > napisala je: > > >> >> Moves structure definitions and related macros to g729dec.h >> Also exports format in priv_data >> >> Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com> >> --- >> libavcodec/g729dec.c | 111 ++--------------------------------------- >> libavcodec/g729dec.h | 138 >> +++++++++++++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 141 insertions(+), 108 deletions(-) >> create mode 100644 libavcodec/g729dec.h >> >> diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c >> index 99053ad..e5b2de0 100644 >> --- a/libavcodec/g729dec.c >> +++ b/libavcodec/g729dec.c >> @@ -30,6 +30,7 @@ >> >> >> #include "g729.h" >> +#include "g729dec.h" >> #include "lsp.h" >> #include "celp_math.h" >> #include "celp_filters.h" >> @@ -39,57 +40,6 @@ >> #include "g729data.h" >> #include "g729postfilter.h" >> >> -/** >> - * minimum quantized LSF value (3.2.4) >> - * 0.005 in Q13 >> - */ >> -#define LSFQ_MIN 40 >> - >> -/** >> - * maximum quantized LSF value (3.2.4) >> - * 3.135 in Q13 >> - */ >> -#define LSFQ_MAX 25681 >> - >> -/** >> - * minimum LSF distance (3.2.4) >> - * 0.0391 in Q13 >> - */ >> -#define LSFQ_DIFF_MIN 321 >> - >> -/// interpolation filter length >> -#define INTERPOL_LEN 11 >> - >> -/** >> - * minimum gain pitch value (3.8, Equation 47) >> - * 0.2 in (1.14) >> - */ >> -#define SHARP_MIN 3277 >> - >> -/** >> - * maximum gain pitch value (3.8, Equation 47) >> - * (EE) This does not comply with the specification. >> - * Specification says about 0.8, which should be >> - * 13107 in (1.14), but reference C code uses >> - * 13017 (equals to 0.7945) instead of it. >> - */ >> -#define SHARP_MAX 13017 >> - >> -/** >> - * MR_ENERGY (mean removed energy) = mean_energy + 10 * log10(2^26 * >> subframe_size) in (7.13) >> - */ >> -#define MR_ENERGY 1018156 >> - >> -#define DECISION_NOISE 0 >> -#define DECISION_INTERMEDIATE 1 >> -#define DECISION_VOICE 2 >> - >> -typedef enum { >> - FORMAT_G729_8K = 0, >> - FORMAT_G729D_6K4, >> - FORMAT_COUNT, >> -} G729Formats; >> - >> typedef struct { >> uint8_t ac_index_bits[2]; ///< adaptive codebook index for second >> subframe (size in bits) >> uint8_t parity_bit; ///< parity bit for pitch delay >> @@ -99,61 +49,6 @@ typedef struct { >> uint8_t fc_indexes_bits; ///< size (in bits) of fixed-codebook >> index entry >> } G729FormatDescription; >> >> -typedef struct { >> - AudioDSPContext adsp; >> - >> - /// past excitation signal buffer >> - int16_t exc_base[2*SUBFRAME_SIZE+PITCH_DELAY_MAX+INTERPOL_LEN]; >> - >> - int16_t* exc; ///< start of past excitation data in >> buffer >> - int pitch_delay_int_prev; ///< integer part of previous subframe's >> pitch delay (4.1.3) >> - >> - /// (2.13) LSP quantizer outputs >> - int16_t past_quantizer_output_buf[MA_NP + 1][10]; >> - int16_t* past_quantizer_outputs[MA_NP + 1]; >> - >> - int16_t lsfq[10]; ///< (2.13) quantized LSF coefficients >> from previous frame >> - int16_t lsp_buf[2][10]; ///< (0.15) LSP coefficients (previous >> and current frames) (3.2.5) >> - int16_t *lsp[2]; ///< pointers to lsp_buf >> - >> - int16_t quant_energy[4]; ///< (5.10) past quantized energy >> - >> - /// previous speech data for LP synthesis filter >> - int16_t syn_filter_data[10]; >> - >> - >> - /// residual signal buffer (used in long-term postfilter) >> - int16_t residual[SUBFRAME_SIZE + RES_PREV_DATA_SIZE]; >> - >> - /// previous speech data for residual calculation filter >> - int16_t res_filter_data[SUBFRAME_SIZE+10]; >> - >> - /// previous speech data for short-term postfilter >> - int16_t pos_filter_data[SUBFRAME_SIZE+10]; >> - >> - /// (1.14) pitch gain of current and five previous subframes >> - int16_t past_gain_pitch[6]; >> - >> - /// (14.1) gain code from current and previous subframe >> - int16_t past_gain_code[2]; >> - >> - /// voice decision on previous subframe (0-noise, 1-intermediate, >> 2-voice), G.729D >> - int16_t voice_decision; >> - >> - int16_t onset; ///< detected onset level (0-2) >> - int16_t was_periodic; ///< whether previous frame was declared >> as periodic or not (4.4) >> - int16_t ht_prev_data; ///< previous data for 4.2.3, equation 86 >> - int gain_coeff; ///< (1.14) gain coefficient (4.2.4) >> - uint16_t rand_value; ///< random number generator value >> (4.4.4) >> - int ma_predictor_prev; ///< switched MA predictor of LSP >> quantizer from last good frame >> - >> - /// (14.14) high-pass filter data (past input) >> - int hpf_f[2]; >> - >> - /// high-pass filter data (past output) >> - int16_t hpf_z[2]; >> -} G729Context; >> - >> static const G729FormatDescription format_g729_8k = { >> .ac_index_bits = {8,5}, >> .parity_bit = 1, >> @@ -422,14 +317,14 @@ static int decode_frame(AVCodecContext *avctx, void >> *data, int *got_frame_ptr, >> out_frame = (int16_t*) frame->data[0]; >> >> if (buf_size % 10 == 0) { >> - packet_type = FORMAT_G729_8K; >> + ctx->format = packet_type = FORMAT_G729_8K; >> format = &format_g729_8k; >> //Reset voice decision >> ctx->onset = 0; >> ctx->voice_decision = DECISION_VOICE; >> av_log(avctx, AV_LOG_DEBUG, "Packet type: %s\n", "G.729 @ >> 8kbit/s"); >> } else if (buf_size == 8) { >> - packet_type = FORMAT_G729D_6K4; >> + ctx->format = packet_type = FORMAT_G729D_6K4; >> format = &format_g729d_6k4; >> av_log(avctx, AV_LOG_DEBUG, "Packet type: %s\n", "G.729D @ >> 6.4kbit/s"); >> } else { >> diff --git a/libavcodec/g729dec.h b/libavcodec/g729dec.h >> new file mode 100644 >> index 0000000..06cbebf >> --- /dev/null >> +++ b/libavcodec/g729dec.h >> @@ -0,0 +1,138 @@ >> +/* >> + * G.729 decoder >> + * Copyright (C) 2015 Ganesh Ajjanagadde > > Unacceptable, moving things around can not give you right to do this.
Ok, I will preserve the original author's copyright. > >> + * >> + * This file is part of FFmpeg. >> + * >> + * FFmpeg is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU Lesser General Public >> + * License as published by the Free Software Foundation; either >> + * version 2.1 of the License, or (at your option) any later version. >> + * >> + * FFmpeg is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> + * Lesser General Public License for more details. >> + * >> + * You should have received a copy of the GNU Lesser General Public >> + * License along with FFmpeg; if not, write to the Free Software >> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >> 02110-1301 USA >> + */ >> + >> +#ifndef AVCODEC_G729DEC_H >> +#define AVCODEC_G729DEC_H >> + >> +#include "acelp_pitch_delay.h" >> +#include "g729data.h" >> +#include "g729postfilter.h" >> + >> +typedef enum { >> + FORMAT_G729_8K = 0, >> + FORMAT_G729D_6K4, >> + FORMAT_COUNT, >> +} G729Formats; >> + >> +/** >> + * minimum quantized LSF value (3.2.4) >> + * 0.005 in Q13 >> + */ >> +#define LSFQ_MIN 40 >> + >> +/** >> + * maximum quantized LSF value (3.2.4) >> + * 3.135 in Q13 >> + */ >> +#define LSFQ_MAX 25681 >> + >> +/** >> + * minimum LSF distance (3.2.4) >> + * 0.0391 in Q13 >> + */ >> +#define LSFQ_DIFF_MIN 321 >> + >> +/// interpolation filter length >> +#define INTERPOL_LEN 11 >> + >> +/** >> + * minimum gain pitch value (3.8, Equation 47) >> + * 0.2 in (1.14) >> + */ >> +#define SHARP_MIN 3277 >> + >> +/** >> + * maximum gain pitch value (3.8, Equation 47) >> + * (EE) This does not comply with the specification. >> + * Specification says about 0.8, which should be >> + * 13107 in (1.14), but reference C code uses >> + * 13017 (equals to 0.7945) instead of it. >> + */ >> +#define SHARP_MAX 13017 >> + >> +/** >> + * MR_ENERGY (mean removed energy) = mean_energy + 10 * log10(2^26 * >> subframe_size) in (7.13) >> + */ >> +#define MR_ENERGY 1018156 >> + >> +#define DECISION_NOISE 0 >> +#define DECISION_INTERMEDIATE 1 >> +#define DECISION_VOICE 2 >> + >> +typedef struct { >> + AudioDSPContext adsp; >> + >> + /// past excitation signal buffer >> + int16_t exc_base[2*SUBFRAME_SIZE+PITCH_DELAY_MAX+INTERPOL_LEN]; >> + >> + int16_t* exc; ///< start of past excitation data in >> buffer >> + int pitch_delay_int_prev; ///< integer part of previous subframe's >> pitch delay (4.1.3) >> + >> + /// (2.13) LSP quantizer outputs >> + int16_t past_quantizer_output_buf[MA_NP + 1][10]; >> + int16_t* past_quantizer_outputs[MA_NP + 1]; >> + >> + int16_t lsfq[10]; ///< (2.13) quantized LSF coefficients >> from previous frame >> + int16_t lsp_buf[2][10]; ///< (0.15) LSP coefficients (previous >> and current frames) (3.2.5) >> + int16_t *lsp[2]; ///< pointers to lsp_buf >> + >> + int16_t quant_energy[4]; ///< (5.10) past quantized energy >> + >> + /// previous speech data for LP synthesis filter >> + int16_t syn_filter_data[10]; >> + >> + >> + /// residual signal buffer (used in long-term postfilter) >> + int16_t residual[SUBFRAME_SIZE + RES_PREV_DATA_SIZE]; >> + >> + /// previous speech data for residual calculation filter >> + int16_t res_filter_data[SUBFRAME_SIZE+10]; >> + >> + /// previous speech data for short-term postfilter >> + int16_t pos_filter_data[SUBFRAME_SIZE+10]; >> + >> + /// (1.14) pitch gain of current and five previous subframes >> + int16_t past_gain_pitch[6]; >> + >> + /// (14.1) gain code from current and previous subframe >> + int16_t past_gain_code[2]; >> + >> + /// voice decision on previous subframe (0-noise, 1-intermediate, >> 2-voice), G.729D >> + int16_t voice_decision; >> + >> + int16_t onset; ///< detected onset level (0-2) >> + int16_t was_periodic; ///< whether previous frame was declared >> as periodic or not (4.4) >> + int16_t ht_prev_data; ///< previous data for 4.2.3, equation 86 >> + int gain_coeff; ///< (1.14) gain coefficient (4.2.4) >> + uint16_t rand_value; ///< random number generator value >> (4.4.4) >> + int ma_predictor_prev; ///< switched MA predictor of LSP >> quantizer from last good frame >> + >> + /// (14.14) high-pass filter data (past input) >> + int hpf_f[2]; >> + >> + /// high-pass filter data (past output) >> + int16_t hpf_z[2]; >> + >> + /// format type >> + G729Formats format; >> +} G729Context; >> + >> +#endif /* AVCODEC_G729DEC_H */ >> -- >> 2.5.0 >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel