[FFmpeg-cvslog] avcodec/mjpegdec: Reinitialize IDCT on BPP changes
ffmpeg | branch: release/2.4 | Michael Niedermayer | Wed Nov 4 21:27:04 2015 +0100| [5d9bee34f9ae5fae996defda0fd9ccd1ca2b1f9c] | committer: Michael Niedermayer avcodec/mjpegdec: Reinitialize IDCT on BPP changes Fixes misaligned access Fixes: dc9262a469f6f315f74c087a7b3a7f35/signal_sigsegv_2e95bcd_9_9c0f9f4a9ba82aa9b3ab2b91ce4d5277.jpg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit cc35f6f4768ffe57cc4fcfa56ecb89aee409e3d5) Conflicts: libavcodec/mjpegdec.c (cherry picked from commit f82c4777ee7a319fe2aa36f413a61943313b4abc) > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5d9bee34f9ae5fae996defda0fd9ccd1ca2b1f9c --- libavcodec/mjpegdec.c | 19 +++ 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 5cea6a6..59cbd25 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -96,6 +96,15 @@ static void parse_avid(MJpegDecodeContext *s, uint8_t *buf, int len) av_log(s->avctx, AV_LOG_INFO, "AVID: len:%d %d\n", len, len > 14 ? buf[12] : -1); } +static void init_idct(AVCodecContext *avctx) +{ +MJpegDecodeContext *s = avctx->priv_data; + +ff_idctdsp_init(&s->idsp, avctx); +ff_init_scantable(s->idsp.idct_permutation, &s->scantable, + ff_zigzag_direct); +} + av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) { MJpegDecodeContext *s = avctx->priv_data; @@ -110,9 +119,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) s->avctx = avctx; ff_blockdsp_init(&s->bdsp, avctx); ff_hpeldsp_init(&s->hdsp, avctx->flags); -ff_idctdsp_init(&s->idsp, avctx); -ff_init_scantable(s->idsp.idct_permutation, &s->scantable, - ff_zigzag_direct); +init_idct(avctx); s->buffer_size = 0; s->buffer= NULL; s->start_code= -1; @@ -254,9 +261,13 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) /* XXX: verify len field validity */ len = get_bits(&s->gb, 16); -s->avctx->bits_per_raw_sample = bits= get_bits(&s->gb, 8); +if (s->avctx->bits_per_raw_sample != bits) { +av_log(s->avctx, AV_LOG_INFO, "Changeing bps to %d\n", bits); +s->avctx->bits_per_raw_sample = bits; +init_idct(s->avctx); +} if (s->pegasus_rct) bits = 9; if (bits == 9 && !s->pegasus_rct) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/mjpegdec: Reinitialize IDCT on BPP changes
ffmpeg | branch: release/2.5 | Michael Niedermayer | Wed Nov 4 21:27:04 2015 +0100| [aed64448d6115f9a845ab3eea0ca279eb9765aa0] | committer: Michael Niedermayer avcodec/mjpegdec: Reinitialize IDCT on BPP changes Fixes misaligned access Fixes: dc9262a469f6f315f74c087a7b3a7f35/signal_sigsegv_2e95bcd_9_9c0f9f4a9ba82aa9b3ab2b91ce4d5277.jpg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit cc35f6f4768ffe57cc4fcfa56ecb89aee409e3d5) Conflicts: libavcodec/mjpegdec.c > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aed64448d6115f9a845ab3eea0ca279eb9765aa0 --- libavcodec/mjpegdec.c | 19 +++ 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index dcaa0df..a1141e7 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -96,6 +96,15 @@ static void parse_avid(MJpegDecodeContext *s, uint8_t *buf, int len) av_log(s->avctx, AV_LOG_INFO, "AVID: len:%d %d\n", len, len > 14 ? buf[12] : -1); } +static void init_idct(AVCodecContext *avctx) +{ +MJpegDecodeContext *s = avctx->priv_data; + +ff_idctdsp_init(&s->idsp, avctx); +ff_init_scantable(s->idsp.idct_permutation, &s->scantable, + ff_zigzag_direct); +} + av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) { MJpegDecodeContext *s = avctx->priv_data; @@ -110,9 +119,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) s->avctx = avctx; ff_blockdsp_init(&s->bdsp, avctx); ff_hpeldsp_init(&s->hdsp, avctx->flags); -ff_idctdsp_init(&s->idsp, avctx); -ff_init_scantable(s->idsp.idct_permutation, &s->scantable, - ff_zigzag_direct); +init_idct(avctx); s->buffer_size = 0; s->buffer= NULL; s->start_code= -1; @@ -254,7 +261,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) /* XXX: verify len field validity */ len = get_bits(&s->gb, 16); -s->avctx->bits_per_raw_sample = bits = get_bits(&s->gb, 8); if (bits > 16 || bits < 1) { @@ -262,6 +268,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) return AVERROR_INVALIDDATA; } +if (s->avctx->bits_per_raw_sample != bits) { +av_log(s->avctx, AV_LOG_INFO, "Changeing bps to %d\n", bits); +s->avctx->bits_per_raw_sample = bits; +init_idct(s->avctx); +} if (s->pegasus_rct) bits = 9; if (bits == 9 && !s->pegasus_rct) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/mjpegdec: Reinitialize IDCT on BPP changes
ffmpeg | branch: release/2.6 | Michael Niedermayer | Wed Nov 4 21:27:04 2015 +0100| [dd6274d904acd0f173dfeb30b469ade5fc953b4e] | committer: Michael Niedermayer avcodec/mjpegdec: Reinitialize IDCT on BPP changes Fixes misaligned access Fixes: dc9262a469f6f315f74c087a7b3a7f35/signal_sigsegv_2e95bcd_9_9c0f9f4a9ba82aa9b3ab2b91ce4d5277.jpg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit cc35f6f4768ffe57cc4fcfa56ecb89aee409e3d5) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dd6274d904acd0f173dfeb30b469ade5fc953b4e --- libavcodec/mjpegdec.c | 19 +++ 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 4e103dd..42767bc 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -96,6 +96,15 @@ static void parse_avid(MJpegDecodeContext *s, uint8_t *buf, int len) av_log(s->avctx, AV_LOG_INFO, "AVID: len:%d %d\n", len, len > 14 ? buf[12] : -1); } +static void init_idct(AVCodecContext *avctx) +{ +MJpegDecodeContext *s = avctx->priv_data; + +ff_idctdsp_init(&s->idsp, avctx); +ff_init_scantable(s->idsp.idct_permutation, &s->scantable, + ff_zigzag_direct); +} + av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) { MJpegDecodeContext *s = avctx->priv_data; @@ -110,9 +119,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) s->avctx = avctx; ff_blockdsp_init(&s->bdsp, avctx); ff_hpeldsp_init(&s->hdsp, avctx->flags); -ff_idctdsp_init(&s->idsp, avctx); -ff_init_scantable(s->idsp.idct_permutation, &s->scantable, - ff_zigzag_direct); +init_idct(avctx); s->buffer_size = 0; s->buffer= NULL; s->start_code= -1; @@ -254,7 +261,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) /* XXX: verify len field validity */ len = get_bits(&s->gb, 16); -s->avctx->bits_per_raw_sample = bits= get_bits(&s->gb, 8); if (bits > 16 || bits < 1) { @@ -262,6 +268,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) return AVERROR_INVALIDDATA; } +if (s->avctx->bits_per_raw_sample != bits) { +av_log(s->avctx, AV_LOG_INFO, "Changeing bps to %d\n", bits); +s->avctx->bits_per_raw_sample = bits; +init_idct(s->avctx); +} if (s->pegasus_rct) bits = 9; if (bits == 9 && !s->pegasus_rct) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/mjpegdec: Reinitialize IDCT on BPP changes
ffmpeg | branch: release/2.7 | Michael Niedermayer | Wed Nov 4 21:27:04 2015 +0100| [32808460cc5d92aacc10ab9150276c752609137b] | committer: Michael Niedermayer avcodec/mjpegdec: Reinitialize IDCT on BPP changes Fixes misaligned access Fixes: dc9262a469f6f315f74c087a7b3a7f35/signal_sigsegv_2e95bcd_9_9c0f9f4a9ba82aa9b3ab2b91ce4d5277.jpg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit cc35f6f4768ffe57cc4fcfa56ecb89aee409e3d5) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=32808460cc5d92aacc10ab9150276c752609137b --- libavcodec/mjpegdec.c | 19 +++ 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index c0b7ef9..30fc99a 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -98,6 +98,15 @@ static void parse_avid(MJpegDecodeContext *s, uint8_t *buf, int len) av_log(s->avctx, AV_LOG_INFO, "AVID: len:%d %d\n", len, len > 14 ? buf[12] : -1); } +static void init_idct(AVCodecContext *avctx) +{ +MJpegDecodeContext *s = avctx->priv_data; + +ff_idctdsp_init(&s->idsp, avctx); +ff_init_scantable(s->idsp.idct_permutation, &s->scantable, + ff_zigzag_direct); +} + av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) { MJpegDecodeContext *s = avctx->priv_data; @@ -112,9 +121,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) s->avctx = avctx; ff_blockdsp_init(&s->bdsp, avctx); ff_hpeldsp_init(&s->hdsp, avctx->flags); -ff_idctdsp_init(&s->idsp, avctx); -ff_init_scantable(s->idsp.idct_permutation, &s->scantable, - ff_zigzag_direct); +init_idct(avctx); s->buffer_size = 0; s->buffer= NULL; s->start_code= -1; @@ -267,7 +274,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) /* XXX: verify len field validity */ len = get_bits(&s->gb, 16); -s->avctx->bits_per_raw_sample = bits= get_bits(&s->gb, 8); if (bits > 16 || bits < 1) { @@ -275,6 +281,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) return AVERROR_INVALIDDATA; } +if (s->avctx->bits_per_raw_sample != bits) { +av_log(s->avctx, AV_LOG_INFO, "Changeing bps to %d\n", bits); +s->avctx->bits_per_raw_sample = bits; +init_idct(s->avctx); +} if (s->pegasus_rct) bits = 9; if (bits == 9 && !s->pegasus_rct) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/mjpegdec: Reinitialize IDCT on BPP changes
ffmpeg | branch: release/2.8 | Michael Niedermayer | Wed Nov 4 21:27:04 2015 +0100| [4567cba0b8b85ce9c4cef1dbf2bbe056ff5dc9e4] | committer: Michael Niedermayer avcodec/mjpegdec: Reinitialize IDCT on BPP changes Fixes misaligned access Fixes: dc9262a469f6f315f74c087a7b3a7f35/signal_sigsegv_2e95bcd_9_9c0f9f4a9ba82aa9b3ab2b91ce4d5277.jpg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer (cherry picked from commit cc35f6f4768ffe57cc4fcfa56ecb89aee409e3d5) Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4567cba0b8b85ce9c4cef1dbf2bbe056ff5dc9e4 --- libavcodec/mjpegdec.c | 19 +++ 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 1fb077a..6c6598f 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -98,6 +98,15 @@ static void parse_avid(MJpegDecodeContext *s, uint8_t *buf, int len) av_log(s->avctx, AV_LOG_INFO, "AVID: len:%d %d\n", len, len > 14 ? buf[12] : -1); } +static void init_idct(AVCodecContext *avctx) +{ +MJpegDecodeContext *s = avctx->priv_data; + +ff_idctdsp_init(&s->idsp, avctx); +ff_init_scantable(s->idsp.idct_permutation, &s->scantable, + ff_zigzag_direct); +} + av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) { MJpegDecodeContext *s = avctx->priv_data; @@ -112,9 +121,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) s->avctx = avctx; ff_blockdsp_init(&s->bdsp, avctx); ff_hpeldsp_init(&s->hdsp, avctx->flags); -ff_idctdsp_init(&s->idsp, avctx); -ff_init_scantable(s->idsp.idct_permutation, &s->scantable, - ff_zigzag_direct); +init_idct(avctx); s->buffer_size = 0; s->buffer= NULL; s->start_code= -1; @@ -267,7 +274,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) /* XXX: verify len field validity */ len = get_bits(&s->gb, 16); -s->avctx->bits_per_raw_sample = bits= get_bits(&s->gb, 8); if (bits > 16 || bits < 1) { @@ -275,6 +281,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) return AVERROR_INVALIDDATA; } +if (s->avctx->bits_per_raw_sample != bits) { +av_log(s->avctx, AV_LOG_INFO, "Changeing bps to %d\n", bits); +s->avctx->bits_per_raw_sample = bits; +init_idct(s->avctx); +} if (s->pegasus_rct) bits = 9; if (bits == 9 && !s->pegasus_rct) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
[FFmpeg-cvslog] avcodec/mjpegdec: Reinitialize IDCT on BPP changes
ffmpeg | branch: master | Michael Niedermayer | Wed Nov 4 21:27:04 2015 +0100| [cc35f6f4768ffe57cc4fcfa56ecb89aee409e3d5] | committer: Michael Niedermayer avcodec/mjpegdec: Reinitialize IDCT on BPP changes Fixes misaligned access Fixes: dc9262a469f6f315f74c087a7b3a7f35/signal_sigsegv_2e95bcd_9_9c0f9f4a9ba82aa9b3ab2b91ce4d5277.jpg Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cc35f6f4768ffe57cc4fcfa56ecb89aee409e3d5 --- libavcodec/mjpegdec.c | 19 +++ 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 6dfe832..ebde12c 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -98,6 +98,15 @@ static void parse_avid(MJpegDecodeContext *s, uint8_t *buf, int len) av_log(s->avctx, AV_LOG_INFO, "AVID: len:%d %d\n", len, len > 14 ? buf[12] : -1); } +static void init_idct(AVCodecContext *avctx) +{ +MJpegDecodeContext *s = avctx->priv_data; + +ff_idctdsp_init(&s->idsp, avctx); +ff_init_scantable(s->idsp.idct_permutation, &s->scantable, + ff_zigzag_direct); +} + av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) { MJpegDecodeContext *s = avctx->priv_data; @@ -112,9 +121,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) s->avctx = avctx; ff_blockdsp_init(&s->bdsp, avctx); ff_hpeldsp_init(&s->hdsp, avctx->flags); -ff_idctdsp_init(&s->idsp, avctx); -ff_init_scantable(s->idsp.idct_permutation, &s->scantable, - ff_zigzag_direct); +init_idct(avctx); s->buffer_size = 0; s->buffer= NULL; s->start_code= -1; @@ -267,7 +274,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) /* XXX: verify len field validity */ len = get_bits(&s->gb, 16); -s->avctx->bits_per_raw_sample = bits= get_bits(&s->gb, 8); if (bits > 16 || bits < 1) { @@ -275,6 +281,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) return AVERROR_INVALIDDATA; } +if (s->avctx->bits_per_raw_sample != bits) { +av_log(s->avctx, AV_LOG_INFO, "Changeing bps to %d\n", bits); +s->avctx->bits_per_raw_sample = bits; +init_idct(s->avctx); +} if (s->pegasus_rct) bits = 9; if (bits == 9 && !s->pegasus_rct) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog