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

📄 jpc_qmfb.c

📁 openmeetings组件之GS openmeetings组件之GS openmeetings组件之GS
💻 C
📖 第 1 页 / 共 3 页
字号:
	{		interstep = jas_seq2d_rowstep(x);		intrastep = 1;		numseq = jas_seq2d_height(x);		startind = jas_seq2d_xstart(x);		endind = jas_seq2d_xend(x);	}	assert(startind < endind);	startptr = jas_seq2d_getref(x, jas_seq2d_xstart(x), jas_seq2d_ystart(x));	if (!(flags & JPC_QMFB1D_RITIMODE)) 	{		while (numseq-- > 0) 		{			jpc_qmfb1d_setup(	startptr, 								startind, 								endind, 								intrastep,								&lstartptr, 								&lstartind, 								&lendind, 								&hstartptr,								&hstartind, 								&hendind							);			if (endind - startind > 1) 			{#if !defined(USE_LF_ASM)				NNS_SCALE(	lstartptr, 							lstartind, 							lendind,							intrastep, 							DBL_FIX_A						);#else	__asm	mov	esi,	lstartptr	__asm	mov	eax,	lstartind	__asm	mov ebx,	lendind	__asm	sub ebx,	eax	__asm	mov			ecx, intrastep	__asm	shl			ecx, 2scale_lp0:	;	__asm	test	ebx, ebx	__asm	je		skip_scale0	__asm	mov		eax, [esi]	__asm	test	eax, eax	__asm	je		skip_mul0	__asm	mov		edx, DBL_FIX_A	__asm	imul	edx	__asm	shrd	eax, edx, JPC_FIX_FRACBITS	__asm	mov		[esi], eaxskip_mul0:	;	__asm	add		esi, ecx	__asm	sub		ebx, 1	__asm	jmp		scale_lp0skip_scale0:	;#endif#if !defined(USE_LF_ASM)				NNS_SCALE(	hstartptr, 							hstartind, 							hendind,							intrastep, 							DBL_FIX_B						);#else	__asm	mov	esi,	hstartptr	__asm	mov	eax,	hstartind	__asm	mov ebx,	hendind	__asm	sub ebx,	eaxscale_lp1:	;	__asm	test	ebx, ebx	__asm	je		skip_scale1	__asm	mov		eax, [esi]	__asm	test	eax, eax	__asm	je		skip_mul1	__asm	mov		edx, DBL_FIX_B	__asm	imul	edx	__asm	shrd	eax, edx, JPC_FIX_FRACBITS	__asm	mov		[esi], eaxskip_mul1:	;	__asm	add		esi, ecx	__asm	sub		ebx, 1	__asm	jmp		scale_lp1skip_scale1:	;#endif#if !defined(USE_LF_ASM)				RA_NNS_LIFT1(	lstartptr, 								lstartind, 								lendind,								hstartptr, 								hstartind, 								hendind, 								intrastep,								DBL_FIX_C,								twoalpha_C							);#else	__asm	mov	esi,	lstartptr	__asm	mov	edi,	hstartptr	__asm	mov	eax,	lstartind	__asm	mov ebx,	lendind	__asm	sub ebx,	eax	__asm	mov	eax,	hstartind	__asm	cmp	eax,	lstartind	__asm	jl			no_1C		__asm	mov			eax, [edi]	__asm	test		eax, eax	__asm	je			skip_slow1C	__asm	mov			edx, twoalpha_C	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[esi], eaxskip_slow1C:	__asm	add			esi, ecx	__asm	sub			ebx, 1no_1C:	__asm	mov	eax,	lendind	__asm	cmp	eax,	hendind	__asm	jle			lpC	__asm	sub			ebx, 1lpC:	__asm	test	ebx, ebx	__asm	jle		done_lpClpaC:	__asm	mov		eax, dword ptr[edi]	__asm	sub		ebx, 1	__asm	add		eax, dword ptr[edi + ecx ]	__asm	test	eax, eax	__asm	je		skip_slowC	__asm	mov		edx, DBL_FIX_C	__asm	imul	edx	__asm	shrd	eax, edx, JPC_FIX_FRACBITS	__asm	add		dword ptr[esi], eaxskip_slowC:	__asm	add		esi, ecx	__asm	add		edi, ecx	__asm	test	ebx, ebx	__asm	jg		lpaCdone_lpC:					;	__asm	mov	eax,	lendind	__asm	cmp	eax,	hendind	__asm	jle			no_3C	__asm	mov			eax, dword ptr[edi]	__asm	test		eax, eax	__asm	je			no_3C	__asm	mov			edx, dword ptr[twoalpha_C]	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[esi],eaxno_3C:		;#endif#if !defined(USE_LF_ASM)				NNS_LIFT0(	lstartptr, 							lstartind, 							lendind,							hstartptr, 							hstartind, 							hendind, 							intrastep,							DBL_FIX_D						);#else	__asm	mov	esi,	lstartptr	__asm	mov	edi,	hstartptr	__asm	mov	eax,	hstartind	__asm	mov ebx,	hendind	__asm	sub ebx,	eax	__asm	mov	eax,	hstartind	__asm	cmp	eax,	lstartind	__asm	jge			no_lift0a		__asm	mov			eax, [edi]	__asm	test		eax, eax	__asm	je			skip_slow_lift0	__asm	mov			edx, twoalpha_D	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[esi], eaxskip_slow_lift0:	__asm	add			esi, ecx	__asm	sub			ebx, 1no_lift0a:	__asm	mov	eax,	hendind	__asm	cmp	eax,	lendind	__asm	jl			lpa_lift0	__asm	dec			ebxlpa_lift0:	;	__asm	test	ebx, ebx	__asm	jle		done_lpa_lift0lpb_lift0:	__asm	mov		eax, dword ptr[esi]	__asm	sub		ebx, 1	__asm	add		eax, dword ptr[esi + ecx ]	__asm	test	eax, eax	__asm	je		skip_slowa_lift0	__asm	mov		edx, DBL_FIX_D	__asm	imul	edx	__asm	shrd	eax, edx, JPC_FIX_FRACBITS	__asm	add		dword ptr[edi], eaxskip_slowa_lift0:	__asm	add		esi, ecx	__asm	add		edi, ecx	__asm	test	ebx, ebx	__asm	jg		lpb_lift0done_lpa_lift0:	;	__asm	mov	eax,	hendind	__asm	cmp	eax,	lendind	__asm	jl			no_3b_lift0	__asm	mov			eax, dword ptr[esi]	__asm	test		eax, eax	__asm	je			no_3b_lift0	__asm	mov			edx, twoalpha_D	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[edi],eaxno_3b_lift0:		;#endif#if !defined(USE_LF_ASM)				NNS_LIFT1(	lstartptr, 							lstartind, 							lendind,							hstartptr, 							hstartind, 							hendind, 							intrastep,							DBL_FIX_E						);#else	__asm	mov	esi,	lstartptr	__asm	mov	edi,	hstartptr	__asm	mov	eax,	lstartind	__asm	mov ebx,	lendind	__asm	sub ebx,	eax	__asm	mov	eax,	hstartind	__asm	cmp	eax,	lstartind	__asm	jl			no_1a		__asm	mov			eax, [edi]	__asm	test		eax, eax	__asm	je			skip_slow1	__asm	mov			edx, twoalpha_E	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[esi], eaxskip_slow1:	__asm	add			esi, ecx	__asm	sub			ebx, 1no_1a:	__asm	mov	eax,	lendind	__asm	cmp	eax,	hendind	__asm	jle			lpa	__asm	sub			ebx, 1lpa:	__asm	test	ebx, ebx	__asm	jle		done_lpalpaa:	__asm	mov		eax, dword ptr[edi]	__asm	sub		ebx, 1	__asm	add		eax, dword ptr[edi + ecx ]	__asm	test	eax, eax	__asm	je		skip_slow	__asm	mov		edx, DBL_FIX_E	__asm	imul	edx	__asm	shrd	eax, edx, JPC_FIX_FRACBITS	__asm	add		dword ptr[esi], eaxskip_slow:	__asm	add		esi, ecx	__asm	add		edi, ecx	__asm	test	ebx, ebx	__asm	jg		lpaadone_lpa:							;	__asm	mov	eax,	lendind	__asm	cmp	eax,	hendind	__asm	jle			no_3a	__asm	mov			eax, dword ptr[edi]	__asm	test		eax, eax	__asm	je			no_3a	__asm	mov			edx, dword ptr[twoalpha_E]	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[esi],eaxno_3a:		;#endif#if !defined(USE_LF_ASM)				NNS_LIFT0(	lstartptr, 							lstartind, 	  						lendind,							hstartptr, 							hstartind, 							hendind, 							intrastep,							DBL_FIX_F						);#else	__asm	mov	esi,	lstartptr	__asm	mov	edi,	hstartptr	__asm	mov	eax,	hstartind	__asm	mov ebx,	hendind	__asm	sub ebx,	eax	__asm	mov	eax,	hstartind	__asm	cmp	eax,	lstartind	__asm	jge			no_1d		__asm	mov			eax, [edi]	__asm	test		eax, eax	__asm	je			skip_slow4	__asm	mov			edx, twoalpha_F	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[esi], eaxskip_slow4:	__asm	add			esi, ecx	__asm	sub			ebx, 1no_1d:	__asm	mov	eax,	hendind	__asm	cmp	eax,	lendind	__asm	jl			lpd	__asm	dec			ebxlpd:	;	__asm	test	ebx, ebx	__asm	jle		done_lpdlpad:	__asm	mov		eax, dword ptr[esi]	__asm	sub		ebx, 1	__asm	add		eax, dword ptr[esi + ecx ]	__asm	test	eax, eax	__asm	je		skip_slowd	__asm	mov		edx, DBL_FIX_F	__asm	imul	edx	__asm	shrd	eax, edx, JPC_FIX_FRACBITS	__asm	add		dword ptr[edi], eaxskip_slowd:	__asm	add		esi, ecx	__asm	add		edi, ecx	__asm	test	ebx, ebx	__asm	jg		lpaddone_lpd:	;	__asm	mov	eax,	hendind	__asm	cmp	eax,	lendind	__asm	jl			no_3d	__asm	mov			eax, dword ptr[esi]	__asm	test		eax, eax	__asm	je			no_3d	__asm	mov			edx, twoalpha_F	__asm	imul		edx	__asm	shrd		eax, edx, JPC_FIX_FRACBITS	__asm	add			dword ptr[edi],eaxno_3d:		;#endif				jpc_qmfb1d_join(	startptr, 									startind, 									endind,									intrastep, 									lstartptr, 									lstartind, 									lendind,									hstartptr, 									hstartind, 									hendind								);			} else 			{#if !defined(USE_LF_ASM)				if (lstartind == lendind) {					*startptr = jpc_fix_asr(*startptr, 1);				}#endif			}			startptr += interstep;		}	} else {		/* The reversible integer-to-integer mode is not supported		  for this transform. */		jas_error(	JAS_ERR_UNSUPPORTED_MODE_JPC_NS_SYNTHESIZE,					"JAS_ERR_UNSUPPORTED_MODE_JPC_NS_SYNTHESIZE"				);	}}#endif/******************************************************************************\*\******************************************************************************/jpc_qmfb1d_t *jpc_qmfb1d_make(int qmfbid){	jpc_qmfb1d_t *qmfb;	if (!(qmfb = jpc_qmfb1d_create())) {		return 0;	}	switch (qmfbid) {	case JPC_QMFB1D_FT:		qmfb->ops = &jpc_ft_ops;		break;	case JPC_QMFB1D_NS:		qmfb->ops = &jpc_ns_ops;		break;	default:		jpc_qmfb1d_destroy(qmfb);		return 0;		break;	}	return qmfb;}static jpc_qmfb1d_t *jpc_qmfb1d_create(){	jpc_qmfb1d_t *qmfb;	if (!(qmfb = jas_malloc(sizeof(jpc_qmfb1d_t)))) {		return 0;	}	qmfb->ops = 0;	return qmfb;}jpc_qmfb1d_t *jpc_qmfb1d_copy(jpc_qmfb1d_t *qmfb){	jpc_qmfb1d_t *newqmfb;	if (!(newqmfb = jpc_qmfb1d_create())) {		return 0;	}	newqmfb->ops = qmfb->ops;	return newqmfb;}void jpc_qmfb1d_destroy(jpc_qmfb1d_t *qmfb){	jas_free(qmfb);}/******************************************************************************\*\******************************************************************************/void jpc_qmfb1d_getbands(jpc_qmfb1d_t *qmfb, int flags, uint_fast32_t xstart,  uint_fast32_t ystart, uint_fast32_t xend, uint_fast32_t yend, int maxbands,  int *numbandsptr, jpc_qmfb1dband_t *bands){	int start;	int end;	assert(maxbands >= 2);	if (flags & JPC_QMFB1D_VERT) {		start = ystart;		end = yend;	} else {		start = xstart;		end = xend;	}/*	assert(jpc_qmfb1d_getnumchans(qmfb) == 2);	*/	assert(start <= end);	bands[0].start = JPC_CEILDIVPOW2(start, 1);	bands[0].end = JPC_CEILDIVPOW2(end, 1);	bands[0].locstart = start;	bands[0].locend = start + bands[0].end - bands[0].start;	bands[1].start = JPC_FLOORDIVPOW2(start, 1);	bands[1].end = JPC_FLOORDIVPOW2(end, 1);	bands[1].locstart = bands[0].locend;	bands[1].locend = bands[1].locstart + bands[1].end - bands[1].start;	assert(bands[1].locend == end);	*numbandsptr = 2;}/******************************************************************************\*\******************************************************************************/int jpc_qmfb1d_getnumchans(jpc_qmfb1d_t *qmfb){	return (*qmfb->ops->getnumchans)(qmfb);}int jpc_qmfb1d_getanalfilters(jpc_qmfb1d_t *qmfb, int len, jas_seq2d_t **filters){	return (*qmfb->ops->getanalfilters)(qmfb, len, filters);}int jpc_qmfb1d_getsynfilters(jpc_qmfb1d_t *qmfb, int len, jas_seq2d_t **filters){	return (*qmfb->ops->getsynfilters)(qmfb, len, filters);}void jpc_qmfb1d_analyze(jpc_qmfb1d_t *qmfb, int flags, jas_seq2d_t *x){	(*qmfb->ops->analyze)(qmfb, flags, x);}void jpc_qmfb1d_synthesize(jpc_qmfb1d_t *qmfb, int flags, jas_seq2d_t *x){	(*qmfb->ops->synthesize)(qmfb, flags, x);}

⌨️ 快捷键说明

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