Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/include/uapi/linux/media/raspberrypi/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 7 kB image not shown  

Quelle  pisp_common.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
/*
 * RP1 PiSP common definitions.
 *
 * Copyright (C) 2021 - Raspberry Pi Ltd.
 *
 */

#ifndef _UAPI_PISP_COMMON_H_
#define _UAPI_PISP_COMMON_H_

#include <linux/types.h>

struct pisp_image_format_config {
 /* size in pixels */
 __u16 width;
 __u16 height;
 /* must match struct pisp_image_format below */
 __u32 format;
 __s32 stride;
 /* some planar image formats will need a second stride */
 __s32 stride2;
} __attribute__((packed));

enum pisp_bayer_order {
 /*
 * Note how bayer_order&1 tells you if G is on the even pixels of the
 * checkerboard or not, and bayer_order&2 tells you if R is on the even
 * rows or is swapped with B. Note that if the top (of the 8) bits is
 * set, this denotes a monochrome or greyscale image, and the lower bits
 * should all be ignored.
 */

 PISP_BAYER_ORDER_RGGB = 0,
 PISP_BAYER_ORDER_GBRG = 1,
 PISP_BAYER_ORDER_BGGR = 2,
 PISP_BAYER_ORDER_GRBG = 3,
 PISP_BAYER_ORDER_GREYSCALE = 128
};

enum pisp_image_format {
 /*
 * Precise values are mostly tbd. Generally these will be portmanteau
 * values comprising bit fields and flags. This format must be shared
 * throughout the PiSP.
 */

 PISP_IMAGE_FORMAT_BPS_8 = 0x00000000,
 PISP_IMAGE_FORMAT_BPS_10 = 0x00000001,
 PISP_IMAGE_FORMAT_BPS_12 = 0x00000002,
 PISP_IMAGE_FORMAT_BPS_16 = 0x00000003,
 PISP_IMAGE_FORMAT_BPS_MASK = 0x00000003,

 PISP_IMAGE_FORMAT_PLANARITY_INTERLEAVED = 0x00000000,
 PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR = 0x00000010,
 PISP_IMAGE_FORMAT_PLANARITY_PLANAR = 0x00000020,
 PISP_IMAGE_FORMAT_PLANARITY_MASK = 0x00000030,

 PISP_IMAGE_FORMAT_SAMPLING_444 = 0x00000000,
 PISP_IMAGE_FORMAT_SAMPLING_422 = 0x00000100,
 PISP_IMAGE_FORMAT_SAMPLING_420 = 0x00000200,
 PISP_IMAGE_FORMAT_SAMPLING_MASK = 0x00000300,

 PISP_IMAGE_FORMAT_ORDER_NORMAL = 0x00000000,
 PISP_IMAGE_FORMAT_ORDER_SWAPPED = 0x00001000,

 PISP_IMAGE_FORMAT_SHIFT_0 = 0x00000000,
 PISP_IMAGE_FORMAT_SHIFT_1 = 0x00010000,
 PISP_IMAGE_FORMAT_SHIFT_2 = 0x00020000,
 PISP_IMAGE_FORMAT_SHIFT_3 = 0x00030000,
 PISP_IMAGE_FORMAT_SHIFT_4 = 0x00040000,
 PISP_IMAGE_FORMAT_SHIFT_5 = 0x00050000,
 PISP_IMAGE_FORMAT_SHIFT_6 = 0x00060000,
 PISP_IMAGE_FORMAT_SHIFT_7 = 0x00070000,
 PISP_IMAGE_FORMAT_SHIFT_8 = 0x00080000,
 PISP_IMAGE_FORMAT_SHIFT_MASK = 0x000f0000,

 PISP_IMAGE_FORMAT_BPP_32 = 0x00100000,

 PISP_IMAGE_FORMAT_UNCOMPRESSED = 0x00000000,
 PISP_IMAGE_FORMAT_COMPRESSION_MODE_1 = 0x01000000,
 PISP_IMAGE_FORMAT_COMPRESSION_MODE_2 = 0x02000000,
 PISP_IMAGE_FORMAT_COMPRESSION_MODE_3 = 0x03000000,
 PISP_IMAGE_FORMAT_COMPRESSION_MASK = 0x03000000,

 PISP_IMAGE_FORMAT_HOG_SIGNED = 0x04000000,
 PISP_IMAGE_FORMAT_HOG_UNSIGNED = 0x08000000,
 PISP_IMAGE_FORMAT_INTEGRAL_IMAGE = 0x10000000,
 PISP_IMAGE_FORMAT_WALLPAPER_ROLL = 0x20000000,
 PISP_IMAGE_FORMAT_THREE_CHANNEL = 0x40000000,

 /* Lastly a few specific instantiations of the above. */
 PISP_IMAGE_FORMAT_SINGLE_16 = PISP_IMAGE_FORMAT_BPS_16,
 PISP_IMAGE_FORMAT_THREE_16 = PISP_IMAGE_FORMAT_BPS_16 |
         PISP_IMAGE_FORMAT_THREE_CHANNEL
};

