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

📄 adjustoutput.c

📁 CCSDS空间图像图像压缩标准c源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
											 BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
										 else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
											 BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
										 
										 if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
											 BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
										 else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
											 BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
									}
									 else if (i >  PtrCoding->DecodingStopLocations.BlockNoStopDecoding)
									 {	
										 refinement = beta_2;
										 if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
											 BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
										 else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
											 BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
										 
										 if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
											 BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
										 else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
											 BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
									}

									 else   // current block
									 { // children
										 if  ((DWORD32) abs(BlockCodingInfo[i].PtrBlockAddress[m][n])  >  BitPlaneCheck) // not newly selected. 
											 refinement = beta_2;
										 else 
											 refinement = beta_1;

										if ((m < 4) && (n < 4))
										{
											if( PtrCoding->DecodingStopLocations.X_LocationStopDecoding < 2) // upper right block
												 {
													 if  (m >= 2)
													 {											
															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += beta_2;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= beta_2;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += beta_2;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= beta_2;
													}
													 else
													 {
														 if (m < PtrCoding->DecodingStopLocations.X_LocationStopDecoding)
													 {
															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;

													 }
													 else	 if ((m == PtrCoding->DecodingStopLocations.X_LocationStopDecoding)
														 && (n <= PtrCoding->DecodingStopLocations.Y_LocationStopDecoding))
														 {															 
															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
														 }
													 else
													 {
																 refinement = beta_2;

															 if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
														}													
													 }
												 }
											else if( PtrCoding->DecodingStopLocations.Y_LocationStopDecoding < 2) // lower left block
												 {
													 if  (m < 2)
													 {
															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -=  (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
													}
													 else  if  (n >= 2)
													 {
															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += beta_2;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= beta_2;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += beta_2;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= beta_2;
													}
													 else
													 {
														 if (m < PtrCoding->DecodingStopLocations.X_LocationStopDecoding)
													 {
															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;

													 }
													 else	 if ((m == PtrCoding->DecodingStopLocations.X_LocationStopDecoding)
														 && (n <= PtrCoding->DecodingStopLocations.Y_LocationStopDecoding))
														 {															 
															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
														 }
													 else
													 {
																 refinement = beta_2;

															 if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
														}													
													 }
												 }
											else // lower right block
												 {
													 if  (m < 2 || n < 2)
													 {
															 if  ((DWORD32) abs(BlockCodingInfo[i].PtrBlockAddress[m][n])  >  BitPlaneCheck) // not newly selected. 
																 refinement = beta_2;
															 else 
																 refinement = beta_1;

															if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
													}
													 else
													 {
														 if ((m >= PtrCoding->DecodingStopLocations.X_LocationStopDecoding)
															 && (n >= PtrCoding->DecodingStopLocations.Y_LocationStopDecoding))
														 {
															 if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
														 }
														 else
														 {
															 if  ((DWORD32) abs(BlockCodingInfo[i].PtrBlockAddress[m][n])  >  BitPlaneCheck) // not newly selected. 
																 refinement = beta_2;
															 else 
																 refinement = beta_1;
															 if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
															else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
															 
															if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
															else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
																BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
														 }
													 }

												 }
										 }
										else
										 {				
											 if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
												 BlockCodingInfo[i].PtrBlockAddress[m][n] += beta_2;
											 else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
												 BlockCodingInfo[i].PtrBlockAddress[m][n] -= beta_2;
											 
											 if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
												 BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += beta_2;
											 else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
												 BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= beta_2;
										 }
									 
								 }
							 }
					 }
					  }
				}
				else if  (PtrCoding->DecodingStopLocations.stoppedstage == 3)// parents coding stage. 
				{	
					for (i = 0; i < TotalBlocks; i ++)
					 {
						  for(m = 0; m < 8; m++)
							 for(n = 0; n < 8; n++)
							 {	 		
								 if ((m == 0 && n == 0) || (BlockCodingInfo[i].PtrBlockAddress[m][n] == 0))
									 continue;
								 //parent and children
								 if ((m <= 3  && n <= 3))
								 {
									 
									if  ((DWORD32) abs(BlockCodingInfo[i].PtrBlockAddress[m][n])  >  BitPlaneCheck) // not newly selected. 
										refinement = beta_2;
									else 
										refinement = beta_1;

									if(BlockCodingInfo[i].PtrBlockAddress[m][n] > 0)
										BlockCodingInfo[i].PtrBlockAddress[m][n] += (int) refinement;
									else if(BlockCodingInfo[i].PtrBlockAddress[m][n] < 0)
										BlockCodingInfo[i].PtrBlockAddress[m][n] -= (int) refinement;
									
									if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] > 0)
										BlockCodingInfo[i].PtrBlockAddressFloating[m][n] += refinement;
									else if(BlockCodingInfo[i].PtrBlockAddressFloating[m][n] < 0)
										BlockCodingInfo[i].PtrBlockAddressFloating[m][n] -= refinement;
								 }  

⌨️ 快捷键说明

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