[FFmpeg-devel] [PATCH]Fix pix_fmt_info for yuva420
Stefano Sabatini
stefasab at gmail.com
Mon Jan 16 16:10:58 CET 2012
On date Monday 2012-01-16 15:35:32 +0100, Carl Eugen Hoyos encoded:
> Hi!
>
> Attached patch fixes pix_fmt selection for yuva420 -> png (and similar).
> It also "fixes" ticket #290.
>
> Please review, Carl Eugen
> diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c
> index bbeb5a5..e600d1c 100644
> --- a/libavcodec/imgconvert.c
> +++ b/libavcodec/imgconvert.c
> @@ -109,6 +109,7 @@ static const PixFmtInfo pix_fmt_info[PIX_FMT_NB] = {
>
> /* YUV formats with alpha plane */
> [PIX_FMT_YUVA420P] = {
> + .is_alpha = 1,
> .color_type = FF_COLOR_YUV,
> },
LGTM.
BTW this reminds me that such information should be moved to a more
generic position coupled with the pixdesc (possibly *not* in pixdesc
for the reasons stated many times), then I never managed to get
through it for a bunch of different reasons.
One possibility would be to move the imgconvert array to libavutil,
and design some functions for accessing that info (without directly
exposing it), e.g. av_get_pix_fmt_has_alpha() and
av_get_pix_fmt_colorspace(), such information could then be shared
amongst lavc, lavfi, lsws.
A better approach would require to keep pixel format component
disposition and chroma information separated (e.g. store colorspace
and color per component independently from pixdesc).
Thus for describing pixel format disposition + color info for YUVA420P
you would have:
pixdesc
colorspace -> e.g. AV_CS_YUV_ITU709
color_component_map -> { Y, U, V, A };
The simple alternative for getting the has_alpha information would be
to simply check on the number of components (odd number => has alpha)
as it is done in other parts of the code, not sure how robust is this
approach.
--
FFmpeg = Forgiving and Faithful Martial Philosophical Emblematic Governor
More information about the ffmpeg-devel
mailing list