From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id EED584480C for ; Sun, 25 Sep 2022 15:54:38 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 25EB368BAC0; Sun, 25 Sep 2022 18:54:36 +0300 (EEST) Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2070668B102 for ; Sun, 25 Sep 2022 18:54:30 +0300 (EEST) Received: by mail-yb1-f178.google.com with SMTP id c9so5650231ybf.5 for ; Sun, 25 Sep 2022 08:54:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=berkeley.edu; s=google; h=content-transfer-encoding:to:subject:message-id:date:from :mime-version:from:to:cc:subject:date; bh=AHWWOJTPULRqptYQBRgstx2h1+e38XqoMVK7Kc8gVUg=; b=n5NUMSYcs7hXSovEvsIzJiCneuc6Gkn+/K+nLbdoC7U3FlZOuynQ6H1puDd9r6ejgP GcB2UOj89nQEVCXPZ4TjFqhb3ryVMTlBghmb50V8jCZHIRMzrqZL4f6NqrvSjaEIfjq0 XlKj4537VnMfuU2uxfGnJsRwvH9Dm/FGVWhyIRDp1/qzOrYkdA/VnV1wIqQU3QFb0OO0 thByBEmGtx9aGk28f4KZXrzDBDW9fY57Mo4KCxdqnaudIV1h8YL23vA7ARbarFyjaL1u urqB1+xbmnVg0b6SrhosjmdzXX4czNqt4Ysm0IQ1ZOt6hzmtzUR94kkNVpHMh0IxAhyS Z9QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:to:subject:message-id:date:from :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=AHWWOJTPULRqptYQBRgstx2h1+e38XqoMVK7Kc8gVUg=; b=MgJMl6eNrXLPubZeuG8jGGdXCtYDxuc/TJWUhO7UvSZfojMfnw/xQcnDb9GBpppefj 6Bon8MCp3ExnGhMyyOtbhXWYUCy66I87NtH3JAj9a7rNCDUK5rFRExaPEddw5fZukYdR mVUo0DijRJYzvueWNBECS0aINuK2z052j038YtevWYLd1e+SC+NQa6N+i7hMJ4AT7aJZ I3ckVMp6a83of9bdm9+wZxbamXAP2deGjYlSNWnmrKtZ/UHqHq//6LA1NNNFBVuTU8qk O6yIhyq3JmTFShUG0c24fqQxD5YfH4aN+hcgcJg2KV9y3f+J9CkOyFteW4VGFWlcGbj3 Bh5g== X-Gm-Message-State: ACrzQf0sd/aIGtK3vlX7h10WSm6aYJAdAM0aGCWDDX4kyp9FhQhfrIgI IeX/i7q77hU/9/FLOvF/OWP7fZHHhdp/OgmVrcPfrwlBoO0= X-Google-Smtp-Source: AMsMyM7vlDLZLyIr2+XnyD9bEBpnM//mCKkgHKfFPGv3s87tz1uBJzYc8Cp1digSqYQfAxyaF249+Vl8s+kEJfUjnnI= X-Received: by 2002:a25:8547:0:b0:672:ca9c:d33f with SMTP id f7-20020a258547000000b00672ca9cd33fmr18083136ybn.270.1664121267829; Sun, 25 Sep 2022 08:54:27 -0700 (PDT) MIME-Version: 1.0 From: Chema Gonzalez Date: Sun, 25 Sep 2022 08:54:16 -0700 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] Bug on Bayer conversions 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Hi, I found an issue while playing with Bayer pixel format conversions. ``` $ echo -ne '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' > image.raw $ xxd image.raw 00000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000020: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000030: ffff ffff ffff ffff ffff ffff ffff ffff ................ ``` And then: ``` $ ffmpeg -y -f rawvideo -pixel_format bayer_bggr8 -s 8x8 -i image.raw -f rawvideo -pix_fmt rgb24 -video_size 8x8 image.raw.rgb ... Assertion srcSliceH > 1 failed at libswscale/swscale_unscaled.c:1310 Aborted (core dumped)ated 2 times ``` The issue relates to the ffmpeg parallelization. ``` $ ffmpeg -y -filter_threads 1 -f rawvideo -pixel_format bayer_bggr8 -s 8x8 -i image.raw -f rawvideo -pix_fmt rgb24 -video_size 8x8 image.raw.rgb ... frame= 1 fps=0.0 q=-0.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A speed= 0x eed=N/A video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% $ xxd image.raw.rgb 00000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000050: 7f00 3f7f 0000 7f00 3f7f 0000 0000 0000 ..?.....?....... 00000060: ffff ffff ffff 7fbf ff7f ffff 7fbf ff7f ................ 00000070: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000080: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000090: ffff ffff ffff ffff ffff ffff ffff ffff ................ 000000a0: ffff ffff ffff ffff ffff ffff ffff ffff ................ 000000b0: ffff ffff ffff ffff ffff ffff ffff ffff ................ ``` FYI: ``` $ grep processor /proc/cpuinfo |wc -l 64 ``` Problem seems to be that `ff_sws_slice_worker()` [libswscale/swscale.c:1222] tries to slice the input to parallelize the scaling task, in my case in 16 different jobs (gdb'ing the process shows `nb_threads == nb_jobs == 16`). The 8x8 input is therefore divided in eight 8x1 slices (1-pixel height), which eventually breaks in `bayer_to_rgb24_wrapper()` as it asserts `srcSliceH > 1`. The problem is the same in the 3 Bayer conversion functions (`bayer_to_rgb24_wrapper()`, `bayer_to_rgb48_wrapper()`, and `bayer_to_yv12_wrapper()`. Wondering about the right solution: We could just enforce `nb_threads = nb_jobs = 1` for all Bayer inputs. That may be the simplest solution. Or we could make sure that `nb_threads` (and `nb_jobs`) are capped at `input_height / 2` (to ensure at least 2 pixels per thread). Any suggestions? Thanks, -Chema _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".