On 06/04/23 13:11, Vignesh Raghavendra wrote:
Hi Nikhil,

On 06/04/23 11:57, Nikhil M Jain wrote:
+struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
+                            void **alloc_addr)
+{
+       void *dst;
+       unsigned long len;
+       struct bmp_image *bmp;
+

if (!IS_ENABLED(CONFIG_VIDEO_BMP_GZIP))
     return NULL;


I preferred to use #if to avoid compilation of code when not required.

For example,  if someone doesn't want to display a gzip bmp image they
wouldn't want the code to be compiled, so that binary size doesn't
increase.

Both are equivalent. Compiler will optimize out the function if
CONFIG_VIDEO_BMP_GZIP is not defined.

#ifdefs are complicated to read compared to inline if()s (at least for me).


+       /*
+        * Decompress bmp image
+        */
+       len = CONFIG_VIDEO_LOGO_MAX_SIZE;
+       /* allocate extra 3 bytes for 32-bit-aligned-address + 2
alignment */
+       dst = malloc(CONFIG_VIDEO_LOGO_MAX_SIZE + 3);
+       if (!dst) {
+               puts("Error: malloc in gunzip failed!\n");
+               return NULL;
+       }
+
+       /* align to 32-bit-aligned-address + 2 */
+       bmp = dst + 2;
+
+       if (gunzip(bmp, CONFIG_VIDEO_LOGO_MAX_SIZE, map_sysmem(addr, 0),
+                  &len)) {
+               free(dst);
+               return NULL;
+       }
+       if (len == CONFIG_VIDEO_LOGO_MAX_SIZE)
+               puts("Image could be truncated (increase
CONFIG_VIDEO_LOGO_MAX_SIZE)!\n");
+
+       /*
+        * Check for bmp mark 'BM'
+        */
+       if (!((bmp->header.signature[0] == 'B') &&
+             (bmp->header.signature[1] == 'M'))) {
+               free(dst);
+               return NULL;
+       }
+
+       debug("Gzipped BMP image detected!\n");
+
+       *alloc_addr = dst;
+       return bmp;
+}
+#else
+struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
+                            void **alloc_addr)
+{
+       return NULL;
+}
+#endif
+

[...]


I will add a new patch which replaces #ifdef to if(CONFIG_IS_ENABLED()) and send V7 series.

Thank you,
Nikhil

Reply via email to