⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 son_gc_modifier.c

📁 C写的MPEG4音频源代码(G.723/G.729)
💻 C
字号:
/*******************************************************************This software module was originally developed byYoshiaki Oikawa (Sony Corporation) andMitsuyuki Hatanaka (Sony Corporation)and edited byTakashi Koike (Sony Corporation)in the course of development of the MPEG-2 NBC/MPEG-4 System/MPEG-4Video/MPEG-4 Audio standard ISO/IEC 13818-7, 14496-1,2 and 3. Thissoftware module is an implementation of a part of one or more MPEG-2NBC/MPEG-4 System/MPEG-4 Video/MPEG-4 Audio tools as specified by theMPEG-2 NBC/MPEG-4 System/MPEG-4 Video/MPEG-4 Audio standard. ISO/IECgives users of the MPEG-2 NBC/MPEG-4 System/MPEG-4 Video/MPEG-4 Audiostandards free license to this software module or modificationsthereof for use in hardware or software products claiming conformanceto the MPEG-2 NBC/MPEG-4 System/MPEG-4 Video/MPEG-4 Audiostandards. Those intending to use this software module in hardware orsoftware products are advised that this use may infringe existingpatents. The original developer of this software module and his/hercompany, the subsequent editors and their companies, and ISO/IEC haveno liability for use of this software module or modifications thereofin an implementation. Copyright is not released for non MPEG-2NBC/MPEG-4 System/MPEG-4 Video/MPEG-4 Audio conforming products.Theoriginal developer retains full right to use the code for his/her ownpurpose, assign or donate the code to a third party and to inhibitthird party from using the code for non MPEG-2 NBC/MPEG-4System/MPEG-4 Video/MPEG-4 Audio conforming products. This copyrightnotice must be included in all copies or derivative works.Copyright (C) 1996.*******************************************************************/#include <stdlib.h>#include <stdio.h>#include "buffersHandle.h"       /* handler, defines, enums */#include "resilienceHandle.h"    /* handler, defines, enums */#include "tf_mainHandle.h"       /* handler, defines, enums */#include	"sony_local.h"void son_gainc_window(int, GAINC, GAINC, GAINC, double *, int);void	son_gc_modifier_sub(	double	input[],	GAINC	*g_infoCh[],	int	block_size_samples,	int	window_sequence,	int	ch,	int	band,	double	output[]	){	/* This parameter will be removed outside */	static	GAINC	g_info_prev[MAX_TIME_CHANNELS][NBANDS];	int	i, j;	double	*work_buf;	double	*a_gcwind;	work_buf = input;	a_gcwind = (double *)calloc(block_size_samples/NBANDS*2,					sizeof(double));	switch(window_sequence){	case ONLY_LONG_SEQUENCE:		son_gainc_window(block_size_samples/NBANDS*2,				g_info_prev[ch][band],				g_infoCh[band][0],				g_infoCh[band][0],				a_gcwind, window_sequence);		for (j = 0; j < block_size_samples/NBANDS*2; j++) {			output[j] = work_buf[j]/a_gcwind[j];		}		g_info_prev[ch][band] = g_infoCh[band][0];		break;	case EIGHT_SHORT_SEQUENCE:		for (i = 0; i < SHORT_WIN_IN_LONG; i++) {			son_gainc_window(				block_size_samples/SHORT_WIN_IN_LONG/NBANDS*2,					g_info_prev[ch][band],					g_infoCh[band][i],					g_infoCh[band][i],					a_gcwind, window_sequence);			for (j = 0; j < block_size_samples/SHORT_WIN_IN_LONG/NBANDS*2; j++) {				output[j+block_size_samples/SHORT_WIN_IN_LONG/NBANDS*2*i] = work_buf[j+block_size_samples/NBANDS*7/16+i*block_size_samples/SHORT_WIN_IN_LONG/NBANDS]/a_gcwind[j];			}			g_info_prev[ch][band] = g_infoCh[band][i];		}		break;	case LONG_START_SEQUENCE:		son_gainc_window(block_size_samples/NBANDS*2,				g_info_prev[ch][band],				g_infoCh[band][0],				g_infoCh[band][1],				a_gcwind, window_sequence);		for (j = 0; j < block_size_samples/NBANDS*2; j++) {			output[j] = work_buf[j]/a_gcwind[j];		}		g_info_prev[ch][band] = g_infoCh[band][1];		break;	case LONG_STOP_SEQUENCE:		son_gainc_window(block_size_samples/NBANDS*2,				g_info_prev[ch][band],				g_infoCh[band][0],				g_infoCh[band][1],				a_gcwind, window_sequence);		for (j = 0; j < block_size_samples/NBANDS*2; j++) {			output[j] = work_buf[j]/a_gcwind[j];		}		g_info_prev[ch][band] = g_infoCh[band][1];		break;	default:		fprintf(stderr, "gc_modifier: ERROR! Illegal Window Type \n");		exit(0);		break;	}	free(a_gcwind);}void	son_gc_modifier(	double	*bandSigChForGCAnalysis[],	GAINC	*g_infoCh[],	int	block_size_samples,	int	window_sequence,	int	ch,	double	*bandSigChWithGC[]	){	int	i;	for (i = 0; i < NBANDS; i++) {		son_gc_modifier_sub(bandSigChForGCAnalysis[i], g_infoCh,				block_size_samples,				window_sequence, ch, i, bandSigChWithGC[i]);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -