Graphics framework for GR-PEACH. When you use this program, we judge you have agreed to the following contents. https://developer.mbed.org/teams/Renesas/wiki/About-LICENSE

Dependents:   ImageZoomInout_Sample ImageRotaion_Sample ImageScroll_Sample GR-PEACH_LCD_4_3inch_Save_to_USB ... more

License

When you use this library, we judge you have agreed to the following contents.

https://developer.mbed.org/teams/Renesas/wiki/About-LICENSE

Note

If you import the GraphicsFramework library, please import GR-PEACH_video library and R_BSP library together.



JPEG Converter

The JPEG Converter driver implements encode and decode functionality which uses the JCU of the RZ/A Series.

Hello World!

Import programJCU_HelloWorld

Hello World for JCU(JPEG Codec Unit). JCU is JPEG codec unit of RZ/A1. When you use this program, we judge you have agreed to the following contents. https://developer.mbed.org/teams/Renesas/wiki/About-LICENSE

API

Import library

Data Structures

struct bitmap_buff_info_t
Bitmap data setting struct. More...
struct encode_options_t
Encode option setting. More...

Public Types

enum jpeg_conv_error_t {
JPEG_CONV_OK = 0, JPEG_CONV_JCU_ERR = -1, JPEG_CONV_FORMA_ERR = -2, JPEG_CONV_PARAM_ERR = -3,
JPEG_CONV_BUSY = -4, JPEG_CONV_PARAM_RANGE_ERR = -7
}

Error codes.

More...
enum wr_rd_swa_t {
WR_RD_WRSWA_NON = 0, WR_RD_WRSWA_8BIT = 1, WR_RD_WRSWA_16BIT = 2, WR_RD_WRSWA_16_8BIT = 3,
WR_RD_WRSWA_32BIT = 4, WR_RD_WRSWA_32_8BIT = 5, WR_RD_WRSWA_32_16BIT = 6, WR_RD_WRSWA_32_16_8BIT = 7
}

Write/Read image pixcel frame buffer swap setting.

More...
enum wr_rd_format_t { WR_RD_YCbCr422 = 0x00, WR_RD_ARGB8888 = 0x01, WR_RD_RGB565 = 0x02 }

Write/Read image pixcel format selects.

More...
enum sub_sampling_t { SUB_SAMPLING_1_1 = 0x00, SUB_SAMPLING_1_2 = 0x01, SUB_SAMPLING_1_4 = 0x02, SUB_SAMPLING_1_8 = 0x03 }

Thinning output image selects.

More...
enum cbcr_offset_t { CBCR_OFFSET_0 = 0x00, CBCR_OFFSET_128 = 0x01 }

Cb/Cr range selects for decode.

More...

Public Member Functions

JPEG_Converter ()
Constructor method of JPEG converter(encode/decode)
virtual ~JPEG_Converter ()
Destructor method of JPEG converter(encode/decode)
JPEG_Converter::jpeg_conv_error_t decode (void *pJpegBuff, bitmap_buff_info_t *psOutputBuff)
Decode JPEG to rinear data.
JPEG_Converter::jpeg_conv_error_t decode (void *pJpegBuff, bitmap_buff_info_t *psOutputBuff, decode_options_t *pOptions)
JPEG data decode to bitmap.
JPEG_Converter::jpeg_conv_error_t encode ( bitmap_buff_info_t *psInputBuff, void *pJpegBuff, size_t *pEncodeSize)
Encode rinear data to JPEG.
JPEG_Converter::jpeg_conv_error_t encode ( bitmap_buff_info_t *psInputBuff, void *pJpegBuff, size_t *pEncodeSize, encode_options_t *pOptions)
Bitmap data encode to JPEG.
JPEG_Converter::jpeg_conv_error_t SetQuality (const uint8_t qual)
Set encode quality.

Correspondence file

A correspondence file of JPEG Converter is as the following table.

