?? encodercodingparameter.h
字號:
AOF((view_id=atoi(acTags[2].c_str()))< MAX_NUM_VIEWS_MINUS_1);
CodingParameter::SpsMVC.setAnchorRefForListX(cur_view_id,ref_idx,1,view_id);
if(m_CurrentViewId==cur_view_id)
{
xAppendStringWithNO ( cReconFile, cFileNameStringTemp, view_id, ".yuv");
for (i=0; i<(int)m_MultiviewReferenceFileParams.size() ; i++) {
if ( m_MultiviewReferenceFileParams[i]._view_id == view_id) // file already present, so skip
break;
}
if (i== m_MultiviewReferenceFileParams.size())
m_MultiviewReferenceFileParams.push_back
(YUVFileParams(cFileNameStringTemp,view_id,m_uiFrameHeight,m_uiFrameWidth));
}
}
if (acTags[0] == "Fwd_NonAnchorRefs")
{
AOF((ref_idx=atoi(acTags[1].c_str()))< (int)CodingParameter::SpsMVC.getNumNonAnchorRefsForListX(cur_view_id,0));
AOF((view_id=atoi(acTags[2].c_str()))< MAX_NUM_VIEWS_MINUS_1);
CodingParameter::SpsMVC.setNonAnchorRefForListX(cur_view_id,ref_idx,0,view_id);
if(m_CurrentViewId==cur_view_id)
{
xAppendStringWithNO ( cReconFile, cFileNameStringTemp, view_id, ".yuv");
for (i=0; i<(int)m_MultiviewReferenceFileParams.size() ; i++) {
if ( m_MultiviewReferenceFileParams[i]._view_id == view_id) // file already present, so skip
break;
}
if (i== m_MultiviewReferenceFileParams.size())
m_MultiviewReferenceFileParams.push_back
(YUVFileParams(cFileNameStringTemp,view_id,m_uiFrameHeight,m_uiFrameWidth));
}
}
if (acTags[0] == "Bwd_NonAnchorRefs")
{
AOF((ref_idx=atoi(acTags[1].c_str()))< (int)CodingParameter::SpsMVC.getNumNonAnchorRefsForListX(cur_view_id,1));
AOF((view_id=atoi(acTags[2].c_str()))< MAX_NUM_VIEWS_MINUS_1);
CodingParameter::SpsMVC.setNonAnchorRefForListX(cur_view_id,ref_idx,1,view_id);
if(m_CurrentViewId==cur_view_id)
{
xAppendStringWithNO ( cReconFile, cFileNameStringTemp, view_id, ".yuv");
for (i=0; i<(int)m_MultiviewReferenceFileParams.size() ; i++) {
if ( m_MultiviewReferenceFileParams[i]._view_id == view_id)
break;
}
if (i== m_MultiviewReferenceFileParams.size())
m_MultiviewReferenceFileParams.push_back
(YUVFileParams(cFileNameStringTemp,view_id,m_uiFrameHeight,m_uiFrameWidth));
}
}
}
if (m_uiMultiviewAcquisitionInfoSEIEnable==1) // SEI JVT-W060
{
RNOKS( xReadFromFile_MVAcquisitionInfo( cAcquisitionFile) );
}
//JVT-V054
CodingParameter::SpsMVC.setViewCodingOrder(m_cViewOrder);
/////////////////////////
if ( view_cnt != CodingParameter::SpsMVC.getNumViewMinus1() )
{
fprintf(stderr, "Could not locate all view-dependency information: check config file syntax\n");
AF();
}
///////////////
uiParLnCount = 0;
while (m_pEncoderLines[uiParLnCount] != NULL)
{
delete m_pEncoderLines[uiParLnCount];
m_pEncoderLines[uiParLnCount] = NULL;
uiParLnCount++;
}
printf( "SPS: num_views_minus_1%d\n",CodingParameter::SpsMVC.m_num_views_minus_1 ); // ue(v)
for (i=0;i<= CodingParameter::SpsMVC.m_num_views_minus_1; i++)
{
vcOrder = CodingParameter::SpsMVC.m_uiViewCodingOrder[i];
printf("SPS: num_anchor_refs_l0[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_anchor_refs_list0[vcOrder]);
for (j=0; j<CodingParameter::SpsMVC.m_num_anchor_refs_list0[vcOrder]; j++)
printf("SPS: anchor_ref_l0[%d][%d]: %d\n", vcOrder, j, CodingParameter::SpsMVC.m_anchor_ref_list0[vcOrder][j] );
printf("SPS: num_anchor_refs_l1[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_anchor_refs_list1[vcOrder]);
for (j=0; j<CodingParameter::SpsMVC.m_num_anchor_refs_list1[vcOrder]; j++)
printf("SPS: anchor_ref_l1[%d][%d]: %d\n", vcOrder, j, CodingParameter::SpsMVC.m_anchor_ref_list1[vcOrder][j] );
}
for (i=0;i<= CodingParameter::SpsMVC.m_num_views_minus_1; i++)
{
vcOrder = CodingParameter::SpsMVC.m_uiViewCodingOrder[i];
#if JMVM_ONLY // JVT-Y042
if ( CodingParameter::SpsMVC.non_anchor_single_loop_decoding_flag )
{
printf("SPS: num_non_anchor_refs_l0[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_non_anchor_refs_sld_list0[vcOrder] );
for (j=0; j<CodingParameter::SpsMVC.m_num_non_anchor_refs_sld_list0[vcOrder]; j++)
printf("SPS: non_anchor_ref_l0[%d][%d]: %d\n",vcOrder,j, CodingParameter::SpsMVC.m_non_anchor_ref_list0[vcOrder][j]);
}
else
{
printf("SPS: num_non_anchor_refs_l0[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_non_anchor_refs_list0[vcOrder] );
for (j=0; j<CodingParameter::SpsMVC.m_num_non_anchor_refs_list0[vcOrder]; j++)
printf("SPS: non_anchor_ref_l0[%d][%d]: %d\n",vcOrder,j, CodingParameter::SpsMVC.m_non_anchor_ref_list0[vcOrder][j]);
}
#else
printf("SPS: num_non_anchor_refs_l0[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_non_anchor_refs_list0[vcOrder] );
for (j=0; j<CodingParameter::SpsMVC.m_num_non_anchor_refs_list0[vcOrder]; j++)
printf("SPS: non_anchor_ref_l0[%d][%d]: %d\n",vcOrder,j, CodingParameter::SpsMVC.m_non_anchor_ref_list0[vcOrder][j]);
#endif
#if JMVM_ONLY // JVT-Y042
if ( CodingParameter::SpsMVC.non_anchor_single_loop_decoding_flag )
{
printf("SPS: num_non_anchor_refs_l1[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_non_anchor_refs_sld_list1[vcOrder] );
for (j=0; j<CodingParameter::SpsMVC.m_num_non_anchor_refs_sld_list1[vcOrder]; j++)
printf("SPS: non_anchor_ref_l1[%d][%d]: %d\n", vcOrder,j, CodingParameter::SpsMVC.m_non_anchor_ref_list1[vcOrder][j]);
}
else
{
printf("SPS: num_non_anchor_refs_l1[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_non_anchor_refs_list1[vcOrder] );
for (j=0; j<CodingParameter::SpsMVC.m_num_non_anchor_refs_list1[vcOrder]; j++)
printf("SPS: non_anchor_ref_l1[%d][%d]: %d\n", vcOrder,j, CodingParameter::SpsMVC.m_non_anchor_ref_list1[vcOrder][j]);
}
#else
printf("SPS: num_non_anchor_refs_l1[%d]: %d\n", vcOrder, CodingParameter::SpsMVC.m_num_non_anchor_refs_list1[vcOrder] );
for (j=0; j<CodingParameter::SpsMVC.m_num_non_anchor_refs_list1[vcOrder]; j++)
printf("SPS: non_anchor_ref_l1[%d][%d]: %d\n", vcOrder,j, CodingParameter::SpsMVC.m_non_anchor_ref_list1[vcOrder][j]);
#endif
}
if( m_uiMVCmode )
{
m_uiNumberOfLayers = 0;
xAppendStringWithNO ( cInputFile, cFileNameStringTemp, m_CurrentViewId, ".yuv");
getLayerParameters(0).setInputFilename ( (Char*)cFileNameStringTemp.c_str() );
xAppendStringWithNO ( cReconFile, cFileNameStringTemp, m_CurrentViewId, ".yuv");
getLayerParameters(0).setOutputFilename ( (Char*)cFileNameStringTemp.c_str() );
#if JMVM_ONLY // JVT-W081
xAppendStringWithNO ( cMotionFile, cFileNameStringTemp, m_CurrentViewId, ".dat");
getLayerParameters(0).setMotionFilename ( (Char*)cFileNameStringTemp.c_str() );
UInt uiViewId;
UInt uiNumNonAnchorRefsForList0 = CodingParameter::SpsMVC.getNumNonAnchorRefsForListX(m_CurrentViewId, 0);
UInt uiNumNonAnchorRefsForList1 = CodingParameter::SpsMVC.getNumNonAnchorRefsForListX(m_CurrentViewId, 1);
getLayerParameters(0).FwdMotionFilename( uiNumNonAnchorRefsForList0 );
getLayerParameters(0).BwdMotionFilename( uiNumNonAnchorRefsForList1 );
if (!CodingParameter::SpsMVC.getSingleLoopDecoding() ) // JVT-Y042
{
for( i=0; i<uiNumNonAnchorRefsForList0; i++ )
{
uiViewId = SpsMVC.getNonAnchorRefForListX(m_CurrentViewId,i,0);
xAppendStringWithNO ( cMotionFile, cFileNameStringTemp, uiViewId, ".dat");
getLayerParameters(0).setFwdMotionFilename ( (Char*)cFileNameStringTemp.c_str(), i );
}
}
else
{
if( CodingParameter::SpsMVC.m_num_non_anchor_refs_sld_list0[m_CurrentViewId] )
{
m_FwdViewId = SpsMVC.getNonAnchorRefForListX (m_CurrentViewId,0,0);
xAppendStringWithNO ( cMotionFile, cFileNameStringTemp, m_FwdViewId, ".dat");
getLayerParameters(0).setFwdMotionFilenameSLD( (Char*)cFileNameStringTemp.c_str());
}
}
if (!CodingParameter::SpsMVC.getSingleLoopDecoding() ) // JVT-Y042
{
for( i=0; i<uiNumNonAnchorRefsForList1; i++ )
{
uiViewId = SpsMVC.getNonAnchorRefForListX(m_CurrentViewId,i,1);
xAppendStringWithNO ( cMotionFile, cFileNameStringTemp, uiViewId, ".dat");
getLayerParameters(0).setBwdMotionFilename ( (Char*)cFileNameStringTemp.c_str(), i );
}
}
else
{
if( CodingParameter::SpsMVC.m_num_non_anchor_refs_sld_list1[m_CurrentViewId] )
{
m_BwdViewId = SpsMVC.getNonAnchorRefForListX (m_CurrentViewId,0,1);
xAppendStringWithNO ( cMotionFile, cFileNameStringTemp, m_BwdViewId, ".dat");
getLayerParameters(0).setBwdMotionFilenameSLD ( (Char*)cFileNameStringTemp.c_str() );
}
}
// CodingParameter::SpsMVC.setMotionSkipMode(m_uiMotionSkipMode);
#endif // JVT-W081
getLayerParameters(0).setFrameWidth ( m_uiFrameWidth );
getLayerParameters(0).setFrameHeight ( m_uiFrameHeight );
xAppendStringWithNO ( rcBitstreamFile, rcBitstreamFile, m_CurrentViewId, ".264");
}
fclose( f );
return Err::m_nOK;
}
ErrVal EncoderCodingParameter::GetExponentMantissa_MVAcquisitionInfo(double arg, UInt mant_prec, UInt *E, UInt *M)// JVT-Z038
{
double log_val;
int expo,v,i;
double mant;
/* Find expo & mant when arg=(-1)^sign*2^expo*(0.mant),*/
if (arg==0.0){
expo=0;
mant=0;
} else {
log_val= (double)log((double)fabs((double)arg))/(double)log(2.0);
expo = (int)floor((double)log_val);
mant = (double)pow((double)2, (double)(log_val - (double)expo));
if ((double)fabs((double)mant) > 1.0) {
mant = mant / (double)2.0;
expo= expo + 1;
}
}
/* Convert expo & mant so that X=(-1)^s*2^expo*(1.mant) */
if (expo == 0 && mant ==0.0 ) {
v=0;
} else if (expo> -30) {
while ((double)fabs(mant)<(double)1.0) {
mant=mant*2.0;
expo=expo-1;
}
if (mant>=0.0)
mant = mant-1.0;
v= expo + mant_prec; // number of necessary mantissa bits in the case of truncation
if (v<0) v=0;
expo += 31;
} else if (expo == -30) {
v= expo + mant_prec; // number of necessary mantissa bits in the case of truncation
if (v<0) v=0;
expo=0;
}
*E = (UInt)expo;
/* Convert a float number mant (0<=mant<1) into a binary representation N which is a mantissa with v bits */
*M=0;
int bit;
for (i=1; i<=v; i++ ){
bit = (2.0*mant >= 1.0);
mant = 2.0*mant - (double)bit;
*M = (*M << 1 ) | bit ; // MSB of M corresponds to 1/2 and MSB-1 to 1/4 and so on.
}
return 0;
}
ErrVal EncoderCodingParameter::xReadFromFile_MVAcquisitionInfo( std::string& rcFilename) // SEI JVT-W060, JVT-Z038
{
std::string acTags[4];
FILE *f = fopen( rcFilename.c_str(), "r");
if( NULL == f )
{
printf( "failed to open %s parameter file\n", rcFilename.c_str() );
return Err::m_nERR;
}
UInt NumViewsMinus1=0;
int view_cnt=0;
int j,cur_view_id=-1;
Bool IntrinsicFlag=false;
Bool ExtrinsicFlag=false;
UInt PrecFocalLength=0;
UInt PrecPrincipalPoint=0;
UInt PrecRadialDistortion=0;
UInt PrecRotationParam=0;
UInt PrecTranslationParam=0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -