ffmpeg | branch: master | Vittorio Giovara <[email protected]> | Tue Apr 28 15:50:39 2015 +0100| [f5ba67ee1342b7741200ff637fc3ea3387b68a1b] | committer: Vittorio Giovara
flacenc: Move a scratch buffer to struct used by the function This avoids allocating/freeing memory at every function call, checking its return value, and carrying the error around. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f5ba67ee1342b7741200ff637fc3ea3387b68a1b --- 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]; } _______________________________________________ ffmpeg-cvslog mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