#define PISP_IMAGE_FORMAT_BPS_8(fmt)                                           \
 (((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_8)
#define PISP_IMAGE_FORMAT_BPS_10(fmt)                                          \
 (((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_10)
#define PISP_IMAGE_FORMAT_BPS_12(fmt)                                          \
 (((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_12)
#define PISP_IMAGE_FORMAT_BPS_16(fmt)                                          \
 (((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_16)
#define PISP_IMAGE_FORMAT_BPS(fmt)                                             \
 (((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) ?                                \
        8 + (2 << (((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) - 1)) : 8)
#define PISP_IMAGE_FORMAT_SHIFT(fmt)                                           \
 (((fmt) & PISP_IMAGE_FORMAT_SHIFT_MASK) / PISP_IMAGE_FORMAT_SHIFT_1)
#define PISP_IMAGE_FORMAT_THREE_CHANNEL(fmt)                                   \
 ((fmt) & PISP_IMAGE_FORMAT_THREE_CHANNEL)
#define PISP_IMAGE_FORMAT_SINGLE_CHANNEL(fmt)                                  \
 (!((fmt) & PISP_IMAGE_FORMAT_THREE_CHANNEL))
#define PISP_IMAGE_FORMAT_COMPRESSED(fmt)                                      \
 (((fmt) & PISP_IMAGE_FORMAT_COMPRESSION_MASK) !=                       \
  PISP_IMAGE_FORMAT_UNCOMPRESSED)
#define PISP_IMAGE_FORMAT_SAMPLING_444(fmt)                                    \
 (((fmt) & PISP_IMAGE_FORMAT_SAMPLING_MASK) ==                          \
  PISP_IMAGE_FORMAT_SAMPLING_444)
#define PISP_IMAGE_FORMAT_SAMPLING_422(fmt)                                    \
 (((fmt) & PISP_IMAGE_FORMAT_SAMPLING_MASK) ==                          \
  PISP_IMAGE_FORMAT_SAMPLING_422)
#define PISP_IMAGE_FORMAT_SAMPLING_420(fmt)                                    \
 (((fmt) & PISP_IMAGE_FORMAT_SAMPLING_MASK) ==                          \
  PISP_IMAGE_FORMAT_SAMPLING_420)
#define PISP_IMAGE_FORMAT_ORDER_NORMAL(fmt)                                    \
 (!((fmt) & PISP_IMAGE_FORMAT_ORDER_SWAPPED))
#define PISP_IMAGE_FORMAT_ORDER_SWAPPED(fmt)                                   \
 ((fmt) & PISP_IMAGE_FORMAT_ORDER_SWAPPED)
#define PISP_IMAGE_FORMAT_INTERLEAVED(fmt)                                     \
 (((fmt) & PISP_IMAGE_FORMAT_PLANARITY_MASK) ==                         \
  PISP_IMAGE_FORMAT_PLANARITY_INTERLEAVED)
#define PISP_IMAGE_FORMAT_SEMIPLANAR(fmt)                                      \
 (((fmt) & PISP_IMAGE_FORMAT_PLANARITY_MASK) ==                         \
  PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR)
#define PISP_IMAGE_FORMAT_PLANAR(fmt)                                          \
 (((fmt) & PISP_IMAGE_FORMAT_PLANARITY_MASK) ==                         \
  PISP_IMAGE_FORMAT_PLANARITY_PLANAR)
#define PISP_IMAGE_FORMAT_WALLPAPER(fmt)                                       \
 ((fmt) & PISP_IMAGE_FORMAT_WALLPAPER_ROLL)
#define PISP_IMAGE_FORMAT_BPP_32(fmt) ((fmt) & PISP_IMAGE_FORMAT_BPP_32)
#define PISP_IMAGE_FORMAT_HOG(fmt)                                             \
 ((fmt) &                                                               \
  (PISP_IMAGE_FORMAT_HOG_SIGNED | PISP_IMAGE_FORMAT_HOG_UNSIGNED))

#define PISP_WALLPAPER_WIDTH 128 /* in bytes */

struct pisp_bla_config {
 __u16 black_level_r;
 __u16 black_level_gr;
 __u16 black_level_gb;
 __u16 black_level_b;
 __u16 output_black_level;
 __u8 pad[2];
} __attribute__((packed));

struct pisp_wbg_config {
 __u16 gain_r;
 __u16 gain_g;
 __u16 gain_b;
 __u8 pad[2];
} __attribute__((packed));

struct pisp_compress_config {
 /* value subtracted from incoming data */
 __u16 offset;
 __u8 pad;
 /* 1 => Companding; 2 => Delta (recommended); 3 => Combined (for HDR) */
 __u8 mode;
} __attribute__((packed));

struct pisp_decompress_config {
 /* value added to reconstructed data */
 __u16 offset;
 __u8 pad;
 /* 1 => Companding; 2 => Delta (recommended); 3 => Combined (for HDR) */
 __u8 mode;
} __attribute__((packed));

enum pisp_axi_flags {
 /*
 * round down bursts to end at a 32-byte boundary, to align following
 * bursts
 */

 PISP_AXI_FLAG_ALIGN = 128,
 /* for FE writer: force WSTRB high, to pad output to 16-byte boundary */
 PISP_AXI_FLAG_PAD = 64,
 /* for FE writer: Use Output FIFO level to trigger "panic" */
 PISP_AXI_FLAG_PANIC = 32,
};

struct pisp_axi_config {
 /*
 * burst length minus one, which must be in the range 0:15; OR'd with
 * flags
 */

 __u8 maxlen_flags;
 /* { prot[2:0], cache[3:0] } fields, echoed on AXI bus */
 __u8 cache_prot;
 /* QoS field(s) (4x4 bits for FE writer; 4 bits for other masters) */
 __u16 qos;
} __attribute__((packed));

#endif /* _UAPI_PISP_COMMON_H_ */

Messung V0.5
C=95 H=91 G=92

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.