HPM SDK
HPMicro Software Development Kit
JPEG driver APIs

Jpeg driver APIs. More...

Data Structures

struct  jpeg_sampling_t
 data format definition More...
 
struct  jpeg_pixel_t
 
struct  jpeg_job_config_t
 jpeg encoding and decoding configuration parameters More...
 

Macros

#define JPEG_EVENT_BUSY   JPEG_STAT_BUSY_MASK
 Define events of the jpeg module. More...
 
#define JPEG_EVENT_OUT_DMA_FINISH   JPEG_STAT_OUT_DMA_TRANSFER_DONE_MASK
 
#define JPEG_EVENT_IN_DMA_FINISH   JPEG_STAT_IN_DMA_TRANSFER_DONE_MASK
 
#define JPEG_EVENT_ERROR   (JPEG_STAT_RESTART_MARKER_ERROR_MASK | (0xF << 7))
 
#define JPEG_BYTE_ORDER_3210   (0U)
 byte order in a word More...
 
#define JPEG_BYTE_ORDER_2301   (1U)
 
#define JPEG_BYTE_ORDER_1032   (2U)
 
#define JPEG_BYTE_ORDER_0123   (3U)
 
#define JPEG_SUPPORTED_FORMAT_420   (0U)
 jpeg pixel conversion format More...
 
#define JPEG_SUPPORTED_FORMAT_422H   (1U)
 
#define JPEG_SUPPORTED_FORMAT_422V   (2U)
 
#define JPEG_SUPPORTED_FORMAT_444   (3U)
 
#define JPEG_SUPPORTED_FORMAT_400   (4U)
 

Typedefs

typedef enum jpeg_table jpeg_table_t
 jpeg encoding and decoding configuration parameters More...
 
typedef enum jpeg_pixel_format jpeg_pixel_format_t
 

Enumerations

enum  jpeg_table {
  jpeg_table_qmem = 0x201002 , jpeg_table_huffenc = 0x201803 , jpeg_table_huffmin = 0x400104 , jpeg_table_huffbase = 0x200405 ,
  jpeg_table_huffsymb = 0x101506
}
 jpeg encoding and decoding configuration parameters More...
 
enum  jpeg_pixel_format {
  jpeg_pixel_format_argb8888 = 0 , jpeg_pixel_format_rgb565 , jpeg_pixel_format_yuv422h1p , jpeg_pixel_format_yuv422h2p ,
  jpeg_pixel_format_yuv420 , jpeg_pixel_format_y8
}
 

Functions

static void jpeg_clear_cfg (JPEG_Type *ptr)
 clear jpeg cfg Register More...
 
static void jpeg_disable (JPEG_Type *ptr)
 jpeg function disable More...
 
static void jpeg_enable (JPEG_Type *ptr)
 jpeg function enable More...
 
static void jpeg_stop (JPEG_Type *ptr)
 stop a encoder/decoder conversion More...
 
static void jpeg_start (JPEG_Type *ptr)
 start a new encoder/decoder conversion More...
 
static uint32_t jpeg_get_status (JPEG_Type *ptr)
 obtain jpeg Status Register More...
 
static void jpeg_clear_status (JPEG_Type *ptr, uint32_t mask)
 clear jpeg Status Register More...
 
static uint32_t jpeg_get_encoded_length (JPEG_Type *ptr)
 Out DMA Bytes Counter. More...
 
static void jpeg_software_reset (JPEG_Type *ptr)
 jpeg Software Reset More...
 
void jpeg_reset (JPEG_Type *ptr)
 stop a encoder/decoder conversion and Software Reset More...
 
void jpeg_enable_irq (JPEG_Type *ptr, uint32_t mask)
 jpeg enable interrupt More...
 
void jpeg_disable_irq (JPEG_Type *ptr, uint32_t mask)
 jpeg disable interrupt More...
 
void jpeg_init (JPEG_Type *ptr)
 stop a encoder/decoder conversion and Software Reset More...
 
hpm_stat_t jpeg_fill_table (JPEG_Type *ptr, jpeg_table_t table, uint8_t *data, uint32_t count)
 fill tables for jpeg controller More...
 
hpm_stat_t jpeg_start_decode (JPEG_Type *ptr, jpeg_job_config_t *config, uint32_t length)
 it will start decoding, and the process status needs to be checked by querying JPEG_EVENT More...
 
hpm_stat_t jpeg_start_encode (JPEG_Type *ptr, jpeg_job_config_t *config)
 
  • it will start encoding, and the process status needs to be checked by querying JPEG_EVENT
More...
 

Detailed Description

Jpeg driver APIs.

Macro Definition Documentation

◆ JPEG_BYTE_ORDER_0123

#define JPEG_BYTE_ORDER_0123   (3U)

#include <drivers/inc/hpm_jpeg_drv.h>

order change, {A0, A1, A2, A3}

