📄 son_gc_pack.c
字号:
/*******************************************************************************MPEG-4 Audio VMPack gain_control_data()This software module was originally developed 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.*******************************************************************************//* HP 971011 c++ comments -> c comments */#include <stdio.h>#include "buffersHandle.h" /* handler, defines, enums */#include "resilienceHandle.h" /* handler, defines, enums */#include "tf_mainHandle.h" /* handler, defines, enums */#include "bitstreamStruct.h" /* structs */#include "bitstream.h"#include "sony_local.h"/******************************************************************************* Pack gain_control_data*******************************************************************************/int son_gc_pack( BsBitStream *gc_stream, int window_sequence, int max_band, GAINC *gcDataCh[] ){ int bd, wd, ad; int loc; loc = gc_stream->currentBit; BsPutBit(gc_stream, max_band, 2); /* 0 < max_band <= 3*/ switch (window_sequence) { case ONLY_LONG_SEQUENCE: for (bd = 1; bd <= max_band; bd++) { for (wd = 0; wd < 1; wd++) { BsPutBit(gc_stream, gcDataCh[bd][wd].natks, 3); for (ad = 0; ad < gcDataCh[bd][wd].natks; ad++) { BsPutBit(gc_stream, gcDataCh[bd][wd].a_idgain[ad], 4); BsPutBit(gc_stream, gcDataCh[bd][wd].a_loc[ad], 5); } } } break; case LONG_START_SEQUENCE: for (bd = 1; bd <= max_band; bd++) { for (wd = 0; wd < 2; wd++) { BsPutBit(gc_stream, gcDataCh[bd][wd].natks, 3); for (ad = 0; ad < gcDataCh[bd][wd].natks; ad++) { BsPutBit(gc_stream, gcDataCh[bd][wd].a_idgain[ad], 4); if (wd == 0) { BsPutBit(gc_stream, gcDataCh[bd][wd].a_loc[ad], 4); } else { BsPutBit(gc_stream, gcDataCh[bd][wd].a_loc[ad], 2); } } } } break; case EIGHT_SHORT_SEQUENCE: for (bd = 1; bd <= max_band; bd++) { for (wd = 0; wd < 8; wd++) { BsPutBit(gc_stream, gcDataCh[bd][wd].natks, 3); for (ad = 0; ad < gcDataCh[bd][wd].natks; ad++) { BsPutBit(gc_stream, gcDataCh[bd][wd].a_idgain[ad], 4); BsPutBit(gc_stream, gcDataCh[bd][wd].a_loc[ad], 2); } } } break; case LONG_STOP_SEQUENCE: for (bd = 1; bd <= max_band; bd++) { for (wd = 0; wd < 2; wd++) { BsPutBit(gc_stream, gcDataCh[bd][wd].natks, 3); for (ad = 0; ad < gcDataCh[bd][wd].natks; ad++) { BsPutBit(gc_stream, gcDataCh[bd][wd].a_idgain[ad], 4); if (wd == 0) { BsPutBit(gc_stream, gcDataCh[bd][wd].a_loc[ad], 4); } else { BsPutBit(gc_stream, gcDataCh[bd][wd].a_loc[ad], 5); } } } } break; default: return (-1); } return ( gc_stream->currentBit - loc );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -