[FFmpeg-devel] [GSoC] MLP/TrueHD encoder
Michael Niedermayer
michael at niedermayer.cc
Sun Jul 24 03:54:45 EEST 2016
On Thu, Jul 07, 2016 at 04:58:21AM +0530, Jai Luthra wrote:
> Hi,
>
> This is an update for the TrueHD encoder gsoc project. Any input from the community about work done till now, or for plans ahead, is most welcome :)
>
> The MLP encoder (patch attached) works without any lossless check errors now on most samples I've tested on, both for mono and stereo.
>
> Here's the changelog from ramiro's original version of the encoder: https://github.com/jailuthra/FFmpeg/compare/33c37b86...b4eb87c
>
> The current plan is:
> * Support encoding TrueHD bitstreams through mlpenc.c, just like it's done in mlpdec.c
> * Add multi-channel support
> * Add FATE tests?
> * Send the patch for review and merge
>
> Also while testing how to implement multi-channel support, I noticed that the LFE channel encoding was not lossless for most samples. Any suggestions on how to fix this would be helpful.
>
> Cheers,
> Jai Luthra (darkapex)
commenting on your mlpencoder branch (which is newer) instead of the
patch
> +static int compare_filter_params(ChannelParams *prev_cp, ChannelParams *cp, int filter)
please mark stuff that are not changed as const
same for compare_matrix_params()
this should allow marking restart_best_offset as const i think
> + for (i = 0; i < NUM_FILTERS; i++) {
> + unsigned int size = ctx->number_of_samples;
> + filter_state_buffer[i] = av_malloc(size*sizeof(int32_t));
> + }
> +
> + for (i = 0; i < 8; i++) {
> + filter_state_buffer[FIR][i] = *sample_buffer;
> + filter_state_buffer[IIR][i] = *sample_buffer;
> +
> + sample_buffer += ctx->num_channels;
> + }
Missing malloc failure check
> diff --git a/libavcodec/ra144enc.c b/libavcodec/ra144enc.c
> index d3a7fff..cc4f381 100644
> --- a/libavcodec/ra144enc.c
> +++ b/libavcodec/ra144enc.c
> @@ -475,7 +475,7 @@ static int ra144_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
>
> ff_lpc_calc_coefs(&ractx->lpc_ctx, lpc_data, NBLOCKS * BLOCKSIZE, LPC_ORDER,
> LPC_ORDER, 16, lpc_coefs, shift, FF_LPC_TYPE_LEVINSON,
> - 0, ORDER_METHOD_EST, 12, 0);
> + 0, ORDER_METHOD_EST, 0, 12, 0);
> for (i = 0; i < LPC_ORDER; i++)
> block_coefs[NBLOCKS - 1][i] = -(lpc_coefs[LPC_ORDER - 1][i] <<
> (12 - shift[LPC_ORDER - 1]));
A change to ff_lpc_calc_coefs / lpc/flac / .... should be in a seperate
patch
more generally, is everything going acording to plan ?
anything that you need help with ?
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
It is dangerous to be right in matters on which the established authorities
are wrong. -- Voltaire
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160724/dae09ced/attachment.sig>
More information about the ffmpeg-devel
mailing list