Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  e5010-jpeg-enc.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Imagination E5010 JPEG Encoder driver.
 *
 * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
 *
 * Author: David Huang <d-huang@ti.com>
 * Author: Devarsh Thakkar <devarsht@ti.com>
 */


#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-fh.h>

#ifndef _E5010_JPEG_ENC_H
#define _E5010_JPEG_ENC_H

#define MAX_PLANES   2
#define HEADER_SIZE   0x025D
#define MIN_DIMENSION   64
#define MAX_DIMENSION   8192
#define DEFAULT_WIDTH   640
#define DEFAULT_HEIGHT   480
#define E5010_MODULE_NAME  "e5010"
#define JPEG_MAX_BYTES_PER_PIXEL 2

/* JPEG marker definitions */
#define START_OF_IMAGE   0xFFD8
#define SOF_BASELINE_DCT  0xFFC0
#define END_OF_IMAGE   0xFFD9
#define START_OF_SCAN   0xFFDA

/* Definitions for the huffman table specification in the Marker segment */
#define DHT_MARKER   0xFFC4
#define LH_DC    0x001F
#define LH_AC    0x00B5

/* Definitions for the quantization table specification in the Marker segment */
#define DQT_MARKER   0xFFDB
#define ACMAX    0x03FF
#define DCMAX    0x07FF

/* Length and precision of the quantization table parameters */
#define LQPQ    0x00430
#define QMAX    255

/* Misc JPEG header definitions */
#define UC_NUM_COMP   3
#define PRECISION   8
#define HORZ_SAMPLING_FACTOR  (2 << 4)
#define VERT_SAMPLING_FACTOR_422 1
#define VERT_SAMPLING_FACTOR_420 2
#define COMPONENTS_IN_SCAN  3
#define PELS_IN_BLOCK   64

/* Used for Qp table generation */
#define LUMINOSITY   10
#define CONTRAST   1
#define INCREASE   2
#define QP_TABLE_SIZE   (8 * 8)
#define QP_TABLE_FIELD_OFFSET  0x04

/*
 * vb2 queue structure
 * contains queue data information
 *
 * @fmt: format info
 * @width: frame width
 * @height: frame height
 * @bytesperline: bytes per line in memory
 * @size_image: image size in memory
 */

struct e5010_q_data {
 struct e5010_fmt *fmt;
 u32   width;
 u32   height;
 u32   width_adjusted;
 u32   height_adjusted;
 u32   sizeimage[MAX_PLANES];
 u32   bytesperline[MAX_PLANES];
 u32   sequence;
 struct v4l2_rect crop;
 bool   crop_set;
};

/*
 * Driver device structure
 * Holds all memory handles and global parameters
 * Shared by all instances
 */

struct e5010_dev {
 struct device *dev;
 struct v4l2_device v4l2_dev;
 struct v4l2_m2m_dev *m2m_dev;
 struct video_device *vdev;
 void __iomem  *core_base;
 void __iomem  *mmu_base;
 struct clk  *clk;
 struct e5010_context *last_context_run;
 /* Protect access to device data */
 struct mutex  mutex;
 /* Protect access to hardware*/
 spinlock_t  hw_lock;
};

/*
 * Driver context structure
 * One of these exists for every m2m context
 * Holds context specific data
 */

struct e5010_context {
 struct v4l2_fh   fh;
 struct e5010_dev  *e5010;
 struct e5010_q_data  out_queue;
 struct e5010_q_data  cap_queue;
 int    quality;
 bool    update_qp;
 struct v4l2_ctrl_handler ctrl_handler;
 u8    luma_qp[QP_TABLE_SIZE];
 u8    chroma_qp[QP_TABLE_SIZE];
};

/*
 * Buffer structure
 * Contains info for all buffers
 */

struct e5010_buffer {
 struct v4l2_m2m_buffer buffer;
};

enum {
 CHROMA_ORDER_CB_CR = 0, //UV ordering
 CHROMA_ORDER_CR_CB = 1, //VU ordering
};

enum {
 SUBSAMPLING_420 = 1,
 SUBSAMPLING_422 = 2,
};

/*
 * e5010 format structure
 * contains format information
 */

struct e5010_fmt {
 u32     fourcc;
 unsigned int    num_planes;
 unsigned int    type;
 u32     subsampling;
 u32     chroma_order;
 const struct v4l2_frmsize_stepwise frmsize;
};

/*
 * struct e5010_ctrl - contains info for each supported v4l2 control
 */

struct e5010_ctrl {
 unsigned int  cid;
 enum v4l2_ctrl_type type;
 unsigned char  name[32];
 int   minimum;
 int   maximum;
 int   step;
 int   default_value;
 unsigned char  compound;
};

#endif

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

¤ Dauer der Verarbeitung: 0.12 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge