Re: [FFmpeg-devel] [PATCH 3/4 v3] avcodec/vc1: rewrite vc1_decode_i_blocks to align with VC-1 spec
2018-06-18 1:00 GMT+02:00, Michael Niedermayer : > On Tue, Jun 12, 2018 at 11:34:58AM +0200, Jerome Borsboom wrote: >> Change vc1_decode_i_blocks to use vc1_put_blocks_clamped and >> ff_vc1_i_loop_filter. >> >> Signed-off-by: Jerome Borsboom >> --- >> The v3 patch should resolve the crashing that was seen on corrupted source >> files. > > This (commit 77a3dfb328df535fb98d43ed2204fc6a42d6dd5e) broke fate Should be fixed, sorry for the mess. Carl Eugen ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 3/4 v3] avcodec/vc1: rewrite vc1_decode_i_blocks to align with VC-1 spec
Commit 2065317db6dc3a219f8ed2de427fe7e19e02eb68 is the initial version of the patch. The devel-mailing has a v2 version: '[PATCH 2/4 v2] avcodec/vc1: add Simple and Main profile to vc1_put_signed_blocks_clamped' dated Fri Jun 8 12:01:26 EEST 2018. Regards, Jerome On 18-6-2018 1:00, Michael Niedermayer wrote: > On Tue, Jun 12, 2018 at 11:34:58AM +0200, Jerome Borsboom wrote: >> Change vc1_decode_i_blocks to use vc1_put_blocks_clamped and >> ff_vc1_i_loop_filter. >> >> Signed-off-by: Jerome Borsboom >> --- >> The v3 patch should resolve the crashing that was seen on corrupted source >> files. > > This (commit 77a3dfb328df535fb98d43ed2204fc6a42d6dd5e) broke fate > that is fate-mss2-wmv > fate-suite//mss2/msscreencodec.wmv with this shows a large green column and > checksums > changed > > --- ./tests/ref/fate/mss2-wmv 2018-06-15 22:31:04.412555973 +0200 > +++ tests/data/fate/mss2-wmv 2018-06-18 00:54:56.484378249 +0200 > @@ -36,70 +36,70 @@ > 0, 36, 36,1, 230400, 0x08bb41ee > 0, 37, 37,1, 230400, 0x43ccbd29 > 0, 38, 38,1, 230400, 0x4ee3 > -0, 39, 39,1, 230400, 0xbfd2ef29 > -0, 40, 40,1, 230400, 0x6504545f > -0, 41, 41,1, 230400, 0x8fb86901 > +0, 39, 39,1, 230400, 0x527879e5 > +0, 40, 40,1, 230400, 0x1cc7e329 > +0, 41, 41,1, 230400, 0xde1706ab > 0, 42, 42,1, 230400, 0xc95f0917 > -0, 43, 43,1, 230400, 0x21f6a54b > -0, 44, 44,1, 230400, 0xf808106b > -0, 45, 45,1, 230400, 0x34150020 > -0, 46, 46,1, 230400, 0x50fdfe89 > +0, 43, 43,1, 230400, 0x81353456 > +0, 44, 44,1, 230400, 0x8a15a752 > +0, 45, 45,1, 230400, 0xede88dbb > +0, 46, 46,1, 230400, 0xb22fa577 > 0, 47, 47,1, 230400, 0x920b7708 > -0, 48, 48,1, 230400, 0xed64fcc4 > -0, 49, 49,1, 230400, 0x6291a170 > -0, 50, 50,1, 230400, 0x20524643 > +0, 48, 48,1, 230400, 0x581c924c > +0, 49, 49,1, 230400, 0x18952c56 > +0, 50, 50,1, 230400, 0x45d9e3f3 > 0, 51, 51,1, 230400, 0x92aafecd > -0, 52, 52,1, 230400, 0xf00ee14d > -0, 53, 53,1, 230400, 0xfa3113ea > -0, 54, 54,1, 230400, 0x99c06df1 > -0, 55, 55,1, 230400, 0x625c6918 > +0, 52, 52,1, 230400, 0x1f789647 > +0, 53, 53,1, 230400, 0x12ba8c93 > +0, 54, 54,1, 230400, 0x6aabb970 > +0, 55, 55,1, 230400, 0x1b3e003d > 0, 56, 56,1, 230400, 0xb277b25e > -0, 57, 57,1, 230400, 0x2e913006 > -0, 58, 58,1, 230400, 0x3f6f1d99 > -0, 59, 59,1, 230400, 0x100ab60f > +0, 57, 57,1, 230400, 0x511eb729 > +0, 58, 58,1, 230400, 0x7328a657 > +0, 59, 59,1, 230400, 0xfa2d5eed > 0, 60, 60,1, 230400, 0x9b73d0bf > -0, 61, 61,1, 230400, 0xda0df2ce > -0, 62, 62,1, 230400, 0x67f7ca24 > -0, 63, 63,1, 230400, 0xbde9b3d0 > -0, 64, 64,1, 230400, 0x92e14d07 > +0, 61, 61,1, 230400, 0xd5698c41 > +0, 62, 62,1, 230400, 0xa9c332d7 > +0, 63, 63,1, 230400, 0x22451f10 > +0, 64, 64,1, 230400, 0x6fc0b571 > 0, 65, 65,1, 230400, 0x9426c3d9 > -0, 66, 66,1, 230400, 0x6104be70 > -0, 67, 67,1, 230400, 0xc4d1078a > -0, 68, 68,1, 230400, 0x89426a42 > -0, 69, 69,1, 230400, 0x5271324a > +0, 66, 66,1, 230400, 0x375932bf > +0, 67, 67,1, 230400, 0xaf3f9d2e > +0, 68, 68,1, 230400, 0xefced725 > +0, 69, 69,1, 230400, 0xaa85d8b3 > 0, 70, 70,1, 230400, 0x1cb1c735 > -0, 71, 71,1, 230400, 0x4249b8c6 > -0, 72, 72,1, 230400, 0x4b88cad3 > -0, 73, 73,1, 230400, 0x76af545d > +0, 71, 71,1, 230400, 0xe2805640 > +0, 72, 72,1, 230400, 0xe6a22093 > +0, 73, 73,1, 230400, 0xa95ddab7 > 0,
Re: [FFmpeg-devel] [PATCH 3/4 v3] avcodec/vc1: rewrite vc1_decode_i_blocks to align with VC-1 spec
On Tue, Jun 12, 2018 at 11:34:58AM +0200, Jerome Borsboom wrote: > Change vc1_decode_i_blocks to use vc1_put_blocks_clamped and > ff_vc1_i_loop_filter. > > Signed-off-by: Jerome Borsboom > --- > The v3 patch should resolve the crashing that was seen on corrupted source > files. This (commit 77a3dfb328df535fb98d43ed2204fc6a42d6dd5e) broke fate that is fate-mss2-wmv fate-suite//mss2/msscreencodec.wmv with this shows a large green column and checksums changed --- ./tests/ref/fate/mss2-wmv 2018-06-15 22:31:04.412555973 +0200 +++ tests/data/fate/mss2-wmv2018-06-18 00:54:56.484378249 +0200 @@ -36,70 +36,70 @@ 0, 36, 36,1, 230400, 0x08bb41ee 0, 37, 37,1, 230400, 0x43ccbd29 0, 38, 38,1, 230400, 0x4ee3 -0, 39, 39,1, 230400, 0xbfd2ef29 -0, 40, 40,1, 230400, 0x6504545f -0, 41, 41,1, 230400, 0x8fb86901 +0, 39, 39,1, 230400, 0x527879e5 +0, 40, 40,1, 230400, 0x1cc7e329 +0, 41, 41,1, 230400, 0xde1706ab 0, 42, 42,1, 230400, 0xc95f0917 -0, 43, 43,1, 230400, 0x21f6a54b -0, 44, 44,1, 230400, 0xf808106b -0, 45, 45,1, 230400, 0x34150020 -0, 46, 46,1, 230400, 0x50fdfe89 +0, 43, 43,1, 230400, 0x81353456 +0, 44, 44,1, 230400, 0x8a15a752 +0, 45, 45,1, 230400, 0xede88dbb +0, 46, 46,1, 230400, 0xb22fa577 0, 47, 47,1, 230400, 0x920b7708 -0, 48, 48,1, 230400, 0xed64fcc4 -0, 49, 49,1, 230400, 0x6291a170 -0, 50, 50,1, 230400, 0x20524643 +0, 48, 48,1, 230400, 0x581c924c +0, 49, 49,1, 230400, 0x18952c56 +0, 50, 50,1, 230400, 0x45d9e3f3 0, 51, 51,1, 230400, 0x92aafecd -0, 52, 52,1, 230400, 0xf00ee14d -0, 53, 53,1, 230400, 0xfa3113ea -0, 54, 54,1, 230400, 0x99c06df1 -0, 55, 55,1, 230400, 0x625c6918 +0, 52, 52,1, 230400, 0x1f789647 +0, 53, 53,1, 230400, 0x12ba8c93 +0, 54, 54,1, 230400, 0x6aabb970 +0, 55, 55,1, 230400, 0x1b3e003d 0, 56, 56,1, 230400, 0xb277b25e -0, 57, 57,1, 230400, 0x2e913006 -0, 58, 58,1, 230400, 0x3f6f1d99 -0, 59, 59,1, 230400, 0x100ab60f +0, 57, 57,1, 230400, 0x511eb729 +0, 58, 58,1, 230400, 0x7328a657 +0, 59, 59,1, 230400, 0xfa2d5eed 0, 60, 60,1, 230400, 0x9b73d0bf -0, 61, 61,1, 230400, 0xda0df2ce -0, 62, 62,1, 230400, 0x67f7ca24 -0, 63, 63,1, 230400, 0xbde9b3d0 -0, 64, 64,1, 230400, 0x92e14d07 +0, 61, 61,1, 230400, 0xd5698c41 +0, 62, 62,1, 230400, 0xa9c332d7 +0, 63, 63,1, 230400, 0x22451f10 +0, 64, 64,1, 230400, 0x6fc0b571 0, 65, 65,1, 230400, 0x9426c3d9 -0, 66, 66,1, 230400, 0x6104be70 -0, 67, 67,1, 230400, 0xc4d1078a -0, 68, 68,1, 230400, 0x89426a42 -0, 69, 69,1, 230400, 0x5271324a +0, 66, 66,1, 230400, 0x375932bf +0, 67, 67,1, 230400, 0xaf3f9d2e +0, 68, 68,1, 230400, 0xefced725 +0, 69, 69,1, 230400, 0xaa85d8b3 0, 70, 70,1, 230400, 0x1cb1c735 -0, 71, 71,1, 230400, 0x4249b8c6 -0, 72, 72,1, 230400, 0x4b88cad3 -0, 73, 73,1, 230400, 0x76af545d +0, 71, 71,1, 230400, 0xe2805640 +0, 72, 72,1, 230400, 0xe6a22093 +0, 73, 73,1, 230400, 0xa95ddab7 0, 74, 74,1, 230400, 0xfe47e3c4 -0, 75, 75,1, 230400, 0xa2e0e721 -0, 76, 76,1, 230400, 0xde974a42 -0, 77, 77,1, 230400, 0x87bf38ba -0, 78, 78,1, 230400, 0xd52318fd -0, 79, 79,1, 230400, 0x0bbb1526 +0, 75, 75,1, 230400, 0xed3970ea +0, 76, 76,1, 230400, 0x2ba6ee17 +0,
Re: [FFmpeg-devel] [PATCH 3/4 v3] avcodec/vc1: rewrite vc1_decode_i_blocks to align with VC-1 spec
Change vc1_decode_i_blocks to use vc1_put_blocks_clamped and ff_vc1_i_loop_filter. Signed-off-by: Jerome Borsboom --- The v3 patch should resolve the crashing that was seen on corrupted source files. libavcodec/vc1_block.c | 79 +++--- 1 file changed, 30 insertions(+), 49 deletions(-) diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c index 1dc8c6422d..c620566f78 100644 --- a/libavcodec/vc1_block.c +++ b/libavcodec/vc1_block.c @@ -2537,30 +2537,28 @@ static void vc1_decode_i_blocks(VC1Context *v) s->mb_x = s->mb_y = 0; s->mb_intra = 1; s->first_slice_line = 1; -for (s->mb_y = 0; s->mb_y < s->end_mb_y; s->mb_y++) { +for (s->mb_y = s->start_mb_y; s->mb_y < s->end_mb_y; s->mb_y++) { s->mb_x = 0; init_block_index(v); for (; s->mb_x < v->end_mb_x; s->mb_x++) { -uint8_t *dst[6]; +int16_t (*block)[64] = v->block[v->cur_blk_idx]; ff_update_block_index(s); -dst[0] = s->dest[0]; -dst[1] = dst[0] + 8; -dst[2] = s->dest[0] + s->linesize * 8; -dst[3] = dst[2] + 8; -dst[4] = s->dest[1]; -dst[5] = s->dest[2]; -s->bdsp.clear_blocks(s->block[0]); +s->bdsp.clear_blocks(block[0]); mb_pos = s->mb_x + s->mb_y * s->mb_width; s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA; s->current_picture.qscale_table[mb_pos]= v->pq; -s->current_picture.motion_val[1][s->block_index[0]][0] = 0; -s->current_picture.motion_val[1][s->block_index[0]][1] = 0; +for (int i = 0; i < 4; i++) { +s->current_picture.motion_val[1][s->block_index[i]][0] = 0; +s->current_picture.motion_val[1][s->block_index[i]][1] = 0; +} // do actual MB decoding and displaying cbp = get_vlc2(>s.gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2); v->s.ac_pred = get_bits1(>s.gb); for (k = 0; k < 6; k++) { +v->mb_type[0][s->block_index[k]] = 1; + val = ((cbp >> (5 - k)) & 1); if (k < 4) { @@ -2570,52 +2568,30 @@ static void vc1_decode_i_blocks(VC1Context *v) } cbp |= val << (5 - k); -vc1_decode_i_block(v, s->block[k], k, val, (k < 4) ? v->codingset : v->codingset2); +vc1_decode_i_block(v, block[k], k, val, (k < 4) ? v->codingset : v->codingset2); if (CONFIG_GRAY && k > 3 && (s->avctx->flags & AV_CODEC_FLAG_GRAY)) continue; -v->vc1dsp.vc1_inv_trans_8x8(s->block[k]); -if (v->pq >= 9 && v->overlap) { -if (v->rangeredfrm) +v->vc1dsp.vc1_inv_trans_8x8(block[k]); +} + +if (v->overlap && v->pq >= 9) { +ff_vc1_i_overlap_filter(v); +if (v->rangeredfrm) +for (k = 0; k < 6; k++) for (j = 0; j < 64; j++) -s->block[k][j] <<= 1; -s->idsp.put_signed_pixels_clamped(s->block[k], dst[k], - k & 4 ? s->uvlinesize -: s->linesize); -} else { -if (v->rangeredfrm) +block[k][j] <<= 1; +vc1_put_blocks_clamped(v, 1); +} else { +if (v->rangeredfrm) +for (k = 0; k < 6; k++) for (j = 0; j < 64; j++) -s->block[k][j] = (s->block[k][j] - 64) << 1; -s->idsp.put_pixels_clamped(s->block[k], dst[k], - k & 4 ? s->uvlinesize - : s->linesize); -} +block[k][j] = (block[k][j] - 64) << 1; +vc1_put_blocks_clamped(v, 0); } -if (v->pq >= 9 && v->overlap) { -if (s->mb_x) { -v->vc1dsp.vc1_h_overlap(s->dest[0], s->linesize); -v->vc1dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize, s->linesize); -if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { -v->vc1dsp.vc1_h_overlap(s->dest[1], s->uvlinesize); -v->vc1dsp.vc1_h_overlap(s->dest[2], s->uvlinesize); -} -} -v->vc1dsp.vc1_h_overlap(s->dest[0] + 8, s->linesize); -v->vc1dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize); -if (!s->first_slice_line) { -v->vc1dsp.vc1_v_overlap(s->dest[0], s->linesize); -