Commit Graph

50 Commits

Author SHA1 Message Date
Paul B Mahol 72b29c02f4 avfilter/drawutils: support gray14
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-05-05 21:50:22 +02:00
Paul B Mahol f43fd68f28 avfilter/drawutils: add support for full range
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-05-03 21:43:57 +02:00
wm4 d6fc031caf avutil/pixdesc: deprecate AV_PIX_FMT_FLAG_PSEUDOPAL
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.
This cannot be fixed, because AVFrame.color_range can be freely changed
at runtime, and there is nothing to ensure the pseudo palette is
updated.

Also, nothing actually used the PSEUDOPAL palette data, except xwdenc
(trivially changed in the previous commit). All other code had to treat
it as a special case, just to ignore or to propagate palette data.

In conclusion, this was just a very strange old mechnaism that has no
real justification to exist anymore (although it may have been nice and
useful in the past). Now it's an artifact that makes the API harder to
use: 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().

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.
2018-04-03 17:53:00 +02:00
Carl Eugen Hoyos 9fe61b6107 lavfi/drawutils: Do not claim to support P016.
Fixes fate on big-endian.
2018-03-08 11:56:41 +01:00
Paul B Mahol 1bef0088dc avfilter/drawutils: add gray9/10/12 support 2017-08-07 18:39:29 +02:00
Paul B Mahol 5621a99e27 avfilter/drawutils: support gbrap10 too 2017-08-07 13:06:34 +02:00
Paul B Mahol 9d16e46d9e avfilter/drawutils: allow drawing opaque text on transparent background
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-09-21 11:54:00 +02:00
Timo Rothenpieler 2625b955a3 avfilter/drawutils: honor shift for color component description 2016-08-31 13:19:46 +02:00
Timo Rothenpieler d3a23b6777 avfilter/drawutils: P010 is not supported 2016-08-31 13:19:46 +02:00
Michael Niedermayer 369ed11e3c avfilter/drawutils: Fix single plane with alpha
Fixes Ticket5720

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-08-09 12:42:57 +02:00
Derek Buitenhuis f693184557 Split drawutils test out into separate file
This was missed during 96d616052b because
it is not included in FATE.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-05-11 20:43:19 +01:00
Rodger Combs d645182227
lavfi/drawutils: support NV12 and NV21 2016-05-10 20:32:50 -05:00
Carl Eugen Hoyos 8653d6e1a6 lavfi/drawutils: Add some missing GBRP pix_fmts.
Fixes for example extractplanes with GBRAP16.
2016-03-03 11:15:30 +01:00
Michael Niedermayer 954f865c8e avfilter/drawutils: fix gray and gbr formats on big endian
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-25 00:07:51 +01:00
Michael Niedermayer 6bc20e84d8 avfilter/drawutils: Fix ff_fill_rectangle() on big endian
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-25 00:07:51 +01:00
Paul B Mahol 38ed528fa5 avfilter/drawutils: >8 bit support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-02-17 18:59:56 +01:00
Derek Buitenhuis 21f9468402 avutil: Rename FF_CEIL_COMPAT to AV_CEIL_COMPAT
Libav, for some reason, merged this as a public API function. This will
aid in future merges.

A define is left for backwards compat, just in case some person
used it, since it is in a public header.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-01-27 16:36:46 +00:00
Ronald S. Bultje 9cf81e573c lavfi: recognize GBR9-14P as RGB in ff_fill_rgba_map(). 2016-01-24 11:45:53 -05:00
Timothy Gu 852c4b3d42 drawutils: Reindent 2015-10-26 23:24:30 -07:00
Nicolas George 559603dae1 lavfi/drawutils: add const to blending mask. 2015-10-25 20:58:21 +01:00
Ganesh Ajjanagadde 6aaac24d72 avfilter/all: propagate errors of functions from avfilter/formats
Many of the functions from avfilter/formats can return errors, usually AVERROR(ENOMEM).
This propagates the return values.

All of these were found by using av_warn_unused_result, demonstrating its utility.

