[x265] [PATCH 3 of 7] encoder: introduce an instance to hold the latest param setting in the encoder

Steve Borho steve at borho.org
Tue May 5 18:09:19 CEST 2015


On Tue, May 5, 2015 at 10:51 AM,  <aarthi at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Aarthi Thirumalai
> # Date 1427264624 -19800
> #      Wed Mar 25 11:53:44 2015 +0530
> # Node ID 303a09b9cb9419564804c3b79bca3caa61e07e82
> # Parent  084e7ed97059873201ccb4762eeb9d3a55dd3238
> encoder: introduce an instance to hold the latest param setting in the encoder
>
> this will be used to hold the latest param options when dynamically reconfiguring the encoder parameters
>
> diff -r 084e7ed97059 -r 303a09b9cb94 source/encoder/api.cpp
> --- a/source/encoder/api.cpp    Wed Mar 25 16:30:43 2015 +0530
> +++ b/source/encoder/api.cpp    Wed Mar 25 11:53:44 2015 +0530
> @@ -40,7 +40,8 @@
>          return NULL;
>
>      x265_param *param = X265_MALLOC(x265_param, 1);
> -    if (!param)
> +    x265_param *latestParam = X265_MALLOC(x265_param, 1);
> +    if (!param || !latestParam)
>          return NULL;
>
>      memcpy(param, p, sizeof(x265_param));
> @@ -61,11 +62,11 @@
>
>      // may change params for auto-detect, etc
>      encoder->configure(param);
> -
>      // may change rate control and CPB params
>      if (!enforceLevel(*param, encoder->m_vps))
>      {
>          delete encoder;
> +        x265_param_free(latestParam);

you've inadvertently spotted a memory leak, we should be freeing both
params in all these early outs

>          return NULL;
>      }
>
> @@ -80,9 +81,12 @@
>      }
>
>      encoder->create();
> +    encoder->m_latestParam = latestParam;
> +    memcpy(latestParam, param, sizeof(x265_param));
>      if (encoder->m_aborted)
>      {
>          delete encoder;
> +        x265_param_free(latestParam);
>          return NULL;
>      }
>
> diff -r 084e7ed97059 -r 303a09b9cb94 source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cpp        Wed Mar 25 16:30:43 2015 +0530
> +++ b/source/encoder/encoder.cpp        Wed Mar 25 11:53:44 2015 +0530
> @@ -73,6 +73,7 @@
>      m_outputCount = 0;
>      m_csvfpt = NULL;
>      m_param = NULL;
> +    m_latestParam = NULL;
>      m_cuOffsetY = NULL;
>      m_cuOffsetC = NULL;
>      m_buOffsetY = NULL;
> @@ -376,6 +377,8 @@
>
>          X265_FREE(m_param);
>      }
> +    if (m_latestParam)
> +        X265_FREE(m_latestParam);

no need to check for NULL

>  }
>
>  void Encoder::updateVbvPlan(RateControl* rc)
> diff -r 084e7ed97059 -r 303a09b9cb94 source/encoder/encoder.h
> --- a/source/encoder/encoder.h  Wed Mar 25 16:30:43 2015 +0530
> +++ b/source/encoder/encoder.h  Wed Mar 25 11:53:44 2015 +0530
> @@ -125,6 +125,7 @@
>      uint32_t           m_numDelayedPic;
>
>      x265_param*        m_param;
> +    x265_param*        m_latestParam;
>      RateControl*       m_rateControl;
>      Lookahead*         m_lookahead;
>      Window             m_conformanceWindow;
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel



-- 
Steve Borho


More information about the x265-devel mailing list