On Thu, Mar 29, 2018 at 03:30:43PM +0200, wm4 wrote: >* PSEUDOPAL pixel formats are not paletted, but carried a palette with the *>* intention of allowing code to treat unpaletted formats as paletted. The *>* palette simply mapped the byte values to the resulting RGB values, *>* making it some sort of LUT for RGB conversion. *> >* It was used for 1 byte formats only: RGB4_BYTE, BGR4_BYTE, RGB8, BGR8, *>* GRAY8. The first 4 are awfully obscure, used only by some ancient bitmap *>* formats. The last one, GRAY8, is more common, but its treatment is *>* grossly incorrect. It considers full range GRAY8 only, so GRAY8 coming *>* from typical Y video planes was not mapped to the correct RGB values. *>* Also, nothing actually used the PSEUDOPAL palette data, except xwdenc. *>* All other code had to treat it as a special case, just to ignore or *>* propagate palette data. *> >* In conclusion, this was just a very strange old hack that has no real *>* justification to exist. It's negatively useful, because API users who *>* allocate their own pixel data have to be aware that they need to *>* allocate the palette, or FFmpeg will crash on them in _some_ situations. *>* On top of this, there was no API to allocate the pseuo palette outside *>* of av_frame_get_buffer(). (avpriv_set_systematic_pal2() was not public, *>* which is good, because GRAY8 treatment is broken.) *> >* This patch not only deprecates AV_PIX_FMT_FLAG_PSEUDOPAL, but also makes *>* the pseudo palette optional. Nothing accesses it anymore, though if it's *>* set, it's propagated. It's still allocated and initialized for *>* compatibility with API users that rely on this feature. But new API *>* users do not need to allocate it. This was an explicit goal of this *>* patch. *> >* Most changes replace AV_PIX_FMT_FLAG_PSEUDOPAL with FF_PSEUDOPAL. I *>* first tried #ifdefing all code, but it was a mess. The FF_PSEUDOPAL *>* macro reduces the mess, and still allows defining FF_API_PSEUDOPAL to 0. *> >* Passes FATE with FF_API_PSEUDOPAL enabled and disabled. In addition, *>* FATE passes with FF_API_PSEUDOPAL set to 1, but with allocation *>* functions manually changed to not allocating a palette. *>* ---*
set looks good to me -- Vittorio _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel