On 28/04/15 16:50, Vittorio Giovara wrote:
> This avoids allocating memory at every function call, checking its
> return value, and carry the error around.
> ---
> libavcodec/flacenc.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c
> index 2277cf3..804333d 100644
> --- a/libavcodec/flacenc.c
> +++ b/libavcodec/flacenc.c
> @@ -67,6 +67,7 @@ typedef struct RiceContext {
> enum CodingMode coding_mode;
> int porder;
> int params[MAX_PARTITIONS];
> + uint32_t udata[FLAC_MAX_BLOCKSIZE];
> } RiceContext;
>
> typedef struct FlacSubframe {
> @@ -616,7 +617,6 @@ static uint64_t calc_rice_params(RiceContext *rc, int
> pmin, int pmax,
> uint64_t bits[MAX_PARTITION_ORDER+1];
> int opt_porder;
> RiceContext tmp_rc;
> - uint32_t *udata;
> uint64_t sums[MAX_PARTITION_ORDER + 1][MAX_PARTITIONS] = { { 0 } };
>
> assert(pmin >= 0 && pmin <= MAX_PARTITION_ORDER);
> @@ -625,11 +625,10 @@ static uint64_t calc_rice_params(RiceContext *rc, int
> pmin, int pmax,
>
> tmp_rc.coding_mode = rc->coding_mode;
>
> - udata = av_malloc(n * sizeof(uint32_t));
> for (i = 0; i < n; i++)
> - udata[i] = (2*data[i]) ^ (data[i]>>31);
> + rc->udata[i] = (2 * data[i]) ^ (data[i] >> 31);
>
> - calc_sums(pmin, pmax, udata, n, pred_order, sums);
> + calc_sums(pmin, pmax, rc->udata, n, pred_order, sums);
>
> opt_porder = pmin;
> bits[pmin] = UINT32_MAX;
> @@ -641,7 +640,6 @@ static uint64_t calc_rice_params(RiceContext *rc, int
> pmin, int pmax,
> }
> }
>
> - av_freep(&udata);
> return bits[opt_porder];
> }
>
>
Fine for me if oracles is happy after the change (and we have a test for
encoding flac).
lu
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel