23 #include <cuda_runtime.h>
24 #include "nvbufsurftransform.h"
37 TileConfig(uint32_t l, uint32_t t, uint32_t w, uint32_t h);
64 int32_t interpolation_method);
88 bool SetTilerMap (std::map<uint32_t, uint32_t> *tiler_map, GMutex *tiler_map_lock);
132 void CacheCanvasFindAndDeleteFrameMetaBySource(uint32_t sourceId,
bool deleteAll=
false);
144 bool CacheCanvasCopyAllFrameMetaIntoOneNewFrame(
NvDsBatchMeta* canvasBatchMeta);
150 bool GetSingleSourceMode();
151 uint32_t GetSingleSourceId();
152 uint32_t GetSingleSourceNumSurfacesPerFrame(
NvDsBatchMeta* inputBufferMeta,
bool forceCalc=
false);
154 uint32_t GetSingleSourceSurfacesCount(
NvDsBatchMeta* inputBufferMeta);
156 void CacheCanvasCopyFrameMetaWithoutSourceIdDuplication(
NvDsFrameMetaList* frameMetaList);
187 std::vector<TileConfig> tiles;
195 bool singleSourceModeON;
197 uint32_t singleSourceId;
199 uint32_t singleSourceNumSurfacesPerFrame;
203 std::map<uint32_t, uint32_t> *tilerMap;
205 GMutex *tilerMapLock;
209 std::vector<NvBufSurfTransformSyncObj_t> sync_objects;
212 std::mutex mtxSingleSource;
218 float const MaxScaleFactorVIC;
219 float const MinScaleFactorVIC;
221 #ifdef ENABLE_NVTILER_UNIT_TESTS
224 friend class TestNvTilerGetSrcCompositionRects_InvalidParams1_Test;
225 friend class TestNvTilerGetSrcCompositionRects_InvalidParams2_Test;
226 friend class TestNvTilerGetSrcCompositionRects_InputTestBufferBatch1Filled1_Test;
227 friend class TestNvTilerGetSrcCompositionRects_InputTestBufferBatch100Filled100_Test;
228 friend class TestNvTilerGetSrcCompositionRects_InputTestBufferBatch100Filled50_Test;
229 friend class TestNvTilerGetSrcCompositionRects_InvalidInputTestBufferBatch50Filled100_Test;
230 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch2Filled2_Test;
231 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch2Filled2_columns2_rows1_Test;
232 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch2Filled2_columns2_rows1_SameSourceId0_Test;
233 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch2Filled2_columns2_rows1_SameSourceId1_Test;
234 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch2Filled2_columns1_rows2_Test;
235 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch2Filled2_columns1_rows2_SameSourceId1_Test;
236 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch100Filled100_Test;
237 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch100Filled50_Test;
238 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch100Filled50_Alternative_Test;
239 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch100Filled50_Last50Sources_Test;
240 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch100Filled100_SurfacesPerAllFrame2_Test;
241 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch16Filled16_SurfacesPerAllFrame2_2_Test;
242 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch16Filled16_SurfacesPerFrameDifferent_Test;
243 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch16Filled16_SurfacesPerFrameDifferent_Tiler4x4_Test;
244 friend class TestNvTilerGetDestCompositionRects_InvalidParams1_Test;
245 friend class TestNvTilerGetDestCompositionRects_InvalidParams2_Batch16Filled17_Test;
246 friend class TestNvTilerGetDestCompositionRects_InvalidParams3_Batch16Filled0_Test;
247 friend class TestNvTilerGetDestCompositionRects_InvalidParams4_NullSurfaceList_Test;
248 friend class TestNvTilerGetDestCompositionRects_InvalidParams5_FrameMetaSurfacesPerFrame0_Test;
249 friend class TestNvTilerGetDestCompositionRects_InvalidParams6_NullFrameMeta_Test;
250 friend class TestNvTilerScaleAndPlaceAllMeta_InputTestBufferBatch16Filled8_SurfacesPerFrameDifferent_ScaleTwice_8Plus8_Test;
251 friend class TestNvTilerScaleAndPlaceAllMeta_InputTestBufferBatch100FilledX_SurfacesPerFrameDifferent_ScaleTwice_50Plus50_2_Test;
252 friend class TestNvTilerScaleAndPlaceAllMeta_InputTestBufferBatch100FilledX_SurfacesPerFrameDifferent_ScaleTwice_50Plus40_3_Test;
253 friend class TestNvTilerScaleAndPlaceAllMeta_InputTestBufferBatch16Filled8_SingleSourceModeON_Test;
254 friend class TestNvTilerAdjustOutputMeta_InputTestBufferBatch100FilledX_SurfacesPerFrameDifferent_SyncTwice_50Plus40_Test;
255 friend class TestNvTilerAdjustOutputMeta_InputTestBufferBatch100FilledX_SurfacesPerFrameDifferent_SyncTwice_50Plus40_MultipleFramesWithSameSourceIdInBatch_Test;
256 friend class TestNvTilerAdjustOutputMeta_InputTestBufferBatch100FilledX_SurfacesPerFrameDifferent_SyncXTimes_2_Test;
257 friend class TestNvTilerAdjustOutputMeta_InputTestBufferBatch100FilledX_SurfacesPerFrameDifferent_SyncXTimes_OverlappedBatches_Test;
258 friend class TestNvTilerSyncBufferMeta_InputTestBufferBatch16Filled16_SingleSourceModeON_8S0_8S1_Test;
259 friend class TestNvTilerSyncBufferMeta_InputTestBufferBatch16Filled16_SingleSourceModeOFF_8S0_8S1_Test;
260 friend class TestNvTilerSyncBufferMeta_InputTestBufferBatch16Filled16_SingleSourceModeOFF_8S0_8S1_num_surfaces_per_frame_4S0_8S1_Test;
261 friend class TestNvTilerSyncBufferMeta_InputTestBufferBatch16Filled16_SingleSourceModeON_8S0_8S1_num_surfaces_per_frame_4S0_2S1_Test;
262 friend class TestNvTilerSyncBufferMeta_InputTestBufferBatch16Filled16_SingleSourceModeON_ForS0_8S0_8S1_num_surfaces_per_frame_4S0_2S1_Test;
263 friend class TestNvTilerGetDestCompositionRects_InputTestBufferBatch16Filled16_columns4_rows4_Test;
264 friend class TestNvTilerInit_CustomTileConfig_2x2_Test;
265 friend class TestNvTilerInit_CustomTileConfig_2x2_TilesIncomplete_Test;
266 friend class TestNvTilerInit_CustomTileConfig_2x2_WithBorders_Test;
267 friend class TestNvTilerInit_CustomTileConfig_2x2_WithBorders_OneSource2SurfacesPerFrame_Test;
268 friend class TestNvTilerGetSingleSourceSurfaces_InputTestBufferBatch16Filled8_SingleSourceModeON_Test;
269 friend class TestNvTilerGetSingleSourceSurfaces_InputTestBufferBatch16Filled8_SingleSourceModeON_2_Test;
270 friend class TestNvTilerGetSingleSourceSrcAndDestRect_InputTestBufferBatch16Filled8_SingleSourceModeON_NumSurfaces1_Test;
271 friend class TestNvTilerGetSingleSourceSrcAndDestRect_InputTestBufferBatch16Filled8_SingleSourceModeON_NumSurfaces2_Test;
272 friend class TestNvTilerGetSingleSourceSrcAndDestRect_InputTestBufferBatch16Filled8_SingleSourceModeON_NumSurfaces7_Test;
273 friend class TestNvTilerGetSingleSourceSrcAndDestRect_InputTestBufferBatch16Filled8_SingleSourceModeON_NumSurfaces8_Test;
274 friend class TestNvTilerGetSingleSourceSrcAndDestRect_InputTestBufferBatch16Filled16_SingleSourceModeON_8S0_8S1_Test;
275 friend class TestNvTilerGetSingleSourceSrcAndDestRect_InputTestBufferBatch16Filled16_SingleSourceModeON_0S0_16S1_Test;
276 friend class TestNvTilerCheckVICMaxScaleFactorCompatibility_InputAllGood_ScaleUp_AndDown_Test;
277 friend class TestNvTilerCheckVICMaxScaleFactorCompatibility_Input_ScaleUpGood_ScaleDownWidthBad_Test;
278 friend class TestNvTilerCheckVICMaxScaleFactorCompatibility_Input_ScaleUpGood_ScaleDownHeightBad_Test;
279 friend class TestNvTilerCheckVICMaxScaleFactorCompatibility_Input_ScaleDownGood_ScaleUpWidthBad_Test;
280 friend class TestNvTilerCheckVICMaxScaleFactorCompatibility_Input_ScaleDownGood_ScaleUpHeightBad_Test;
282 #ifdef ENABLE_GST_NVTILER_UNIT_TESTS
283 friend bool TestVerifyNvTilerCurrentConfig(
NvTiler* tilerIface, uint32_t expectedTileWidth, uint32_t expectedTileHeight, uint32_t expectedColumns, uint32_t expectedRows);