Changeset 804 in SHVCSoftware for branches/SHM-6-dev/source/App
- Timestamp:
- 15 Jun 2014, 20:13:14 (11 years ago)
- Location:
- branches/SHM-6-dev/source/App/TAppEncoder
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-6-dev/source/App/TAppEncoder/TAppEncCfg.cpp
r797 r804 1005 1005 ("CGSLUTBit", m_nCGSLUTBit , 12, "bit depth of CGS LUT") 1006 1006 #endif 1007 #if Q0108_TSA_STSA 1008 ("InheritCodingStruct%d",m_inheritCodingStruct, 0, MAX_LAYERS, "Predicts the GOP structure of one layer for another layer") 1009 #endif 1007 1010 ; 1008 1011 … … 1012 1015 opts.addOptions()(cOSS.str(), m_GOPList[i-1], GOPEntry()); 1013 1016 } 1017 1018 #if Q0108_TSA_STSA 1019 for (Int i=1; i<MAX_LAYERS; i++) 1020 for(Int j=1; j<MAX_GOP+1; j++){ 1021 std::ostringstream cOSS; 1022 cOSS<<"Layer"<<i<<"Frame"<<j; 1023 opts.addOptions()(cOSS.str(), m_EH_GOPList[i][j-1], GOPEntry()); 1024 } 1025 #endif 1026 1014 1027 po::setDefaults(opts); 1015 1028 const list<const Char*>& argv_unhandled = po::scanArgv(opts, argc, (const Char**) argv); 1029 1030 #if Q0108_TSA_STSA 1031 for (Int i=1; i<MAX_LAYERS; i++) 1032 { 1033 if(m_inheritCodingStruct[i] == 0) 1034 { 1035 for(Int j=1; j<MAX_GOP+1; j++) 1036 { 1037 m_EH_GOPList[i][j-1] = m_GOPList[j-1]; 1038 } 1039 } 1040 else if( m_inheritCodingStruct[i] > 0) 1041 { 1042 for(Int j=1; j<MAX_GOP+1; j++) 1043 { 1044 m_EH_GOPList[i][j-1] = m_EH_GOPList[m_inheritCodingStruct[i]][j-1]; 1045 } 1046 } 1047 } 1048 #endif 1016 1049 1017 1050 if(m_isField) … … 1924 1957 #endif 1925 1958 1926 m_extraRPSs=0; 1959 #if !Q0108_TSA_STSA 1960 m_extraRPSs = 0; 1961 #else 1962 for (Int i = 0; i< MAX_LAYERS; i++) 1963 { 1964 m_extraRPSs[i] = 0; 1965 } 1966 #endif 1927 1967 //start looping through frames in coding order until we can verify that the GOP structure is correct. 1928 1968 while(!verifiedGOP&&!errorGOP) … … 1990 2030 { 1991 2031 //create a new GOPEntry for this frame containing all the reference pictures that were available (POC > 0) 2032 #if !Q0108_TSA_STSA 1992 2033 m_GOPList[m_iGOPSize+m_extraRPSs]=m_GOPList[curGOP]; 2034 #else 2035 m_GOPList[m_iGOPSize+m_extraRPSs[0]]=m_GOPList[curGOP]; 2036 #endif 1993 2037 Int newRefs=0; 1994 2038 for(Int i = 0; i< m_GOPList[curGOP].m_numRefPics; i++) … … 1997 2041 if(absPOC>=0) 1998 2042 { 2043 #if !Q0108_TSA_STSA 1999 2044 m_GOPList[m_iGOPSize+m_extraRPSs].m_referencePics[newRefs]=m_GOPList[curGOP].m_referencePics[i]; 2000 2045 m_GOPList[m_iGOPSize+m_extraRPSs].m_usedByCurrPic[newRefs]=m_GOPList[curGOP].m_usedByCurrPic[i]; 2046 #else 2047 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_referencePics[newRefs]=m_GOPList[curGOP].m_referencePics[i]; 2048 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_usedByCurrPic[newRefs]=m_GOPList[curGOP].m_usedByCurrPic[i]; 2049 #endif 2001 2050 newRefs++; 2002 2051 } … … 2021 2070 for(Int i=0; i<newRefs; i++) 2022 2071 { 2072 #if !Q0108_TSA_STSA 2023 2073 if(m_GOPList[m_iGOPSize+m_extraRPSs].m_referencePics[i]==offPOC-curPOC) 2074 #else 2075 if(m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_referencePics[i]==offPOC-curPOC) 2076 #endif 2024 2077 { 2025 2078 newRef=false; … … 2036 2089 for(Int j=0; j<newRefs; j++) 2037 2090 { 2091 #if !Q0108_TSA_STSA 2038 2092 if(m_GOPList[m_iGOPSize+m_extraRPSs].m_referencePics[j]<offPOC-curPOC||m_GOPList[m_iGOPSize+m_extraRPSs].m_referencePics[j]>0) 2093 #else 2094 if(m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_referencePics[j]<offPOC-curPOC||m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_referencePics[j]>0) 2095 #endif 2039 2096 { 2040 2097 insertPoint = j; … … 2046 2103 for(Int j=insertPoint; j<newRefs+1; j++) 2047 2104 { 2105 #if !Q0108_TSA_STSA 2048 2106 Int newPrev = m_GOPList[m_iGOPSize+m_extraRPSs].m_referencePics[j]; 2049 2107 Int newUsed = m_GOPList[m_iGOPSize+m_extraRPSs].m_usedByCurrPic[j]; 2050 2108 m_GOPList[m_iGOPSize+m_extraRPSs].m_referencePics[j]=prev; 2051 2109 m_GOPList[m_iGOPSize+m_extraRPSs].m_usedByCurrPic[j]=prevUsed; 2110 #else 2111 Int newPrev = m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_referencePics[j]; 2112 Int newUsed = m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_usedByCurrPic[j]; 2113 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_referencePics[j]=prev; 2114 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_usedByCurrPic[j]=prevUsed; 2115 #endif 2116 2052 2117 prevUsed=newUsed; 2053 2118 prev=newPrev; … … 2061 2126 } 2062 2127 } 2128 #if !Q0108_TSA_STSA 2063 2129 m_GOPList[m_iGOPSize+m_extraRPSs].m_numRefPics=newRefs; 2064 2130 m_GOPList[m_iGOPSize+m_extraRPSs].m_POC = curPOC; 2131 #else 2132 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_numRefPics=newRefs; 2133 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_POC = curPOC; 2134 #endif 2135 #if !Q0108_TSA_STSA 2065 2136 if (m_extraRPSs == 0) 2066 { 2137 #else 2138 if (m_extraRPSs[0] == 0) 2139 #endif 2140 { 2141 #if !Q0108_TSA_STSA 2067 2142 m_GOPList[m_iGOPSize+m_extraRPSs].m_interRPSPrediction = 0; 2068 2143 m_GOPList[m_iGOPSize+m_extraRPSs].m_numRefIdc = 0; 2144 #else 2145 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_interRPSPrediction = 0; 2146 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_numRefIdc = 0; 2147 #endif 2069 2148 } 2070 2149 else 2071 2150 { 2151 #if !Q0108_TSA_STSA 2072 2152 Int rIdx = m_iGOPSize + m_extraRPSs - 1; 2153 #else 2154 Int rIdx = m_iGOPSize + m_extraRPSs[0] - 1; 2155 #endif 2073 2156 Int refPOC = m_GOPList[rIdx].m_POC; 2074 2157 Int refPics = m_GOPList[rIdx].m_numRefPics; … … 2079 2162 Int absPOCref = refPOC+deltaPOC; 2080 2163 Int refIdc = 0; 2164 #if !Q0108_TSA_STSA 2081 2165 for (Int j = 0; j < m_GOPList[m_iGOPSize+m_extraRPSs].m_numRefPics; j++) 2082 2166 { … … 2103 2187 m_extraRPSs++; 2104 2188 } 2189 #else 2190 for (Int j = 0; j < m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_numRefPics; j++) 2191 { 2192 if ( (absPOCref - curPOC) == m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_referencePics[j]) 2193 { 2194 if (m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_usedByCurrPic[j]) 2195 { 2196 refIdc = 1; 2197 } 2198 else 2199 { 2200 refIdc = 2; 2201 } 2202 } 2203 } 2204 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_refIdc[newIdc]=refIdc; 2205 newIdc++; 2206 } 2207 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_interRPSPrediction = 1; 2208 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_numRefIdc = newIdc; 2209 m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_deltaRPS = refPOC - m_GOPList[m_iGOPSize+m_extraRPSs[0]].m_POC; 2210 } 2211 curGOP=m_iGOPSize+m_extraRPSs[0]; 2212 m_extraRPSs[0]++; 2213 } 2214 #endif 2215 2105 2216 numRefs=0; 2106 2217 for(Int i = 0; i< m_GOPList[curGOP].m_numRefPics; i++) … … 2119 2230 } 2120 2231 xConfirmPara(errorGOP,"Invalid GOP structure given"); 2232 2233 #if Q0108_TSA_STSA 2234 for ( Int layer_index = 1; layer_index<m_numLayers; layer_index++) 2235 { 2236 verifiedGOP=false; 2237 errorGOP=false; 2238 checkGOP=1; 2239 numRefs = m_isField ? 2 : 1; 2240 refList[0]=0; 2241 if(m_isField) 2242 { 2243 refList[1] = 1; 2244 } 2245 for(Int i=0; i<MAX_GOP; i++) 2246 { 2247 isOK[i]=false; 2248 } 2249 numOK=0; 2250 #if !SVC_EXTENSION 2251 xConfirmPara( m_iIntraPeriod >=0&&(m_iIntraPeriod%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" ); 2252 #endif 2253 2254 for(Int i=0; i<m_iGOPSize; i++) 2255 { 2256 if(m_EH_GOPList[layer_index][i].m_POC==m_iGOPSize) 2257 { 2258 xConfirmPara( m_EH_GOPList[layer_index][i].m_temporalId!=0 , "The last frame in each GOP must have temporal ID = 0 " ); 2259 } 2260 } 2261 2262 #if SVC_EXTENSION 2263 xConfirmPara( m_numLayers > MAX_LAYERS , "Number of layers in config file is greater than MAX_LAYERS" ); 2264 m_numLayers = m_numLayers > MAX_LAYERS ? MAX_LAYERS : m_numLayers; 2265 2266 // verify layer configuration parameters 2267 for(UInt layer=0; layer<m_numLayers; layer++) 2268 { 2269 Int m_iIntraPeriod = m_acLayerCfg[layer].m_iIntraPeriod; 2270 #endif 2271 if ( (m_iIntraPeriod != 1) && !m_loopFilterOffsetInPPS && m_DeblockingFilterControlPresent && (!m_bLoopFilterDisable) ) 2272 { 2273 for(Int i=0; i<m_iGOPSize; i++) 2274 { 2275 xConfirmPara( (m_EH_GOPList[layer_index][i].m_betaOffsetDiv2 + m_loopFilterBetaOffsetDiv2) < -6 || (m_EH_GOPList[layer_index][i].m_betaOffsetDiv2 + m_loopFilterBetaOffsetDiv2) > 6, "Loop Filter Beta Offset div. 2 for one of the GOP entries exceeds supported range (-6 to 6)" ); 2276 xConfirmPara( (m_EH_GOPList[layer_index][i].m_tcOffsetDiv2 + m_loopFilterTcOffsetDiv2) < -6 || (m_EH_GOPList[layer_index][i].m_tcOffsetDiv2 + m_loopFilterTcOffsetDiv2) > 6, "Loop Filter Tc Offset div. 2 for one of the GOP entries exceeds supported range (-6 to 6)" ); 2277 } 2278 } 2279 #if SVC_EXTENSION 2280 } 2281 #endif 2282 2283 //start looping through frames in coding order until we can verify that the GOP structure is correct. 2284 while(!verifiedGOP&&!errorGOP) 2285 { 2286 Int curGOP = (checkGOP-1)%m_iGOPSize; 2287 Int curPOC = ((checkGOP-1)/m_iGOPSize)*m_iGOPSize + m_EH_GOPList[layer_index][curGOP].m_POC; 2288 if(m_EH_GOPList[layer_index][curGOP].m_POC<0) 2289 { 2290 printf("\nError: found fewer Reference Picture Sets than GOPSize\n"); 2291 errorGOP=true; 2292 } 2293 else 2294 { 2295 //check that all reference pictures are available, or have a POC < 0 meaning they might be available in the next GOP. 2296 Bool beforeI = false; 2297 for(Int i = 0; i< m_EH_GOPList[layer_index][curGOP].m_numRefPics; i++) 2298 { 2299 Int absPOC = curPOC+m_EH_GOPList[layer_index][curGOP].m_referencePics[i]; 2300 if(absPOC < 0) 2301 { 2302 beforeI=true; 2303 } 2304 else 2305 { 2306 Bool found=false; 2307 for(Int j=0; j<numRefs; j++) 2308 { 2309 if(refList[j]==absPOC) 2310 { 2311 found=true; 2312 for(Int k=0; k<m_iGOPSize; k++) 2313 { 2314 if(absPOC%m_iGOPSize == m_EH_GOPList[layer_index][k].m_POC%m_iGOPSize) 2315 { 2316 if(m_EH_GOPList[layer_index][k].m_temporalId==m_EH_GOPList[layer_index][curGOP].m_temporalId) 2317 { 2318 m_EH_GOPList[layer_index][k].m_refPic = true; 2319 } 2320 m_EH_GOPList[layer_index][curGOP].m_usedByCurrPic[i]=m_EH_GOPList[layer_index][k].m_temporalId<=m_EH_GOPList[layer_index][curGOP].m_temporalId; 2321 } 2322 } 2323 } 2324 } 2325 if(!found) 2326 { 2327 printf("\nError: ref pic %d is not available for GOP frame %d\n",m_EH_GOPList[layer_index][curGOP].m_referencePics[i],curGOP+1); 2328 errorGOP=true; 2329 } 2330 } 2331 } 2332 if(!beforeI&&!errorGOP) 2333 { 2334 //all ref frames were present 2335 if(!isOK[curGOP]) 2336 { 2337 numOK++; 2338 isOK[curGOP]=true; 2339 if(numOK==m_iGOPSize) 2340 { 2341 verifiedGOP=true; 2342 } 2343 } 2344 } 2345 else 2346 { 2347 //create a new GOPEntry for this frame containing all the reference pictures that were available (POC > 0) 2348 2349 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]]=m_EH_GOPList[layer_index][curGOP]; 2350 Int newRefs=0; 2351 for(Int i = 0; i< m_EH_GOPList[layer_index][curGOP].m_numRefPics; i++) 2352 { 2353 Int absPOC = curPOC+m_EH_GOPList[layer_index][curGOP].m_referencePics[i]; 2354 if(absPOC>=0) 2355 { 2356 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_referencePics[newRefs]=m_EH_GOPList[layer_index][curGOP].m_referencePics[i]; 2357 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_usedByCurrPic[newRefs]=m_EH_GOPList[layer_index][curGOP].m_usedByCurrPic[i]; 2358 newRefs++; 2359 } 2360 } 2361 Int numPrefRefs = m_EH_GOPList[layer_index][curGOP].m_numRefPicsActive; 2362 2363 for(Int offset = -1; offset>-checkGOP; offset--) 2364 { 2365 //step backwards in coding order and include any extra available pictures we might find useful to replace the ones with POC < 0. 2366 Int offGOP = (checkGOP-1+offset)%m_iGOPSize; 2367 Int offPOC = ((checkGOP-1+offset)/m_iGOPSize)*m_iGOPSize + m_EH_GOPList[layer_index][offGOP].m_POC; 2368 if(offPOC>=0&&m_EH_GOPList[layer_index][offGOP].m_temporalId<=m_EH_GOPList[layer_index][curGOP].m_temporalId) 2369 { 2370 Bool newRef=false; 2371 for(Int i=0; i<numRefs; i++) 2372 { 2373 if(refList[i]==offPOC) 2374 { 2375 newRef=true; 2376 } 2377 } 2378 for(Int i=0; i<newRefs; i++) 2379 { 2380 if(m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_referencePics[i]==offPOC-curPOC) 2381 { 2382 newRef=false; 2383 } 2384 } 2385 if(newRef) 2386 { 2387 Int insertPoint=newRefs; 2388 //this picture can be added, find appropriate place in list and insert it. 2389 if(m_EH_GOPList[layer_index][offGOP].m_temporalId==m_EH_GOPList[layer_index][curGOP].m_temporalId) 2390 { 2391 m_EH_GOPList[layer_index][offGOP].m_refPic = true; 2392 } 2393 for(Int j=0; j<newRefs; j++) 2394 { 2395 if(m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_referencePics[j]<offPOC-curPOC||m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_referencePics[j]>0) 2396 { 2397 insertPoint = j; 2398 break; 2399 } 2400 } 2401 Int prev = offPOC-curPOC; 2402 Int prevUsed = m_EH_GOPList[layer_index][offGOP].m_temporalId<=m_EH_GOPList[layer_index][curGOP].m_temporalId; 2403 for(Int j=insertPoint; j<newRefs+1; j++) 2404 { 2405 Int newPrev = m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_referencePics[j]; 2406 Int newUsed = m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_usedByCurrPic[j]; 2407 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_referencePics[j]=prev; 2408 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_usedByCurrPic[j]=prevUsed; 2409 prevUsed=newUsed; 2410 prev=newPrev; 2411 } 2412 newRefs++; 2413 } 2414 } 2415 if(newRefs>=numPrefRefs) 2416 { 2417 break; 2418 } 2419 } 2420 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_numRefPics=newRefs; 2421 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_POC = curPOC; 2422 if (m_extraRPSs[layer_index] == 0) 2423 { 2424 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_interRPSPrediction = 0; 2425 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_numRefIdc = 0; 2426 } 2427 else 2428 { 2429 Int rIdx = m_iGOPSize + m_extraRPSs[layer_index] - 1; 2430 Int refPOC = m_EH_GOPList[layer_index][rIdx].m_POC; 2431 Int refPics = m_EH_GOPList[layer_index][rIdx].m_numRefPics; 2432 Int newIdc=0; 2433 for(Int i = 0; i<= refPics; i++) 2434 { 2435 Int deltaPOC = ((i != refPics)? m_EH_GOPList[layer_index][rIdx].m_referencePics[i] : 0); // check if the reference abs POC is >= 0 2436 Int absPOCref = refPOC+deltaPOC; 2437 Int refIdc = 0; 2438 for (Int j = 0; j < m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_numRefPics; j++) 2439 { 2440 if ( (absPOCref - curPOC) == m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_referencePics[j]) 2441 { 2442 if (m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_usedByCurrPic[j]) 2443 { 2444 refIdc = 1; 2445 } 2446 else 2447 { 2448 refIdc = 2; 2449 } 2450 } 2451 } 2452 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_refIdc[newIdc]=refIdc; 2453 newIdc++; 2454 } 2455 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_interRPSPrediction = 1; 2456 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_numRefIdc = newIdc; 2457 m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_deltaRPS = refPOC - m_EH_GOPList[layer_index][m_iGOPSize+m_extraRPSs[layer_index]].m_POC; 2458 } 2459 curGOP=m_iGOPSize+m_extraRPSs[layer_index]; 2460 m_extraRPSs[layer_index]++; 2461 } 2462 numRefs=0; 2463 for(Int i = 0; i< m_EH_GOPList[layer_index][curGOP].m_numRefPics; i++) 2464 { 2465 Int absPOC = curPOC+m_EH_GOPList[layer_index][curGOP].m_referencePics[i]; 2466 if(absPOC >= 0) 2467 { 2468 refList[numRefs]=absPOC; 2469 numRefs++; 2470 } 2471 } 2472 refList[numRefs]=curPOC; 2473 numRefs++; 2474 } 2475 checkGOP++; 2476 } 2477 xConfirmPara(errorGOP,"Invalid GOP structure given"); 2478 } 2479 #endif 2480 2481 2121 2482 m_maxTempLayer = 1; 2122 2483 for(Int i=0; i<m_iGOPSize; i++) … … 2128 2489 xConfirmPara(m_GOPList[i].m_sliceType!='B'&&m_GOPList[i].m_sliceType!='P'&&m_GOPList[i].m_sliceType!='I', "Slice type must be equal to B or P or I"); 2129 2490 } 2491 2492 #if Q0108_TSA_STSA 2493 for ( Int layer_index = 1; layer_index<m_numLayers; layer_index++) 2494 { 2495 m_EH_maxTempLayer[layer_index] = 1; 2496 for(Int i=0; i<m_iGOPSize; i++) 2497 { 2498 if(m_EH_GOPList[layer_index][i].m_temporalId >= m_EH_maxTempLayer[layer_index] ) 2499 { 2500 m_EH_maxTempLayer[layer_index] = m_EH_GOPList[layer_index][i].m_temporalId; 2501 } 2502 xConfirmPara(m_GOPList[i].m_sliceType!='B'&&m_GOPList[i].m_sliceType!='P'&&m_GOPList[i].m_sliceType!='I', "Slice type must be equal to B or P or I"); 2503 } 2504 } 2505 #endif 2506 2130 2507 for(Int i=0; i<MAX_TLAYER; i++) 2131 2508 { -
branches/SHM-6-dev/source/App/TAppEncoder/TAppEncCfg.h
r779 r804 125 125 Int m_iDecodingRefreshType; ///< random access type 126 126 Int m_iGOPSize; ///< GOP size of hierarchical structure 127 128 #if !Q0108_TSA_STSA 127 129 Int m_extraRPSs; ///< extra RPSs added to handle CRA 130 #else 131 Int m_extraRPSs[MAX_LAYERS]; ///< extra RPSs added to handle CRA 132 #endif 133 128 134 GOPEntry m_GOPList[MAX_GOP]; ///< the coding structure entries from the config file 135 #if Q0108_TSA_STSA 136 GOPEntry m_EH_GOPList[MAX_LAYERS][MAX_GOP]; ///< the enhancement layer coding structure entries from the config file 137 Int m_inheritCodingStruct[MAX_LAYERS]; 138 #endif 139 129 140 Int m_numReorderPics[MAX_TLAYER]; ///< total number of reorder pictures 130 141 Int m_maxDecPicBuffering[MAX_TLAYER]; ///< total number of pictures in the decoded picture buffer … … 154 165 155 166 Int m_maxTempLayer; ///< Max temporal layer 167 #if Q0108_TSA_STSA 168 Int m_EH_maxTempLayer[MAX_LAYERS]; ///< Max temporal layer 169 #endif 156 170 157 171 #if !LAYER_CTB -
branches/SHM-6-dev/source/App/TAppEncoder/TAppEncTop.cpp
r801 r804 240 240 m_acTEncTop[layer].setDecodingRefreshType ( m_iDecodingRefreshType ); 241 241 m_acTEncTop[layer].setGOPSize ( m_iGOPSize ); 242 #if Q0108_TSA_STSA 243 if(layer == 0) 244 m_acTEncTop[layer].setGopList ( m_GOPList ); 245 else 246 m_acTEncTop[layer].setGopList ( m_EH_GOPList[layer] ); 247 #else 242 248 m_acTEncTop[layer].setGopList ( m_GOPList ); 243 249 #endif 250 251 #if !Q0108_TSA_STSA 244 252 m_acTEncTop[layer].setExtraRPSs ( m_extraRPSs ); 253 #else 254 m_acTEncTop[layer].setExtraRPSs ( m_extraRPSs[layer] ); 255 #endif 245 256 for(Int i = 0; i < MAX_TLAYER; i++) 246 257 { … … 255 266 256 267 m_acTEncTop[layer].setPad ( m_acLayerCfg[layer].getPad() ); 257 268 #if !Q0108_TSA_STSA 258 269 m_acTEncTop[layer].setMaxTempLayer ( m_maxTempLayer ); 270 #else 271 if (layer== 0) 272 { 273 m_acTEncTop[layer].setMaxTempLayer ( m_maxTempLayer ); 274 } 275 else 276 { 277 m_acTEncTop[layer].setMaxTempLayer ( m_EH_maxTempLayer[layer] ); 278 } 279 #endif 259 280 m_acTEncTop[layer].setUseAMP( m_enableAMP ); 260 281
Note: See TracChangeset for help on using the changeset viewer.