From ab9c00b992c4d077815ccaf981b58f2ee3c9a00c Mon Sep 17 00:00:00 2001 From: Anssi Hannula Date: Fri, 28 Oct 2011 13:43:13 +0300 Subject: [PATCH] spdifenc: use special alignment for DTS-HD length_code Align IEC 61937 length_code for DTS-HD so that (length_code & 0xf) == 0x8. This is reportedly needed with some receivers. Signed-off-by: Anssi Hannula --- libavformat/spdifenc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/spdifenc.c b/libavformat/spdifenc.c index 53aa27c446..05b3879d45 100644 --- a/libavformat/spdifenc.c +++ b/libavformat/spdifenc.c @@ -220,7 +220,10 @@ static int spdif_header_dts4(AVFormatContext *s, AVPacket *pkt, int core_size, } ctx->out_bytes = sizeof(dtshd_start_code) + 2 + pkt_size; - ctx->length_code = ctx->out_bytes; + + /* Align so that (length_code & 0xf) == 0x8. This is reportedly needed + * with some receivers, but the exact requirement is unconfirmed. */ + ctx->length_code = FFALIGN(ctx->out_bytes + 0x8, 0x10) - 0x8; av_fast_malloc(&ctx->hd_buf, &ctx->hd_buf_size, ctx->out_bytes); if (!ctx->hd_buf)