Re: [FFmpeg-devel] [PATCH 3/4 v3] avcodec/vc1: rewrite vc1_decode_i_blocks to align with VC-1 spec

2018-06-18 Thread Carl Eugen Hoyos
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

2018-06-18 Thread Jerome Borsboom
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

2018-06-17 Thread 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
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

2018-06-12 Thread Jerome Borsboom
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);
-