JPEGCorrespondence
Width>0(greater than 0)
Height>0(greater than 0)
Color formatYCbCr444, YCbCr422, YCbCr420, YCbCr411
BitmapCorrespondence
Width>0(greater than 0)
Height>0(greater than 0)
Color formatYCbCr422

Notice

You run JPEG converter once destruction each time.

You set whether these JPEG files aren't input, or it check error setting decode(set in "flag" = true). The JPEG file which becomes correspondence outside will be the following condition.

  • File besides the above-mentioned correspondence file.
  • As information in the JPEG file, WIDTH or HEIGHT is larger than output buffer setting.

Buffer area is used encode/decode, set 8 bytes align and non-cash memory area. The output buffer when decoding, is made beyond the size decided in the size of the JPEG file, the format, setting of thinning out. You make output buffer for decode/encode to enough big size in order to stock this result. JPEG Converter, if you do not particularly perform specified, does not check size against the output data at the time of encoding and decoding. You set the output buffer so that there is no effect of corruption by the output data.

Color format

Color format in case to be converted from Bitmap to JPEG is either ARGB8888 or RGB555, YCbCr422. Color format of the If you want to convert from JPEG file to Bitmap file is YCbCr422. You correct "alpha(member of decode_options_t)" of setting and "output_cb_cr_offset(member of decode_options_t)" according to color format when decoding.

  • example
    decode to ARGB8888(WR_RD_ARGB8888 set in format member of bitmap_buff_info_t)
    alpha = 0x01-0xFF
    output_cb_cr_offset = CBCR_OFFSET_0

    decode to YCbCr422(WR_RD_YCbCr422 set in format member of bitmap_buff_info_t)
    alpha = 0
    output_cb_cr_offset = CBCR_OFFSET_0 or CBCR_OFFSET_128

    decode to RGB565(WR_RD_RGB565 set in format member of bitmap_buff_info_t)
    alpha = 0
    output_cb_cr_offset = CBCR_OFFSET_0

Decode/encode settings are optional

If omitted encode/decode settings, it will work with the following settings.
[Decode option setting (member of decode_options_t)]

  • Vertical sub sampling is thinning output image to 1/1.
  • Horizontal sub sampling is thinning output image to 1/1.
  • Output data of Cb/Cr range is -128 to 127.
  • Output data of swap in 8-bit units: 2-1-4-3-6-5-8-7.
  • Alpha value of 0.
  • JPEG format correspondence outside error check.
  • It decode in a synchronous function.

[Encode option setting (member of encode_options_t)]

  • DRI value is 0.
  • Encoding JPEG file start width offset is 0.
  • Encoding JPEG file start height offset is 0.
  • Input data of Cb/Cr range of input data is -128 to 127.
  • Input data swap in 8-bit units: 2-1-4-3-6-5-8-7.
  • It don't check encode size.
  • Quantization Y use default table(Quality75).
  • Quantization C use default table(Quality75).
  • Huffman Y DC use default table.
  • Huffman C DC use default table.
  • Huffman Y AC use default table.
  • Huffman C AC use default table.
  • It encode in a synchronous function.

Synchronous/asynchronous switching

Decoding and encoding setting to operate asynchronously by setting a callback function(decode_options_t and encode_options_t).

Quality

Quality changes are possible. If you want to change the Quality, please specify the table made of Quality you want to change the address of the setting. If you do not want to change the Quality, it will operate at Quality75.

RGA

The RGA library implements fast drawing functionality which uses the RGA of the RZ/A Series.
Supporting compiler is ARMCC, GCC ARM and IAR.

Hello World!

Import programRGA_HelloWorld

Hello World for RGA(Renesas Graphics Architecture). RGA is the Graphics Library of RZ/A1. When you use this program, we judge you have agreed to the following contents. https://developer.mbed.org/teams/Renesas/wiki/About-LICENSE

