2017-11-01 18:31 GMT+01:00 Hendrik Leppkes <h.lepp...@gmail.com>: > On Wed, Nov 1, 2017 at 6:25 PM, Carl Eugen Hoyos <ceffm...@gmail.com> wrote: >> 2017-11-01 18:16 GMT+01:00 Hendrik Leppkes <h.lepp...@gmail.com>: >>> On Wed, Nov 1, 2017 at 5:16 PM, Carl Eugen Hoyos <ceffm...@gmail.com> wrote: >>>> Hi! >>>> >>>> Attached patch silences two gcc warnings, no sample for odd channel count >>>> found. >>>> >>>> #if HAVE_BIGENDIAN >>>> - bytestream2_get_buffer(&gb, dst16, avctx->channels * >>>> 2); >>>> - dst16 += avctx->channels; >>>> + uint8_t *dst = frame->data[0]; >>>> + bytestream2_get_buffer(&gb, frame->data[0], >>>> avctx->channels * 2); >>>> + dst += avctx->channels * 2; >>>> #else >>>> channel = avctx->channels; >>>> do { >>> >>> This hunk seems fishy. dst is only ever set, never read, and this code >>> is executed in a loop but always writes to the same position. >> >> I had sent the wrong version, please review this one. > > That still won't work, dst is declared within the loop, so its reset > back to the start at the beginning of the frame each iteration.
New try attached. Thank you, Carl Eugen
From 37cdd3738a68090330611e4f5aa666f8213b5a95 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos <ceffm...@gmail.com> Date: Wed, 1 Nov 2017 18:59:26 +0100 Subject: [PATCH] lavc/pcm-bluray: Do not use incompatible pointers on big-endian. Fixes the following gcc warnings: libavcodec/pcm-bluray.c:172:45: warning: passing argument 2 of 'bytestream2_get_buffer' from incompatible pointer type libavcodec/pcm-bluray.c:192:49: warning: passing argument 2 of 'bytestream2_get_buffer' from incompatible pointer type --- libavcodec/pcm-bluray.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/pcm-bluray.c b/libavcodec/pcm-bluray.c index 517d7b5..91bcfb1 100644 --- a/libavcodec/pcm-bluray.c +++ b/libavcodec/pcm-bluray.c @@ -169,7 +169,7 @@ static int pcm_bluray_decode_frame(AVCodecContext *avctx, void *data, samples *= num_source_channels; if (AV_SAMPLE_FMT_S16 == avctx->sample_fmt) { #if HAVE_BIGENDIAN - bytestream2_get_buffer(&gb, dst16, buf_size); + bytestream2_get_buffer(&gb, frame->data[0], buf_size); #else do { *dst16++ = bytestream2_get_be16u(&gb); @@ -187,10 +187,11 @@ static int pcm_bluray_decode_frame(AVCodecContext *avctx, void *data, case AV_CH_LAYOUT_2_1: case AV_CH_LAYOUT_5POINT0: if (AV_SAMPLE_FMT_S16 == avctx->sample_fmt) { + uint8_t av_unused *dst = frame->data[0]; do { #if HAVE_BIGENDIAN - bytestream2_get_buffer(&gb, dst16, avctx->channels * 2); - dst16 += avctx->channels; + bytestream2_get_buffer(&gb, dst, avctx->channels * 2); + dst += avctx->channels * 2; #else channel = avctx->channels; do { -- 1.7.10.4
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel