MCPcopy Create free account
hub / github.com/cisco/openh264 / DownsamplePadding

Method DownsamplePadding

codec/encoder/core/src/wels_preprocess.cpp:625–674  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

623}
624
625int32_t CWelsPreProcess::DownsamplePadding (SPicture* pSrc, SPicture* pDstPic, int32_t iSrcWidth, int32_t iSrcHeight,
626 int32_t iShrinkWidth, int32_t iShrinkHeight, int32_t iTargetWidth, int32_t iTargetHeight, bool bForceCopy) {
627 int32_t iRet = 0;
628 SPixMap sSrcPixMap;
629 SPixMap sDstPicMap;
630 memset (&sSrcPixMap, 0, sizeof (sSrcPixMap));
631 memset (&sDstPicMap, 0, sizeof (sDstPicMap));
632 sSrcPixMap.pPixel[0] = pSrc->pData[0];
633 sSrcPixMap.pPixel[1] = pSrc->pData[1];
634 sSrcPixMap.pPixel[2] = pSrc->pData[2];
635 sSrcPixMap.iSizeInBits = g_kiPixMapSizeInBits;
636 sSrcPixMap.sRect.iRectWidth = iSrcWidth;
637 sSrcPixMap.sRect.iRectHeight = iSrcHeight;
638 sSrcPixMap.iStride[0] = pSrc->iLineSize[0];
639 sSrcPixMap.iStride[1] = pSrc->iLineSize[1];
640 sSrcPixMap.iStride[2] = pSrc->iLineSize[2];
641 sSrcPixMap.eFormat = VIDEO_FORMAT_I420;
642
643 if (iSrcWidth != iShrinkWidth || iSrcHeight != iShrinkHeight || bForceCopy) {
644 int32_t iMethodIdx = METHOD_DOWNSAMPLE;
645 sDstPicMap.pPixel[0] = pDstPic->pData[0];
646 sDstPicMap.pPixel[1] = pDstPic->pData[1];
647 sDstPicMap.pPixel[2] = pDstPic->pData[2];
648 sDstPicMap.iSizeInBits = g_kiPixMapSizeInBits;
649 sDstPicMap.sRect.iRectWidth = iShrinkWidth;
650 sDstPicMap.sRect.iRectHeight = iShrinkHeight;
651 sDstPicMap.iStride[0] = pDstPic->iLineSize[0];
652 sDstPicMap.iStride[1] = pDstPic->iLineSize[1];
653 sDstPicMap.iStride[2] = pDstPic->iLineSize[2];
654 sDstPicMap.eFormat = VIDEO_FORMAT_I420;
655
656 if (iSrcWidth != iShrinkWidth || iSrcHeight != iShrinkHeight) {
657 iRet = m_pInterfaceVp->Process (iMethodIdx, &sSrcPixMap, &sDstPicMap);
658 } else {
659 WelsMoveMemory_c (pDstPic->pData[0], pDstPic->pData[1], pDstPic->pData[2], pDstPic->iLineSize[0], pDstPic->iLineSize[1],
660 pSrc->pData[0], pSrc->pData[1], pSrc->pData[2], pSrc->iLineSize[0], pSrc->iLineSize[1],
661 iSrcWidth, iSrcHeight);
662 }
663 } else {
664 memcpy (&sDstPicMap, &sSrcPixMap, sizeof (sDstPicMap)); // confirmed_safe_unsafe_usage
665 }
666
667 // get rid of odd line
668 iShrinkWidth -= (iShrinkWidth & 1);
669 iShrinkHeight -= (iShrinkHeight & 1);
670 Padding ((uint8_t*)sDstPicMap.pPixel[0], (uint8_t*)sDstPicMap.pPixel[1], (uint8_t*)sDstPicMap.pPixel[2],
671 sDstPicMap.iStride[0], sDstPicMap.iStride[1], iShrinkWidth, iTargetWidth, iShrinkHeight, iTargetHeight);
672
673 return iRet;
674}
675
676//*********************************************************************************************************/
677void CWelsPreProcess::VaaCalculation (SVAAFrameInfo* pVaaInfo, SPicture* pCurPicture, SPicture* pRefPicture,

Callers

nothing calls this directly

Calls 2

WelsMoveMemory_cFunction · 0.85
ProcessMethod · 0.45

Tested by

no test coverage detected