Committer:
dkato
Date:
Mon Apr 24 08:16:23 2017 +0000
Revision:
13:1ee2176ef13f
Parent:
3:9f857750e4e9
Add "SetQuality()" to JCU.
; Bug fixes.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
1050186 3:9f857750e4e9 1 /******************************************************************************
1050186 3:9f857750e4e9 2 * Copyright(c) 2010-2014 Renesas Electronics Corporation. All rights reserved.
1050186 3:9f857750e4e9 3 *
1050186 3:9f857750e4e9 4 * brief : R-GPVG control functions.
1050186 3:9f857750e4e9 5 *
1050186 3:9f857750e4e9 6 * author : Renesas Electronics Corporation
1050186 3:9f857750e4e9 7 *
1050186 3:9f857750e4e9 8 * history: 2011.01.20
1050186 3:9f857750e4e9 9 * - Created the initial code.
1050186 3:9f857750e4e9 10 * 2012.08.22
1050186 3:9f857750e4e9 11 * - Added return value to "NCGVG_InitResourceSize"
1050186 3:9f857750e4e9 12 * 2013.05.13
1050186 3:9f857750e4e9 13 * - Added function of initialization.
1050186 3:9f857750e4e9 14 * - Added function of finalization.
1050186 3:9f857750e4e9 15 * 2013.06.10
1050186 3:9f857750e4e9 16 * - Applied to new VDC5 driver (Version 0.03.0046).
1050186 3:9f857750e4e9 17 * 2013.11.07
1050186 3:9f857750e4e9 18 * - Modified value of NCG_VG_SBO1_SIZE to (4U) from (0U).
1050186 3:9f857750e4e9 19 * 2014.02.13
1050186 3:9f857750e4e9 20 * - Modified the value of definitions.
1050186 3:9f857750e4e9 21 * NCG_VG_WB_STRIDE
1050186 3:9f857750e4e9 22 * NCG_VG_WB_HEIGHT
1050186 3:9f857750e4e9 23 * NCG_VG_SBO0_SIZE
1050186 3:9f857750e4e9 24 * NCG_VG_DLB_SIZE
1050186 3:9f857750e4e9 25 * 2014.03.25
1050186 3:9f857750e4e9 26 * - Modified NCGVG_Init() and NCGVG_DeInit().
1050186 3:9f857750e4e9 27 * 2014.05.16
1050186 3:9f857750e4e9 28 * - Modified NCGVG_Init() and NCGVG_DeInit().
1050186 3:9f857750e4e9 29 * 2014.12.22
1050186 3:9f857750e4e9 30 * - Applied to OSPL and RGA.
1050186 3:9f857750e4e9 31 *
1050186 3:9f857750e4e9 32 *******************************************************************************/
1050186 3:9f857750e4e9 33
1050186 3:9f857750e4e9 34 /*=============================================================================
1050186 3:9f857750e4e9 35 * Includes
1050186 3:9f857750e4e9 36 */
1050186 3:9f857750e4e9 37
1050186 3:9f857750e4e9 38 #include "Project_Config.h"
1050186 3:9f857750e4e9 39 #include "ncg_defs.h"
1050186 3:9f857750e4e9 40 #include "ncg_debug.h"
1050186 3:9f857750e4e9 41 #include "r_ospl.h"
1050186 3:9f857750e4e9 42
1050186 3:9f857750e4e9 43 #include "ncg_vg.h"
1050186 3:9f857750e4e9 44
1050186 3:9f857750e4e9 45 /* Depending on the build environment */
1050186 3:9f857750e4e9 46 #include "r_typedefs.h"
1050186 3:9f857750e4e9 47
1050186 3:9f857750e4e9 48 #include "iodefine.h"
1050186 3:9f857750e4e9 49 #include "iobitmasks/cpg_iobitmask.h"
1050186 3:9f857750e4e9 50
1050186 3:9f857750e4e9 51 #ifdef RGAH_VERSION
1050186 3:9f857750e4e9 52
1050186 3:9f857750e4e9 53 /*=============================================================================
1050186 3:9f857750e4e9 54 * Internal definitions
1050186 3:9f857750e4e9 55 */
1050186 3:9f857750e4e9 56
1050186 3:9f857750e4e9 57 /* TODO:
1050186 3:9f857750e4e9 58 Please change these parameters in accordance with your system.
1050186 3:9f857750e4e9 59 */
1050186 3:9f857750e4e9 60 #define NCG_VG_WB_STRIDE (256U)
1050186 3:9f857750e4e9 61 #define NCG_VG_WB_HEIGHT (480U)
1050186 3:9f857750e4e9 62
1050186 3:9f857750e4e9 63 #define NCG_VG_SBO0_SIZE (16384U)
1050186 3:9f857750e4e9 64 #define NCG_VG_SBO1_SIZE (4U)
1050186 3:9f857750e4e9 65 #define NCG_VG_DLB_SIZE (5120U)
1050186 3:9f857750e4e9 66
1050186 3:9f857750e4e9 67 /*=============================================================================
1050186 3:9f857750e4e9 68 * Prototyping of internal functions
1050186 3:9f857750e4e9 69 */
1050186 3:9f857750e4e9 70
1050186 3:9f857750e4e9 71
1050186 3:9f857750e4e9 72 /*=============================================================================
1050186 3:9f857750e4e9 73 * Private global variables and functions
1050186 3:9f857750e4e9 74 */
1050186 3:9f857750e4e9 75
1050186 3:9f857750e4e9 76
1050186 3:9f857750e4e9 77 /*=============================================================================
1050186 3:9f857750e4e9 78 * Global Function
1050186 3:9f857750e4e9 79 */
1050186 3:9f857750e4e9 80
1050186 3:9f857750e4e9 81 /*----------------------------------------------------------------------------
1050186 3:9f857750e4e9 82 NAME : NCGVG_Init
1050186 3:9f857750e4e9 83 FUNCTION : Initialize R-GPVG.
1050186 3:9f857750e4e9 84 PARAMETERS : pVGInfo : [IN ] The pointer to the initialization information struct.
1050186 3:9f857750e4e9 85 RETURN : None.
1050186 3:9f857750e4e9 86 ------------------------------------------------------------------------------*/
1050186 3:9f857750e4e9 87 NCGvoid
1050186 3:9f857750e4e9 88 NCGVG_Init (
1050186 3:9f857750e4e9 89 PNCGVGINFO pVGInfo)
1050186 3:9f857750e4e9 90 {
1050186 3:9f857750e4e9 91 /* Depending on the build environment */
1050186 3:9f857750e4e9 92 volatile uint8_t reg_value;
1050186 3:9f857750e4e9 93
1050186 3:9f857750e4e9 94 NCG_UNREFERENCED_PARAMETER( pVGInfo );
1050186 3:9f857750e4e9 95
1050186 3:9f857750e4e9 96 NCG_DEBUG_PRINT_STRING( "[LOG] NCGVG_Init" );
1050186 3:9f857750e4e9 97
1050186 3:9f857750e4e9 98 reg_value = CPG.STBCR10;
1050186 3:9f857750e4e9 99 if ( CPG.STBCR10 & CPG_STBCR10_MSTP100 ) {
1050186 3:9f857750e4e9 100 /* Standby control register 10 (STBCR10) : 0 : R-GPVG enable */
1050186 3:9f857750e4e9 101 CPG.STBCR10 &= ~CPG_STBCR10_MSTP100;
1050186 3:9f857750e4e9 102 /* dummy read */
1050186 3:9f857750e4e9 103 reg_value = CPG.STBCR10;
1050186 3:9f857750e4e9 104
1050186 3:9f857750e4e9 105 if ( CPG.STBREQ2 & CPG_STBREQ2_STBRQ20 ) {
1050186 3:9f857750e4e9 106 CPG.SWRSTCR3 |= CPG_SWRSTCR3_SRST32;
1050186 3:9f857750e4e9 107 /* dummy read */
1050186 3:9f857750e4e9 108 reg_value = CPG.SWRSTCR3;
1050186 3:9f857750e4e9 109
1050186 3:9f857750e4e9 110 CPG.SWRSTCR3 &= ~CPG_SWRSTCR3_SRST32;
1050186 3:9f857750e4e9 111 /* dummy read */
1050186 3:9f857750e4e9 112 reg_value = CPG.SWRSTCR3;
1050186 3:9f857750e4e9 113
1050186 3:9f857750e4e9 114 CPG.STBREQ2 &= ~CPG_STBREQ2_STBRQ20;
1050186 3:9f857750e4e9 115 /* dummy read */
1050186 3:9f857750e4e9 116 reg_value = CPG.STBREQ2;
1050186 3:9f857750e4e9 117 while ( (CPG.STBACK2 & CPG_STBACK2_STBAK20) != 0 ) ;
1050186 3:9f857750e4e9 118 }
1050186 3:9f857750e4e9 119 }
1050186 3:9f857750e4e9 120
1050186 3:9f857750e4e9 121 NCG_UNREFERENCED_PARAMETER( reg_value ); /* Avoid warning of "unused-but-set-variable" of GCC_ARM */
1050186 3:9f857750e4e9 122
1050186 3:9f857750e4e9 123 return ;
1050186 3:9f857750e4e9 124 }
1050186 3:9f857750e4e9 125
1050186 3:9f857750e4e9 126 /*----------------------------------------------------------------------------
1050186 3:9f857750e4e9 127 NAME : NCGVG_DeInit
1050186 3:9f857750e4e9 128 FUNCTION : Finalize R-GPVG.
1050186 3:9f857750e4e9 129 PARAMETERS : pVGInfo : [IN ] The pointer to the finalization information struct.
1050186 3:9f857750e4e9 130 RETURN : None.
1050186 3:9f857750e4e9 131 ------------------------------------------------------------------------------*/
1050186 3:9f857750e4e9 132 NCGvoid
1050186 3:9f857750e4e9 133 NCGVG_DeInit (
1050186 3:9f857750e4e9 134 PNCGVGINFO pVGInfo )
1050186 3:9f857750e4e9 135 {
1050186 3:9f857750e4e9 136 /* Depending on the build environment */
1050186 3:9f857750e4e9 137 volatile uint8_t reg_value;
1050186 3:9f857750e4e9 138
1050186 3:9f857750e4e9 139 NCG_UNREFERENCED_PARAMETER(pVGInfo);
1050186 3:9f857750e4e9 140
1050186 3:9f857750e4e9 141 NCG_DEBUG_PRINT_STRING( "[LOG] NCGVG_DeInit" );
1050186 3:9f857750e4e9 142
1050186 3:9f857750e4e9 143 if ( (CPG.STBCR10 & CPG_STBCR10_MSTP100) != CPG_STBCR10_MSTP100 ) {
1050186 3:9f857750e4e9 144 CPG.STBREQ2 |= CPG_STBREQ2_STBRQ20;
1050186 3:9f857750e4e9 145 /* dummy read */
1050186 3:9f857750e4e9 146 reg_value = CPG.STBREQ2;
1050186 3:9f857750e4e9 147 while ( (CPG.STBACK2 & CPG_STBACK2_STBAK20) == 0 ) ;
1050186 3:9f857750e4e9 148
1050186 3:9f857750e4e9 149 /* Standby control register 10 (STBCR10) : 0 : R-GPVG disable */
1050186 3:9f857750e4e9 150 CPG.STBCR10 |= CPG_STBCR10_MSTP100;
1050186 3:9f857750e4e9 151 /* dummy read */
1050186 3:9f857750e4e9 152 reg_value = CPG.STBCR10;
1050186 3:9f857750e4e9 153 }
1050186 3:9f857750e4e9 154
1050186 3:9f857750e4e9 155 NCG_UNREFERENCED_PARAMETER( reg_value ); /* Avoid warning of "unused-but-set-variable" of GCC_ARM */
1050186 3:9f857750e4e9 156
1050186 3:9f857750e4e9 157 return ;
1050186 3:9f857750e4e9 158 }
1050186 3:9f857750e4e9 159
1050186 3:9f857750e4e9 160 #endif
1050186 3:9f857750e4e9 161 /* -- end of file -- */