Tested with FATE. I am least sure of the changes to avfilter/filtergraph,
since I don't know what/how reduce_format is intended to behave and how it should
react to errors.

Fixes: CID 1325680, 1325679, 1325678.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Previous version Reviewed-by: Nicolas George <george@nsup.org>
Previous version Reviewed-by: Clément Bœsch <u@pkh.me>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-14 10:04:01 -04:00
Hendrik Leppkes 5d8e836d0e Replace all remaining occurances of step/depth_minus1 and offset_plus1 2015-09-08 17:10:48 +02:00
Michael Niedermayer a98d4d5207 avfilter/drawutils: Assert av_pix_fmt_desc_get() return value in ff_fill_line_with_color()
Theres currently no case where this could be triggered

Found-by: Daemon404
Reviewed-by: Nicolas George <george@nsup.org>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-13 21:33:18 +02:00
Michael Niedermayer e0db41316a avfilter/drawutils: Fix format validity check in ff_draw_init()
Found-by: Daemon404
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-13 00:06:28 +02:00
Michael Niedermayer f77571f6bb avfilter/drawutils: Check for av_malloc* failures
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-22 13:54:26 +01:00
Michael Niedermayer c90069c6ba avfilter/drawutils: Use av_malloc_array()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-22 13:50:30 +01:00
Michael Niedermayer 0d26264fb4 avfilter/vf_drawtext: Avoid using non public AV_PIX_FMT_NB
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-27 17:52:24 +02:00
Paul B Mahol d5598c0963 lavfi/drawutils: set subsampling for rgb too
Otherwise it is incorrectly set to 1.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-07-14 17:59:25 +00:00
Paul B Mahol 55c94f48ce lavfi/drawutils: fix planar rgb
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-07-08 16:40:49 +00:00
Clément Bœsch 1f1df07ce5 lavfi/drawutils: attempt to fix subsampling. 2013-05-28 19:20:27 +02:00
Michael Niedermayer c7c71f95f8 replace remaining PIX_FMT_* flags with AV_PIX_FMT_FLAG_*
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-15 11:23:14 +02:00
Paul B Mahol deef4b1ac9 lavfi/drawutils: add 16 bit rgb and planar rgb to ff_fill_rgba_map()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-05-08 19:24:23 +00:00
Matthieu Bouron be0a67bd65 lavfi/drawutils: fix blending computation in blend_line function
If width is not alligned with hsub, background component should only be
multiplied once by sub alpha component.
2013-01-05 13:08:02 +01:00
Michael Niedermayer 494945cb66 Merge commit 'd1d9efaae6c7e8466b06c30ca21c6b569dd2e480'
* commit 'd1d9efaae6c7e8466b06c30ca21c6b569dd2e480':
  avcodec: split avpicture from imgconvert
  pixdesc: add PIX_FMT_ALPHA flag

Conflicts:
	libavcodec/imgconvert.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-21 15:37:01 +01:00
Michael Niedermayer 13afee951a Merge commit '59ee9f78b0cc4fb84ae606fa317d8102ad32a627'
* commit '59ee9f78b0cc4fb84ae606fa317d8102ad32a627':
  lavfi: do not use av_pix_fmt_descriptors directly.

Conflicts:
	libavfilter/buffersrc.c
	libavfilter/drawutils.c
	libavfilter/filtfmts.c
	libavfilter/vf_ass.c
	libavfilter/vf_boxblur.c
	libavfilter/vf_drawtext.c
	libavfilter/vf_lut.c
	libavfilter/vf_pad.c
	libavfilter/vf_scale.c
	libavfilter/vf_showinfo.c
	libavfilter/vf_transpose.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-12 17:04:58 +02:00
Anton Khirnov 59ee9f78b0 lavfi: do not use av_pix_fmt_descriptors directly. 2012-10-12 12:45:39 +02:00
Michael Niedermayer ac627b3d38 Merge commit '716d413c13981da15323c7a3821860536eefdbbb'
* commit '716d413c13981da15323c7a3821860536eefdbbb':
  Replace PIX_FMT_* -> AV_PIX_FMT_*, PixelFormat -> AVPixelFormat

