X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fvideo_output%2Fvout_pictures.h;h=cdae378d7e12be562b3d94fc8de98d9dbfdadcf9;hb=51b21bc3a21f925a30fd5401bafe50ffedcba382;hp=4b7c78d9fbc36b59a3013c7a20bbd1b5656dac49;hpb=4d8cbc47f9ddc1faabc4b8c9063089a3d4681344;p=vlc diff --git a/src/video_output/vout_pictures.h b/src/video_output/vout_pictures.h index 4b7c78d9fb..cdae378d7e 100644 --- a/src/video_output/vout_pictures.h +++ b/src/video_output/vout_pictures.h @@ -99,3 +99,39 @@ /* Palettized YUV with palette element Y:U:V:A */ #define FOURCC_YUVP VLC_FOURCC('Y','U','V','P') + +/* Planar 8-bit grayscale */ +#define FOURCC_GREY VLC_FOURCC('G','R','E','Y') +#define FOURCC_Y800 VLC_FOURCC('Y','8','0','0') +#define FOURCC_Y8 VLC_FOURCC('Y','8',' ',' ') + +/* Alignment of critical dynamic data structure + * + * Not all platforms support memalign so we provide a vlc_memalign wrapper + * void *vlc_memalign( size_t align, size_t size, void **pp_orig ) + * *pp_orig is the pointer that has to be freed afterwards. + */ +static inline +void *vlc_memalign (void **pp, size_t align, size_t size) +{ +#if defined (HAVE_POSIX_MEMALIGN) + return posix_memalign (pp, align, size) ? NULL : *pp; +#elif defined (HAVE_MEMALIGN) + return *pp = memalign (align, size); +#else + unsigned char *ptr; + + if (align < 1) + return NULL; + + align--; + ptr = malloc (size + align); + if (ptr == NULL) + return NULL; + + *pp = ptr; + ptr += align; + return (void *)(((uintptr_t)ptr) & ~align); +#endif +} +