◆ JPEG_BYTE_ORDER_1032

#define JPEG_BYTE_ORDER_1032   (2U)

#include <drivers/inc/hpm_jpeg_drv.h>

order change, {A1, A0, A2, A3}

◆ JPEG_BYTE_ORDER_2301

#define JPEG_BYTE_ORDER_2301   (1U)

#include <drivers/inc/hpm_jpeg_drv.h>

order change, {A2, A3, A0, A1}

◆ JPEG_BYTE_ORDER_3210

#define JPEG_BYTE_ORDER_3210   (0U)

#include <drivers/inc/hpm_jpeg_drv.h>

byte order in a word

no order change, {A3, A2, A1, A0}

◆ JPEG_EVENT_BUSY

#define JPEG_EVENT_BUSY   JPEG_STAT_BUSY_MASK

#include <drivers/inc/hpm_jpeg_drv.h>

Define events of the jpeg module.

◆ JPEG_EVENT_ERROR

#define JPEG_EVENT_ERROR   (JPEG_STAT_RESTART_MARKER_ERROR_MASK | (0xF << 7))

◆ JPEG_EVENT_IN_DMA_FINISH

#define JPEG_EVENT_IN_DMA_FINISH   JPEG_STAT_IN_DMA_TRANSFER_DONE_MASK

◆ JPEG_EVENT_OUT_DMA_FINISH

#define JPEG_EVENT_OUT_DMA_FINISH   JPEG_STAT_OUT_DMA_TRANSFER_DONE_MASK

◆ JPEG_SUPPORTED_FORMAT_400

#define JPEG_SUPPORTED_FORMAT_400   (4U)

#include <drivers/inc/hpm_jpeg_drv.h>

hy=2, vy=2, hc=0, vc=0

◆ JPEG_SUPPORTED_FORMAT_420

#define JPEG_SUPPORTED_FORMAT_420   (0U)

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg pixel conversion format

jpeg data format definition hy=2, vy=2, hc=1, vc=1

◆ JPEG_SUPPORTED_FORMAT_422H

#define JPEG_SUPPORTED_FORMAT_422H   (1U)

#include <drivers/inc/hpm_jpeg_drv.h>

hy=2, vy=1, hc=1, vc=1

◆ JPEG_SUPPORTED_FORMAT_422V

#define JPEG_SUPPORTED_FORMAT_422V   (2U)

#include <drivers/inc/hpm_jpeg_drv.h>

hy=1, vy=2, hc=1, vc=1

◆ JPEG_SUPPORTED_FORMAT_444

#define JPEG_SUPPORTED_FORMAT_444   (3U)

#include <drivers/inc/hpm_jpeg_drv.h>

hy=1, vy=1, hc=1, vc=1

Typedef Documentation

◆ jpeg_pixel_format_t

◆ jpeg_table_t

typedef enum jpeg_table jpeg_table_t

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg encoding and decoding configuration parameters

  • bit: 31-27 --> name
  • bit: 26-23 --> WIDTH IN BYTE
  • bit: 22-3 --> ELEMENT COUNT
  • bit: 2-0 --> TYPE

Enumeration Type Documentation

◆ jpeg_pixel_format

#include <drivers/inc/hpm_jpeg_drv.h>

Enumerator
jpeg_pixel_format_argb8888 
jpeg_pixel_format_rgb565 
jpeg_pixel_format_yuv422h1p 
jpeg_pixel_format_yuv422h2p 
jpeg_pixel_format_yuv420 
jpeg_pixel_format_y8 

◆ jpeg_table

enum jpeg_table

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg encoding and decoding configuration parameters

  • bit: 31-27 --> name
  • bit: 26-23 --> WIDTH IN BYTE
  • bit: 22-3 --> ELEMENT COUNT
  • bit: 2-0 --> TYPE
Enumerator
jpeg_table_qmem 

definition Decoder and Encoder Q. values

jpeg_table_huffenc 

definition Huffman Encoder table

jpeg_table_huffmin 

definition Huffman min values

jpeg_table_huffbase 

definition Huffman BASE mem values

jpeg_table_huffsymb 

definition Huffman SYMB mem values

Function Documentation

◆ jpeg_clear_cfg()

static void jpeg_clear_cfg ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

clear jpeg cfg Register

Parameters
[in]ptrJPEG base address, HPM_JPEG

◆ jpeg_clear_status()