Conflicts:
	doc/examples/muxing.c
	ffmpeg.h
	ffmpeg_filter.c
	ffmpeg_opt.c
	ffplay.c
	ffprobe.c
	libavcodec/8bps.c
	libavcodec/aasc.c
	libavcodec/aura.c
	libavcodec/avcodec.h
	libavcodec/avs.c
	libavcodec/bfi.c
	libavcodec/bmp.c
	libavcodec/bmpenc.c
	libavcodec/c93.c
	libavcodec/cscd.c
	libavcodec/cyuv.c
	libavcodec/dpx.c
	libavcodec/dpxenc.c
	libavcodec/eatgv.c
	libavcodec/escape124.c
	libavcodec/ffv1.c
	libavcodec/flashsv.c
	libavcodec/fraps.c
	libavcodec/h264.c
	libavcodec/huffyuv.c
	libavcodec/iff.c
	libavcodec/imgconvert.c
	libavcodec/indeo3.c
	libavcodec/kmvc.c
	libavcodec/libopenjpegdec.c
	libavcodec/libopenjpegenc.c
	libavcodec/libx264.c
	libavcodec/ljpegenc.c
	libavcodec/mjpegdec.c
	libavcodec/mjpegenc.c
	libavcodec/motionpixels.c
	libavcodec/mpeg12.c
	libavcodec/mpeg12enc.c
	libavcodec/mpeg4videodec.c
	libavcodec/mpegvideo_enc.c
	libavcodec/pamenc.c
	libavcodec/pcxenc.c
	libavcodec/pgssubdec.c
	libavcodec/pngdec.c
	libavcodec/pngenc.c
	libavcodec/pnm.c
	libavcodec/pnmdec.c
	libavcodec/pnmenc.c
	libavcodec/ptx.c
	libavcodec/qdrw.c
	libavcodec/qpeg.c
	libavcodec/qtrleenc.c
	libavcodec/raw.c
	libavcodec/rawdec.c
	libavcodec/rl2.c
	libavcodec/sgidec.c
	libavcodec/sgienc.c
	libavcodec/snowdec.c
	libavcodec/snowenc.c
	libavcodec/sunrast.c
	libavcodec/targa.c
	libavcodec/targaenc.c
	libavcodec/tiff.c
	libavcodec/tiffenc.c
	libavcodec/tmv.c
	libavcodec/truemotion2.c
	libavcodec/utils.c
	libavcodec/vb.c
	libavcodec/vp3.c
	libavcodec/wnv1.c
	libavcodec/xl.c
	libavcodec/xwddec.c
	libavcodec/xwdenc.c
	libavcodec/yop.c
	libavdevice/v4l2.c
	libavdevice/x11grab.c
	libavfilter/avfilter.c
	libavfilter/avfilter.h
	libavfilter/buffersrc.c
	libavfilter/drawutils.c
	libavfilter/formats.c
	libavfilter/src_movie.c
	libavfilter/vf_ass.c
	libavfilter/vf_drawtext.c
	libavfilter/vf_fade.c
	libavfilter/vf_format.c
	libavfilter/vf_hflip.c
	libavfilter/vf_lut.c
	libavfilter/vf_overlay.c
	libavfilter/vf_pad.c
	libavfilter/vf_scale.c
	libavfilter/vf_transpose.c
	libavfilter/vf_yadif.c
	libavfilter/video.c
	libavfilter/vsrc_testsrc.c
	libavformat/movenc.c
	libavformat/mxf.h
	libavformat/utils.c
	libavformat/yuv4mpeg.c
	libavutil/imgutils.c
	libavutil/pixdesc.c
	libswscale/input.c
	libswscale/output.c
	libswscale/swscale_internal.h
	libswscale/swscale_unscaled.c
	libswscale/utils.c
	libswscale/x86/swscale_template.c
	libswscale/x86/yuv2rgb.c
	libswscale/x86/yuv2rgb_template.c
	libswscale/yuv2rgb.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-08 21:06:57 +02:00
