From patchwork Mon Jul 4 03:17:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chen, Wenbin" X-Patchwork-Id: 36638 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp2560674pzh; Sun, 3 Jul 2022 20:22:19 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uRf0myOu4nSQMX2MfCTy08n0aCxXFOAGFUNVGcNSPX4S+rhRVz0vwzxlM+vg7fODC4bi0y X-Received: by 2002:a17:906:b7c7:b0:722:fce6:4898 with SMTP id fy7-20020a170906b7c700b00722fce64898mr26625102ejb.320.1656904939077; Sun, 03 Jul 2022 20:22:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656904939; cv=none; d=google.com; s=arc-20160816; b=sSVWs+Gc8ciYxCPh47zkuVqIa4jiDdM7DiXPojXW3M2hPGmXaX43HyWHFrvzk6XPny ihMpzkZnK79p5BRZcwgt8/9GANG/nOO4D4t/BjpfCOUDcjmdOi4wDQvvibDpJ7BpGOUu O32lbdGgddsRLhnYMaFGNQUwn19glYh2rtZeQUsKk7dFK89yQl1wSgVnKkCgoYSa3d2o C8yumUsNDpnaTdzQlP991gbW+61FEziE47lbIOiWbWsuy4JOStQNvOSMotiYyi5iYJXP 5yvOQfrB9fvqneRNez5VHUW+0FuS3sFCQa7d+GWu+eYARePF6HvwjRiWjTSokr3mn/Hy ryCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=UcyqWp4PkU0iV07YjaeFsJ8cSyFNPxVmhjtqdUR5Wz8=; b=hrz85PuVBFRlCZ4dysTXC366hrcCQmOFCeutGZF0GK5Zv1Z0Y4oLZonamvlSmUw3BO /9be0ybZY0nS682AZ+YY4UctB8da1nqQxlPv6VK9MX5p12oEvTns+HdhU6V4h6LSJVZF wUojAdhMdEz8aJ1HqovUIzn/f0X5xHyXa1U5jEvCFoxbS17ftgmOyBUPNZ+fkvP6o1u8 a5matPSgPVSkjZG9k4H3M6kzGcYHeKR0MZAVI5fpDMXFuMwVkOcEqXT5GaQhaZ2fu4vo j4GeXaPRJlEKVUH41kaY3nmC8h+9OkXgxww/PloUjbVQmIMRQxjhzNuPPeGs4czTx62O mH1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="K+L/Cl2u"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gn9-20020a1709070d0900b00722e89ba02bsi14216885ejc.736.2022.07.03.20.22.18; Sun, 03 Jul 2022 20:22:19 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="K+L/Cl2u"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 83C7968B7E7; Mon, 4 Jul 2022 06:22:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 04AC168B95E for ; Mon, 4 Jul 2022 06:22:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656904932; x=1688440932; h=from:to:subject:date:message-id:mime-version: content-transfer-encoding; bh=fAKU+66arBgHOqYiXG4FXZhHwxFdgZGbna6cWucyzjI=; b=K+L/Cl2u8gjAKMdGbF2gtpeg/0BYpVtDMLIFcCZLKV3/bDw2WAOGE+sZ ikRqovKhpDzywsCEES8iJZgjvRG/5ATf3jFqKoGHQhPIF+oQjJ7+OPRX1 gPMY1UiwPLHgfXfL9EL5XvEDDU6OPcc0iKUA/McPhL56hxrDRcvMZrTul hDEv5TIXWNlnBLPD5rcFtvurVJwHHIpoxie6N/SMEs2BkbyBPwCqx3Gs3 sfWt3jYNBl2JDXFq2eu0WWdvlLwbHUb3i+y9KMx/rha63CIlpfvTX0kIB xdkpKNceYWtjJxwEqEnAyxXErRyK3O4W0TJXI486gCUdL+V7tXjBYiHhu g==; X-IronPort-AV: E=McAfee;i="6400,9594,10397"; a="283051047" X-IronPort-AV: E=Sophos;i="5.92,243,1650956400"; d="scan'208";a="283051047" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jul 2022 20:22:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,243,1650956400"; d="scan'208";a="695179989" Received: from wenbin-z390-aorus-ultra.sh.intel.com ([10.239.35.4]) by fmsmga002.fm.intel.com with ESMTP; 03 Jul 2022 20:22:02 -0700 From: Wenbin Chen To: ffmpeg-devel@ffmpeg.org Date: Mon, 4 Jul 2022 11:17:34 +0800 Message-Id: <20220704031735.2371948-1-wenbin.chen@intel.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/2] libavcodec/mpegvideo_enc: Fix a chroma mb size error in sse_mb() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HFp3dw/gbT1m For 422 frames we should not use hard coded 8 to calculate mb size for uv plane. Chroma shift should be taken into consideration to be compatiple with different sampling format. The error is reported by fate test when av_cpu_max_align() return 64 on the platform supporting AVX512. This is a hidden error and it is exposed after commit 17a59a634c39b00a680c6ebbaea58db95594d13d. mpeg2enc has a mechanism to reuse frames. When it computes SSE (sum of squared error) on current mb, reconstructed mb will be wrote to the previous mb space, so that the memory can be saved. However if the align is 64, the frame is shared in somewhere else, so the frame cannot be reused and a new frame to store reconstrued data is created. Because the height of mb is wrong when compute sse on 422 frame, starting from the second line of macro block, changed data is read when frame is reused (we need to read row 16 rather than row 8 if frame is 422), and unchanged data is read when frame is not reused (a new frame is created so the original frame will not be changed). That is why commit 17a59a634c39b00a680c6ebbaea58db95594d13d exposes this issue, because it add av_cpu_max_align() and this function return 64 on platform supporting AVX512 which lead to creating a frame in mpeg2enc, and this lead to the different outputs. Signed-off-by: Wenbin Chen --- libavcodec/mpegvideo_enc.c | 20 +++++++++---- tests/ref/seek/vsynth_lena-mpeg2-422 | 40 +++++++++++++------------- tests/ref/vsynth/vsynth1-mpeg2-422 | 8 +++--- tests/ref/vsynth/vsynth2-mpeg2-422 | 8 +++--- tests/ref/vsynth/vsynth3-mpeg2-422 | 8 +++--- tests/ref/vsynth/vsynth_lena-mpeg2-422 | 8 +++--- 6 files changed, 50 insertions(+), 42 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index d6a85a037a..970f71fe37 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -2558,6 +2558,8 @@ static int sse(MpegEncContext *s, uint8_t *src1, uint8_t *src2, int w, int h, in static int sse_mb(MpegEncContext *s){ int w= 16; int h= 16; + int chroma_mb_w = w >> s->chroma_x_shift; + int chroma_mb_h = h >> s->chroma_y_shift; if(s->mb_x*16 + 16 > s->width ) w= s->width - s->mb_x*16; if(s->mb_y*16 + 16 > s->height) h= s->height- s->mb_y*16; @@ -2565,17 +2567,23 @@ static int sse_mb(MpegEncContext *s){ if(w==16 && h==16) if(s->avctx->mb_cmp == FF_CMP_NSSE){ return s->mecc.nsse[0](s, s->new_picture->data[0] + s->mb_x * 16 + s->mb_y * s->linesize * 16, s->dest[0], s->linesize, 16) + - s->mecc.nsse[1](s, s->new_picture->data[1] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[1], s->uvlinesize, 8) + - s->mecc.nsse[1](s, s->new_picture->data[2] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[2], s->uvlinesize, 8); + s->mecc.nsse[1](s, s->new_picture->data[1] + s->mb_x * chroma_mb_w + s->mb_y * s->uvlinesize * chroma_mb_h, + s->dest[1], s->uvlinesize, chroma_mb_h) + + s->mecc.nsse[1](s, s->new_picture->data[2] + s->mb_x * chroma_mb_w + s->mb_y * s->uvlinesize * chroma_mb_h, + s->dest[2], s->uvlinesize, chroma_mb_h); }else{ return s->mecc.sse[0](NULL, s->new_picture->data[0] + s->mb_x * 16 + s->mb_y * s->linesize * 16, s->dest[0], s->linesize, 16) + - s->mecc.sse[1](NULL, s->new_picture->data[1] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[1], s->uvlinesize, 8) + - s->mecc.sse[1](NULL, s->new_picture->data[2] + s->mb_x * 8 + s->mb_y * s->uvlinesize * 8, s->dest[2], s->uvlinesize, 8); + s->mecc.sse[1](NULL, s->new_picture->data[1] + s->mb_x * chroma_mb_w + s->mb_y * s->uvlinesize * chroma_mb_h, + s->dest[1], s->uvlinesize, chroma_mb_h) + + s->mecc.sse[1](NULL, s->new_picture->data[2] + s->mb_x * chroma_mb_w + s->mb_y * s->uvlinesize * chroma_mb_h, + s->dest[2], s->uvlinesize, chroma_mb_h); } else return sse(s, s->new_picture->data[0] + s->mb_x*16 + s->mb_y*s->linesize*16, s->dest[0], w, h, s->linesize) - +sse(s, s->new_picture->data[1] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[1], w>>1, h>>1, s->uvlinesize) - +sse(s, s->new_picture->data[2] + s->mb_x*8 + s->mb_y*s->uvlinesize*8,s->dest[2], w>>1, h>>1, s->uvlinesize); + +sse(s, s->new_picture->data[1] + s->mb_x * chroma_mb_w + s->mb_y * s->uvlinesize * chroma_mb_h, + s->dest[1], w >> s->chroma_x_shift, h >> s->chroma_y_shift, s->uvlinesize) + +sse(s, s->new_picture->data[2] + s->mb_x * chroma_mb_w + s->mb_y * s->uvlinesize * chroma_mb_h, + s->dest[2], w >> s->chroma_x_shift, h >> s->chroma_y_shift, s->uvlinesize); } static int pre_estimate_motion_thread(AVCodecContext *c, void *arg){ diff --git a/tests/ref/seek/vsynth_lena-mpeg2-422 b/tests/ref/seek/vsynth_lena-mpeg2-422 index 06d8f7ac3a..1fc2bf93a0 100644 --- a/tests/ref/seek/vsynth_lena-mpeg2-422 +++ b/tests/ref/seek/vsynth_lena-mpeg2-422 @@ -1,46 +1,46 @@ -ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 17497 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 18339 ret: 0 st:-1 flags:0 ts:-1.000000 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 17497 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 18339 ret: 0 st:-1 flags:1 ts: 1.894167 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 325397 size: 19967 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 329242 size: 21479 ret: 0 st: 0 flags:0 ts: 0.788334 -ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 200747 size: 22575 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 203086 size: 24774 ret:-1 st: 0 flags:1 ts:-0.317499 ret:-1 st:-1 flags:0 ts: 2.576668 ret: 0 st:-1 flags:1 ts: 1.470835 -ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 265466 size: 21329 +ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 268154 size: 22845 ret: 0 st: 0 flags:0 ts: 0.365002 -ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 104454 size: 28984 +ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 108763 size: 32204 ret:-1 st: 0 flags:1 ts:-0.740831 ret:-1 st:-1 flags:0 ts: 2.153336 ret: 0 st:-1 flags:1 ts: 1.047503 -ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 200747 size: 22575 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 203086 size: 24774 ret: 0 st: 0 flags:0 ts:-0.058330 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 17497 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 18339 ret: 0 st: 0 flags:1 ts: 2.835837 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 325397 size: 19967 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 329242 size: 21479 ret: 0 st:-1 flags:0 ts: 1.730004 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 325397 size: 19967 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 329242 size: 21479 ret: 0 st:-1 flags:1 ts: 0.624171 -ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 104454 size: 28984 +ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 108763 size: 32204 ret: 0 st: 0 flags:0 ts:-0.481662 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 17497 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 18339 ret: 0 st: 0 flags:1 ts: 2.412505 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 325397 size: 19967 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 329242 size: 21479 ret: 0 st:-1 flags:0 ts: 1.306672 -ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 265466 size: 21329 +ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 268154 size: 22845 ret: 0 st:-1 flags:1 ts: 0.200839 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 17497 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 18339 ret: 0 st: 0 flags:0 ts:-0.904994 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 17497 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 0 size: 18339 ret: 0 st: 0 flags:1 ts: 1.989173 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 325397 size: 19967 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 329242 size: 21479 ret: 0 st:-1 flags:0 ts: 0.883340 -ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 265466 size: 21329 +ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 268154 size: 22845 ret:-1 st:-1 flags:1 ts:-0.222493 ret:-1 st: 0 flags:0 ts: 2.671674 ret: 0 st: 0 flags:1 ts: 1.565841 -ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 265466 size: 21329 +ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 268154 size: 22845 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 200747 size: 22575 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 203086 size: 24774 ret:-1 st:-1 flags:1 ts:-0.645825 diff --git a/tests/ref/vsynth/vsynth1-mpeg2-422 b/tests/ref/vsynth/vsynth1-mpeg2-422 index e936ba463e..a39b2b4dce 100644 --- a/tests/ref/vsynth/vsynth1-mpeg2-422 +++ b/tests/ref/vsynth/vsynth1-mpeg2-422 @@ -1,4 +1,4 @@ -6e135a1a27235a320311a932147846b4 *tests/data/fate/vsynth1-mpeg2-422.mpeg2video -730780 tests/data/fate/vsynth1-mpeg2-422.mpeg2video -0273cd8463d1fc115378748239951560 *tests/data/fate/vsynth1-mpeg2-422.out.rawvideo -stddev: 10.27 PSNR: 27.90 MAXDIFF: 162 bytes: 7603200/ 7603200 +651f054730be04257498eeae08b3bdc5 *tests/data/fate/vsynth1-mpeg2-422.mpeg2video +855859 tests/data/fate/vsynth1-mpeg2-422.mpeg2video +10fd55dbd10b08f9271eb89617766be8 *tests/data/fate/vsynth1-mpeg2-422.out.rawvideo +stddev: 9.38 PSNR: 28.68 MAXDIFF: 178 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-mpeg2-422 b/tests/ref/vsynth/vsynth2-mpeg2-422 index ec7244f9f9..5da29b4eac 100644 --- a/tests/ref/vsynth/vsynth2-mpeg2-422 +++ b/tests/ref/vsynth/vsynth2-mpeg2-422 @@ -1,4 +1,4 @@ -b2fa9b73c3547191ecc01b8163abd4e5 *tests/data/fate/vsynth2-mpeg2-422.mpeg2video -379164 tests/data/fate/vsynth2-mpeg2-422.mpeg2video -704f6a96f93c2409219bd48b74169041 *tests/data/fate/vsynth2-mpeg2-422.out.rawvideo -stddev: 4.17 PSNR: 35.73 MAXDIFF: 70 bytes: 7603200/ 7603200 +fcaf6242ca4b706d392e40d9631e3465 *tests/data/fate/vsynth2-mpeg2-422.mpeg2video +383946 tests/data/fate/vsynth2-mpeg2-422.mpeg2video +474bb259f041bfb971691551f678fd09 *tests/data/fate/vsynth2-mpeg2-422.out.rawvideo +stddev: 3.93 PSNR: 36.23 MAXDIFF: 69 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth3-mpeg2-422 b/tests/ref/vsynth/vsynth3-mpeg2-422 index 2247f286e6..e83c23635c 100644 --- a/tests/ref/vsynth/vsynth3-mpeg2-422 +++ b/tests/ref/vsynth/vsynth3-mpeg2-422 @@ -1,4 +1,4 @@ -4d108b861715f1fa010fd70baea91793 *tests/data/fate/vsynth3-mpeg2-422.mpeg2video -68612 tests/data/fate/vsynth3-mpeg2-422.mpeg2video -73b16e906d07b6bbccf4b00d4a25302c *tests/data/fate/vsynth3-mpeg2-422.out.rawvideo -stddev: 4.02 PSNR: 36.05 MAXDIFF: 46 bytes: 86700/ 86700 +96dc854fc40a6410d4edc387b63ded1a *tests/data/fate/vsynth3-mpeg2-422.mpeg2video +75445 tests/data/fate/vsynth3-mpeg2-422.mpeg2video +5337fc0bfb789919cb3325a02d48eb82 *tests/data/fate/vsynth3-mpeg2-422.out.rawvideo +stddev: 3.24 PSNR: 37.90 MAXDIFF: 27 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth_lena-mpeg2-422 b/tests/ref/vsynth/vsynth_lena-mpeg2-422 index 5f11d4e7cd..85d598782c 100644 --- a/tests/ref/vsynth/vsynth_lena-mpeg2-422 +++ b/tests/ref/vsynth/vsynth_lena-mpeg2-422 @@ -1,4 +1,4 @@ -521ec92c0b8672011a43dd13db98c400 *tests/data/fate/vsynth_lena-mpeg2-422.mpeg2video -356431 tests/data/fate/vsynth_lena-mpeg2-422.mpeg2video -51ca353620f85db8b5b1c56f1a275add *tests/data/fate/vsynth_lena-mpeg2-422.out.rawvideo -stddev: 3.15 PSNR: 38.14 MAXDIFF: 49 bytes: 7603200/ 7603200 +87e5c69775b363db649c253050536045 *tests/data/fate/vsynth_lena-mpeg2-422.mpeg2video +361341 tests/data/fate/vsynth_lena-mpeg2-422.mpeg2video +93cefcf101e6d0814acfaa626a02be90 *tests/data/fate/vsynth_lena-mpeg2-422.out.rawvideo +stddev: 2.97 PSNR: 38.67 MAXDIFF: 57 bytes: 7603200/ 7603200