[x265] [PATCH] Cached the motion reference list in the Slice
Steve Borho
steve at borho.org
Wed Jul 31 21:07:50 CEST 2013
On Wed, Jul 31, 2013 at 7:55 AM, <deepthidevaki at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Shazeb N Khan
> # Date 1375274951 -19800
> # Wed Jul 31 18:19:11 2013 +0530
> # Node ID 5711a725065835ab43ff8f3f8fc86e415e4dfb6b
> # Parent 2a8fb9ec2a10c510df180f2c4a8ea065089d4568
> Cached the motion reference list in the Slice
>
I've queued up a tweaked version of this, thanks!
> diff -r 2a8fb9ec2a10 -r 5711a7250658 source/Lib/TLibCommon/TComPicYuv.cpp
> --- a/source/Lib/TLibCommon/TComPicYuv.cpp Wed Jul 31 15:52:35 2013
> +0530
> +++ b/source/Lib/TLibCommon/TComPicYuv.cpp Wed Jul 31 18:19:11 2013
> +0530
> @@ -252,11 +252,12 @@
> return NULL;
> }
>
> -Void TComPicYuv::extendPicBorder(x265::ThreadPool *pool, wpScalingParam
> *w)
> +x265::MotionReference* TComPicYuv::extendPicBorder(x265::ThreadPool
> *pool, wpScalingParam *w)
> {
> - if (getMotionReference(w)!=NULL)
> + MotionReference * mref = getMotionReference(w);
> + if (mref!=NULL)
> {
> - return;
> + return mref;
> }
>
> if (!m_bIsBorderExtended)
> @@ -268,11 +269,12 @@
> m_bIsBorderExtended = true;
> }
>
> - MotionReference *temp = new x265::MotionReference(this, pool, w);
> - temp->generateReferencePlanes();
> - temp->m_next = m_refList;
> - m_refList = temp;
> + mref = new x265::MotionReference(this, pool, w);
> + mref->generateReferencePlanes();
> + mref->m_next = m_refList;
> + m_refList = mref;
>
> + return mref;
> }
>
> Void TComPicYuv::xExtendPicCompBorder(Pel* recon, Int stride, Int width,
> Int height, Int iMarginX, Int iMarginY)
> diff -r 2a8fb9ec2a10 -r 5711a7250658 source/Lib/TLibCommon/TComPicYuv.h
> --- a/source/Lib/TLibCommon/TComPicYuv.h Wed Jul 31 15:52:35 2013
> +0530
> +++ b/source/Lib/TLibCommon/TComPicYuv.h Wed Jul 31 18:19:11 2013
> +0530
> @@ -184,7 +184,7 @@
> Void copyFromPicture(const x265_picture_t&);
>
> // Extend function of picture buffer
> - Void extendPicBorder(x265::ThreadPool *pool, wpScalingParam *w=NULL);
> + x265::MotionReference* extendPicBorder(x265::ThreadPool *pool,
> wpScalingParam *w=NULL);
>
> // Dump picture
> Void dump(Char* pFileName, Bool bAdd = false);
> diff -r 2a8fb9ec2a10 -r 5711a7250658 source/Lib/TLibCommon/TComSlice.h
> --- a/source/Lib/TLibCommon/TComSlice.h Wed Jul 31 15:52:35 2013 +0530
> +++ b/source/Lib/TLibCommon/TComSlice.h Wed Jul 31 18:19:11 2013 +0530
> @@ -42,6 +42,7 @@
> #include "TComRom.h"
> #include "TComList.h"
> #include "x265.h" // NAL type enums
> +#include "reference.h"
>
> #include <cstring>
> #include <map>
> @@ -1328,7 +1329,7 @@
> Void setSliceHeaderExtensionPresentFlag(Bool val) {
> m_sliceHeaderExtensionPresentFlag = val; }
> };
>
> -typedef struct
> +struct WpScalingParam
> {
> // Explicit weighted prediction parameters parsed in slice header,
> // or Implicit weighted prediction parameters (8 bits depth values).
> @@ -1339,7 +1340,9 @@
>
> // Weighted prediction scaling values built from above parameters
> (bitdepth scaled):
> Int w, o, offset, shift, round;
> -} wpScalingParam;
> +};
> +
> +typedef WpScalingParam wpScalingParam;
>
> typedef struct
> {
> @@ -1429,6 +1432,8 @@
>
> public:
>
> + x265::MotionReference * m_mref[2][MAX_NUM_REF + 1];
> +
> TComSlice();
> virtual ~TComSlice();
> Void initSlice();
> diff -r 2a8fb9ec2a10 -r 5711a7250658 source/Lib/TLibEncoder/TEncSlice.cpp
> --- a/source/Lib/TLibEncoder/TEncSlice.cpp Wed Jul 31 15:52:35 2013
> +0530
> +++ b/source/Lib/TLibEncoder/TEncSlice.cpp Wed Jul 31 18:19:11 2013
> +0530
> @@ -414,7 +414,7 @@
> for (Int refIdxTemp = 0; refIdxTemp <
> slice->getNumRefIdx(picList); refIdxTemp++)
> {
> // To do: Call the merged IP + weighted frames if weighted
> prediction enabled
> - slice->getRefPic(picList,
> refIdxTemp)->getPicYuvRec()->extendPicBorder(x265::ThreadPool::getThreadPool());
> + slice->m_mref[picList][refIdxTemp] =
> slice->getRefPic(picList,
> refIdxTemp)->getPicYuvRec()->extendPicBorder(x265::ThreadPool::getThreadPool());
> }
> }
>
> diff -r 2a8fb9ec2a10 -r 5711a7250658 source/common/reference.cpp
> --- a/source/common/reference.cpp Wed Jul 31 15:52:35 2013 +0530
> +++ b/source/common/reference.cpp Wed Jul 31 18:19:11 2013 +0530
> @@ -24,6 +24,7 @@
>
> #include "TLibCommon/TypeDef.h"
> #include "TLibCommon/TComPicYuv.h"
> +#include "TLibCommon/TComSlice.h"
> #include "PPA/ppa.h"
> #include "primitives.h"
> #include "reference.h"
> diff -r 2a8fb9ec2a10 -r 5711a7250658 source/common/reference.h
> --- a/source/common/reference.h Wed Jul 31 15:52:35 2013 +0530
> +++ b/source/common/reference.h Wed Jul 31 18:19:11 2013 +0530
> @@ -27,9 +27,10 @@
> #include "primitives.h"
> #include "threading.h"
> #include "threadpool.h"
> -#include "TLibCommon/TComSlice.h"
>
> class TComPicYuv;
> +struct WpScalingParam;
> +typedef WpScalingParam wpScalingParam;
>
> namespace x265 {
> // private x265 namespace
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> http://mailman.videolan.org/listinfo/x265-devel
>
>
--
Steve Borho
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/private/x265-devel/attachments/20130731/75424afe/attachment.html>
More information about the x265-devel
mailing list