From e9fa3bf0e7471123cdb63f3267b7fb58df40143a Mon Sep 17 00:00:00 2001 From: Kitae Kim Date: Mon, 17 Feb 2014 11:47:43 +0900 Subject: [PATCH] brillcodec: fix segv problem on 64bit and Windows. The size of defined structure can be different on each OS. That's why it causes seg problem on 64bit and Windows. Change-Id: If6156c480b0cfe1ed13b891dbbb5296e3338a094 Signed-off-by: Kitae Kim --- tizen/src/hw/maru_brill_codec.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tizen/src/hw/maru_brill_codec.c b/tizen/src/hw/maru_brill_codec.c index 24c166d..35262f5 100644 --- a/tizen/src/hw/maru_brill_codec.c +++ b/tizen/src/hw/maru_brill_codec.c @@ -991,8 +991,10 @@ static void read_codec_init_data(AVCodecContext *avctx, uint8_t *mem_buf) size = sizeof(video); serialize_video_data(&video, avctx); - memcpy(&audio, mem_buf + size, sizeof(audio)); - size += sizeof(audio); + memcpy(&audio, mem_buf + size, sizeof(int32_t) * 7); + size += (sizeof(int32_t) * 7); + memcpy(&audio.channel_layout, mem_buf + size, sizeof(audio.channel_layout)); + size += sizeof(audio.channel_layout); serialize_audio_data(&audio, avctx); memcpy(&bitrate, mem_buf + size, sizeof(bitrate)); @@ -1006,8 +1008,9 @@ static void read_codec_init_data(AVCodecContext *avctx, uint8_t *mem_buf) memcpy(&avctx->extradata_size, mem_buf + size, sizeof(avctx->extradata_size)); size += sizeof(avctx->extradata_size); + TRACE("extradata size: %d.\n", avctx->extradata_size); + if (avctx->extradata_size > 0) { - TRACE("extradata size: %d.\n", avctx->extradata_size); avctx->extradata = av_mallocz(ROUND_UP_X(avctx->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE, 4)); -- 2.7.4