static void jpeg_clear_status ( JPEG_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

clear jpeg Status Register

Parameters
[in]ptrJPEG base address, HPM_JPEG
[in]mask
  • JPEG_EVENT_BUSY: the module is busy doing conversion and data transfer
  • JPEG_EVENT_OUT_DMA_FINISH: OutDMA process done
  • JPEG_EVENT_IN_DMA_FINISH: InDMA process done
  • JPEG_EVENT_ERROR: the axi err

◆ jpeg_disable()

static void jpeg_disable ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg function disable

Parameters
[in]ptrJPEG base address, HPM_JPEG

◆ jpeg_disable_irq()

void jpeg_disable_irq ( JPEG_Type ptr,
uint32_t  mask 
)

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg disable interrupt

Parameters
[in]ptrJPEG base address, HPM_JPEG
[in]mask
  • JPEG_EVENT_IN_DMA_FINISH: In DMA Done disable
  • JPEG_EVENT_OUT_DMA_FINISH: interrupt disable for all interrupt sources of In DMA module
  • JPEG_EVENT_ERROR: The jpg endec restart error interrupt disable

◆ jpeg_enable()

static void jpeg_enable ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg function enable

Parameters
[in]ptrJPEG base address, HPM_JPEG

◆ jpeg_enable_irq()

void jpeg_enable_irq ( JPEG_Type ptr,
uint32_t  mask 
)

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg enable interrupt

Parameters
[in]ptrJPEG base address, HPM_JPEG
[in]mask
  • JPEG_EVENT_IN_DMA_FINISH: In DMA Done enable
  • JPEG_EVENT_OUT_DMA_FINISH: interrupt enable for all interrupt sources of In DMA module
  • JPEG_EVENT_ERROR: The jpg endec restart error interrupt enable

◆ jpeg_fill_table()

hpm_stat_t jpeg_fill_table ( JPEG_Type ptr,
jpeg_table_t  table,
uint8_t *  data,
uint32_t  count 
)

#include <drivers/inc/hpm_jpeg_drv.h>

fill tables for jpeg controller

Parameters
[in]ptrJPEG base address, HPM_JPEG
[in]table
  • jpeg_table_qmem: file describe for Decoder and Encoder Q. values
  • jpeg_table_huffenc: file describe for Huffman Encoder table
  • jpeg_table_huffmin: file describe for Huffman min values
  • jpeg_table_huffbase: file describe for Huffman BASE mem values
  • jpeg_table_huffsymb: file describe for Huffman SYMB mem values
[in]data
  • huffenc: data for Huffman Encoder table
  • huffmin: data for Huffman min values
  • huffbase: data for Huffman BASE mem values
  • huffsymb: data for Huffman SYMB mem values
  • qetable: data for Encoder Q. values
  • qdtable: data for Decoder Q. values
[in]countdata length
Return values
filltables's status

◆ jpeg_get_encoded_length()

static uint32_t jpeg_get_encoded_length ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

Out DMA Bytes Counter.

Parameters
[in]ptrJPEG base address, HPM_JPEG
Return values
Theout DMA counter

◆ jpeg_get_status()

static uint32_t jpeg_get_status ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

obtain jpeg Status Register

Parameters
[in]ptrJPEG base address, HPM_JPEG
Return values
jpegregister's status

◆ jpeg_init()

void jpeg_init ( JPEG_Type ptr)

#include <drivers/inc/hpm_jpeg_drv.h>

stop a encoder/decoder conversion and Software Reset

Parameters
[in]ptrJPEG base address, HPM_JPEG

◆ jpeg_reset()

void jpeg_reset ( JPEG_Type ptr)

#include <drivers/inc/hpm_jpeg_drv.h>

stop a encoder/decoder conversion and Software Reset

Parameters
[in]ptrJPEG base address, HPM_JPEG

◆ jpeg_software_reset()

static void jpeg_software_reset ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

jpeg Software Reset

Parameters
[in]ptrJPEG base address, HPM_JPEG

◆ jpeg_start()

static void jpeg_start ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

start a new encoder/decoder conversion

Parameters
[in]ptrJPEG base address, HPM_JPEG

◆ jpeg_start_decode()

hpm_stat_t jpeg_start_decode ( JPEG_Type ptr,
jpeg_job_config_t config,
uint32_t  length 
)

#include <drivers/inc/hpm_jpeg_drv.h>

it will start decoding, and the process status needs to be checked by querying JPEG_EVENT

Parameters
[in]ptrJPEG base address, HPM_JPEG
[in]configconfig A pointer to the configuration struct of "jpeg_job_config_t"
[in]lengthDecoded data length
Return values
jpegdecoding's status

◆ jpeg_start_encode()

hpm_stat_t jpeg_start_encode ( JPEG_Type ptr,
jpeg_job_config_t config 
)

#include <drivers/inc/hpm_jpeg_drv.h>

  • it will start encoding, and the process status needs to be checked by querying JPEG_EVENT

Parameters
[in]ptrJPEG base address, HPM_JPEG
[in]configconfig A pointer to the configuration struct of "jpeg_job_config_t"
Return values
jpegencoding's status

◆ jpeg_stop()

static void jpeg_stop ( JPEG_Type ptr)
inlinestatic

#include <drivers/inc/hpm_jpeg_drv.h>

stop a encoder/decoder conversion

Parameters
[in]ptrJPEG base address, HPM_JPEG