Skip to main content
Franzi.Edo
Senior
January 5, 2017
Question

32F7 jpeg HW encoder

  • January 5, 2017
  • 6 replies
  • 1338 views
Posted on January 05, 2017 at 14:18

Dear all,

I would like to implement my routines to support the jpeg encoder/decoder included in the stm32F777.

Unfortunately, the documentation of this interface is really poor (unusable to do a correct job).

Does someone find application notes or any other usable documents that allow a correct usage of this jpeg hardware bloc?

Thank you

Regards

  Edo

#jpeg-encoder
This topic has been closed for replies.

6 replies

ST Technical Moderator
January 5, 2017
Posted on January 05, 2017 at 15:04

Dear

Franzi.Edo

‌,

You'll probably want to

refer 'JPEG codec (JPEG)' section inyour reference manual and follow the STM32F7 JPEG

http://www.st.com/content/ccc/resource/training/technical/product_training/group0/9b/0b/70/51/69/dd/44/8d/STM32F7_Peripheral_JPEG/files/STM32F7_Peripheral_JPEG.pdf/jcr:content/translations/en.STM32F7_Peripheral_JPEG.pdf

.

Moreover, you canreview JPEG Encoding example, as you can find available in the STM32CubeF7 firmware package:

STM32Cube_FW_F7_V1.5.1\Projects\STM32756G_EVAL\Applications\LibJPEG\LibJPEG_Encoding.

Best Regards

Imen

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question. Thanks
Franzi.Edo
Senior
January 5, 2017
Posted on January 05, 2017 at 15:59

Dear Imen,

Thank you for your suggestions. Well, I reviewed your suggested document and the information is still not enough for writing a robust jpeg driver. Of course, I can also 'reverse engineering'  the Lib_Jpeg in the ST package, but this is also a crazy job.

The jpeg_lib is really useful when we have a clear peripheral description. In this case, the lib can help a lot.

What I expect from ST is a more complete documentation with examples and/or an application note. Maybe it is only question of time ... hope not too long :\

Anyway, thank you a lot for your support ,

Best regards

  Edo 

ST Technical Moderator
January 5, 2017
Posted on January 05, 2017 at 16:20

Hi

Franzi.Edo

‌,

Your request is shared internally for further investigation to add such application notein this topic.

All your feedback are welcome.

Best Regards

Imen

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question. Thanks
Franzi.Edo
Senior
January 6, 2017
Posted on January 06, 2017 at 11:38

Dear Imen,

Maybe you can answer the following question before waiting for a full documentation from ST.

We have managed to use the jpeg decoder module successfully, but we are having problems with the encoder.

More specifically, we don’t know how to set the DHTMEM and HUFFENC register blocks, which are mentioned on page 755 of the RM0410 Reference Manual (

DocID028270 Rev 2

).

We are currently interested in encoding only 8-bit (grayscale) images. I copied the Huffman tables we would like to use below. 

Could you possibly advise on how to copy them to DHTMEM and HUFFENC memory space?

Thank you for your help,

Kind Regards,

Edo Franzi

  static const uint8_t bits_dc_luminance[17] =

    { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };

  static const uint8_t val_dc_luminance[] =

    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

  

  static const uint8_t bits_ac_luminance[17] =

    { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };

  static const uint8_t val_ac_luminance[] =

    { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,

      0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,

      0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,

      0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,

      0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,

      0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,

      0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,

      0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,

      0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,

      0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,

      0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,

      0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,

      0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,

      0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,

      0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,

      0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,

      0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,

      0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,

      0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,

      0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,

      0xf9, 0xfa };