Anton Khirnov 716d413c13 Replace PIX_FMT_* -> AV_PIX_FMT_*, PixelFormat -> AVPixelFormat 2012-10-08 07:13:26 +02:00
Michael Niedermayer c581cb4e4f Merge remote-tracking branch 'qatar/master'
* qatar/master:
  Fix even more missing includes after the common.h removal
  build: Factor out rangecoder dependencies to CONFIG_RANGECODER
  build: Factor out error resilience dependencies to CONFIG_ERROR_RESILIENCE
  x86: avcodec: Consistently name all init files
  Add more missing includes after removing the implicit common.h
  Add some more missing includes after removing the implicit common.h
  Don't include common.h from avutil.h
  rtmp: Automatically compute the hash for SWFVerification

Conflicts:
	configure
	doc/APIchanges
	doc/examples/decoding_encoding.c
	libavcodec/Makefile
	libavcodec/assdec.c
	libavcodec/audio_frame_queue.c
	libavcodec/avpacket.c
	libavcodec/dv_profile.c
	libavcodec/dwt.c
	libavcodec/libtheoraenc.c
	libavcodec/rawdec.c
	libavcodec/rv40dsp.c
	libavcodec/tiff.c
	libavcodec/tiffenc.c
	libavcodec/v210dec.h
	libavcodec/vc1dsp.c
	libavcodec/x86/Makefile
	libavfilter/asrc_anullsrc.c
	libavfilter/avfilter.c
	libavfilter/buffer.c
	libavfilter/formats.c
	libavfilter/vf_ass.c
	libavfilter/vf_drawtext.c
	libavfilter/vf_fade.c
	libavfilter/vf_select.c
	libavfilter/video.c
	libavfilter/vsrc_testsrc.c
	libavformat/version.h
	libavutil/audioconvert.c
	libavutil/error.h
	libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-16 16:20:30 +02:00
Martin Storsjö 1d9c2dc89a Don't include common.h from avutil.h
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-08-15 22:32:06 +03:00
Stefano Sabatini 3bcde3f06c lavfi/drawutils: make ff_draw_color() accept a const rgba map 2012-08-02 12:32:48 +02:00
Paul B Mahol c9e183b490 lavfi: update some deprecated functions
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2012-06-16 15:15:16 +00:00
Michael Niedermayer e92b48d40f drawutils: fix copyright
git blame:
    423 Nicolas George
     86 Stefano Sabatini
     19 Michael Niedermayer
      1 Reimar Döffinger

Initial commit:
commit bcfd9e821b
Author: Stefano Sabatini <stefano.sabatini-lala@poste.it>
Date:   Sun Feb 20 23:42:17 2011 +0100

    lavfi: add drawutils

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-05-24 05:08:49 +02:00
Reimar Döffinger 24eac3cff5 Mark GRAY8 format as pseudo-paletted.
This fixes that the GIF encoder crashes with it because
it has no palette.
And the arguments for the pseudopalette apply to gray8 as
much as to RGB8 etc.
In addition the changes required in lavfi should be needed anyway
when adding support for RGB8 etc.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-04-09 17:21:35 +02:00
Nicolas George e8497a338e drawutils: implement uniform and mask blending. 2012-04-04 16:16:09 +02:00
Nicolas George 8ec0832743 drawutils: new API.
This new API stores useful data in a dedicated structure
and has clearly delimited init functions.

Hopefully, uses of the old API can be replaced quickly.
2012-03-21 15:52:45 +01:00
Stefano Sabatini 8dc90371b1 lavfi: add internal function ff_fill_rgba_map() 2011-10-28 02:06:50 +02:00
Mans Rullgard 2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Stefano Sabatini 5ad06110e0 lavfi: add drawutils
Add drawutils.h and drawutils.c, and use them in the pad filter.
The new functions are going to be shared by other filters.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-02-21 14:09:08 +00:00
Stefano Sabatini bcfd9e821b lavfi: add drawutils
Add drawutils.h and drawutils.c, and use them in the pad filter.
The new functions are going to be shared by other filters.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-02-21 13:44:52 +01:00