summaryrefslogtreecommitdiff
path: root/libavfilter/vf_pad.c
Commit message (Collapse)AuthorAge
...
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-07-22
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: FATE: fix the asyncts test build: Drop gcc-specific warning flag from header compilation rule FATE: add a test for the asyncts audio filter. matroskadec: return more correct error code on read error. buffersrc: check ff_get_audio_buffer() for errors. lavfi: check all ff_get_video_buffer() calls for errors. lavfi: check all avfilter_ref_buffer() calls for errors. vf_select: avoid an unnecessary avfilter_ref_buffer(). buffersrc: avoid creating unnecessary buffer reference lavfi: use avfilter_unref_bufferp() where appropriate. vf_fps: add more error checks. vf_fps: fix a memleak on malloc failure. lavfi: check all ff_start_frame/draw_slice/end_frame calls for errors lavfi: add error handling to end_frame(). lavfi: add error handling to draw_slice(). lavfi: add error handling to start_frame(). Conflicts: Makefile ffplay.c libavfilter/buffersrc.c libavfilter/vf_boxblur.c libavfilter/vf_drawtext.c libavfilter/vf_fade.c libavfilter/vf_frei0r.c libavfilter/vf_hflip.c libavfilter/vf_overlay.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavfilter/video.c libavfilter/vsrc_color.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: check all ff_get_video_buffer() calls for errors.Anton Khirnov2012-07-22
| |
| * lavfi: add error handling to end_frame().Anton Khirnov2012-07-22
| |
| * lavfi: add error handling to draw_slice().Anton Khirnov2012-07-22
| |
| * lavfi: add error handling to start_frame().Anton Khirnov2012-07-22
| |
* | Merge commit '1470ce21cec5ee26e106e2a884c26bbf84e5aaea'Michael Niedermayer2012-07-22
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '1470ce21cec5ee26e106e2a884c26bbf84e5aaea': Bump libavcodec and libavformat minor versions for G.723.1 decoder and demuxer G.723.1 demuxer and decoder Add a shift parameter to celp_lp_synthesis_filter() libopenjpeg: K&R formatting cosmetics yadif: use emms_c() instead of inline assembly for emms invocations. ac3: don't use different names for option tables in the template file. lavfi: use const for AVFilterPad declarations in all filters. adpcm: don't duplicate identical AVSampleFmt array for each encoder. configure: cosmetics: Group test dependencies together configure: add more passthrough flags in tms470 filter configure: move flag filtering functions out of if/else blocks Conflicts: Changelog configure doc/general.texi libavcodec/Makefile libavcodec/ac3enc_fixed.c libavcodec/allcodecs.c libavcodec/eac3enc.c libavcodec/g723_1.c libavcodec/g723_1_data.h libavcodec/libopenjpegdec.c libavcodec/libopenjpegenc.c libavcodec/v210dec.h libavcodec/version.h libavfilter/af_anull.c libavfilter/asrc_anullsrc.c libavfilter/f_settb.c libavfilter/fifo.c libavfilter/split.c libavfilter/src_movie.c libavfilter/vf_aspect.c libavfilter/vf_blackframe.c libavfilter/vf_boxblur.c libavfilter/vf_copy.c libavfilter/vf_crop.c libavfilter/vf_cropdetect.c libavfilter/vf_delogo.c libavfilter/vf_drawbox.c libavfilter/vf_drawtext.c libavfilter/vf_fade.c libavfilter/vf_fieldorder.c libavfilter/vf_format.c libavfilter/vf_frei0r.c libavfilter/vf_gradfun.c libavfilter/vf_hflip.c libavfilter/vf_hqdn3d.c libavfilter/vf_libopencv.c libavfilter/vf_lut.c libavfilter/vf_null.c libavfilter/vf_overlay.c libavfilter/vf_pad.c libavfilter/vf_pixdesctest.c libavfilter/vf_scale.c libavfilter/vf_select.c libavfilter/vf_setpts.c libavfilter/vf_showinfo.c libavfilter/vf_slicify.c libavfilter/vf_transpose.c libavfilter/vf_unsharp.c libavfilter/vf_vflip.c libavfilter/vf_yadif.c libavfilter/vsrc_color.c libavfilter/vsrc_testsrc.c libavformat/Makefile libavformat/allformats.c libavformat/g723_1.c libavformat/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: use const for AVFilterPad declarations in all filters.Ronald S. Bultje2012-07-21
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-07-21
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: lavfi: unref AVFilterLink.out_buf in ff_end_frame(). lavfi: unref AVFilterLink.cur_buf in ff_end_frame(). vsrc_testsrc: avoid an unnecessary avfilter_ref_buffer(). vf_slicify: clear AVFilterLink.cur_buf in start_frame(). vf_settb: simplify start_frame(). vf_fieldorder: don't give up its own reference to the output buffer. vf_pad: don't give up its own reference to the output buffer. vf_overlay: don't access a buffer reference that's been given away. vf_drawtext: don't give up its own reference to the input buffer. vf_gradfun: don't store two pointers to one AVFilterBufferRef. vf_delogo: don't store two pointers to one AVFilterBufferRef. vf_aspect: clear AVFilterLink.cur_buf in start_frame(). lavfi: add avfilter_unref_bufferp() Conflicts: doc/APIchanges libavfilter/avfilter.h libavfilter/buffer.c libavfilter/vf_aspect.c libavfilter/vf_drawtext.c libavfilter/vf_overlay.c libavfilter/vf_pad.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: unref AVFilterLink.out_buf in ff_end_frame().Anton Khirnov2012-07-20
| | | | | | | | | | This reduces code duplication and prevents stale pointers from remaining on the link.
| * lavfi: unref AVFilterLink.cur_buf in ff_end_frame().Anton Khirnov2012-07-20
| | | | | | | | | | This reduces code duplication and prevents stale pointers from remaining on the link.
| * vf_pad: don't give up its own reference to the output buffer.Anton Khirnov2012-07-20
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-06-27
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: avconv: add an assert to silence an uninitialized variable warning. avconv: shut up an uninitialized variable warning. avfiltergraph: shut up uninitialized variable warning. af_join: initialize a variable to shut up gcc warning. amix: fix format specifier for AVFilterLink.sample_rate. lavfi: make filters less verbose. mpc8: read APE tags. lavr: x86: fix ff_conv_fltp_to_flt_6ch function prototypes libm: provide fallback definition for cbrtf() using powf() network: Don't redefine error codes if they already exist in errno.h configure: Check for sys/time.h network: Include unistd.h from network.h avconv: don't include vsrc_buffer.h, which doesn't exist anymore lavfi: reorder AVFilterLink fields. lavfi: reorder AVFilterContext fields. lavfi: reorder AVFilter fields. lavfi: reorder AVFilterBufferRef fields. lavfi: reorder AVFilterBuffer fields. Conflicts: configure libavcodec/v210dec.h libavfilter/asrc_anullsrc.c libavfilter/avfilter.h libavfilter/buffersrc.c libavfilter/src_movie.c libavfilter/vf_aspect.c libavfilter/vf_crop.c libavfilter/vf_drawbox.c libavfilter/vf_fade.c libavfilter/vf_overlay.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavfilter/vsrc_color.c libavformat/network.h libavutil/libm.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: make filters less verbose.Anton Khirnov2012-06-26
| |
* | Merge commit 'a5e8c41c28f907d98d2a739db08f7aef4cbfcf3a'Michael Niedermayer2012-06-26
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'a5e8c41c28f907d98d2a739db08f7aef4cbfcf3a': lavfi: remove 'opaque' parameter from AVFilter.init() mov: do not try to read total disc/track number if data atom is too short. avconv: fix -force_key_frames dxva2_h264: fix signaling of mbaff frames x86: fft: elf64: fix PIC build Conflicts: ffmpeg.c libavcodec/v210dec.h libavfilter/asrc_anullsrc.c libavfilter/buffersrc.c libavfilter/src_movie.c libavfilter/vf_drawtext.c libavfilter/vf_fade.c libavfilter/vf_overlay.c libavfilter/vsrc_color.c libavfilter/vsrc_testsrc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: remove 'opaque' parameter from AVFilter.init()Anton Khirnov2012-06-26
| | | | | | | | | | | | It is not used in any filters currently and is inherently evil. If passing binary data to filters is required in the future, it should be done with some AVOptions-based system.
* | vf_pad: check that we have write permission before writing in the buffer.Michael Niedermayer2012-06-16
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-06-13
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: rtmp: Add a new option 'rtmp_buffer', for setting the client buffer time rtmp: Set the client buffer time to 3s instead of 0.26s rtmp: Handle server bandwidth packets rtmp: Display a verbose message when an unknown packet type is received lavfi/audio: use av_samples_copy() instead of custom code. configure: add all filters hardcoded into avconv to avconv_deps avfiltergraph: remove a redundant call to avfilter_get_by_name(). lavfi: allow building without swscale. build: Do not delete tests/vsynth2 directory, which is no longer created. lavfi: replace AVFilterContext.input/output_count with nb_inputs/outputs lavfi: make AVFilterPad opaque after two major bumps. lavfi: add avfilter_pad_get_type() and avfilter_pad_get_name(). lavfi: make avfilter_get_video_buffer() private on next bump. jack: update to new latency range API as the old one has been deprecated rtmp: Tokenize the AMF connection parameters manually instead of using strtok_r ppc: Rename H.264 optimization template file for consistency. lavfi: add channelsplit audio filter. golomb: check remaining bits during unary decoding in get_ur_golomb_jpegls() sws: fix planar RGB input conversions for 9/10/16 bpp. Conflicts: Changelog configure doc/APIchanges ffmpeg.c libavcodec/golomb.h libavcodec/v210dec.h libavfilter/Makefile libavfilter/allfilters.c libavfilter/asrc_anullsrc.c libavfilter/audio.c libavfilter/avfilter.c libavfilter/avfilter.h libavfilter/avfiltergraph.c libavfilter/buffersrc.c libavfilter/formats.c libavfilter/version.h libavfilter/vf_frei0r.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavfilter/video.h libavfilter/vsrc_color.c libavformat/rtmpproto.c libswscale/input.c tests/Makefile Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: make AVFilterPad opaque after two major bumps.Anton Khirnov2012-06-13
| | | | | | | | It will allow adding new fields to it without ABI breaks.
| * lavfi: make avfilter_get_video_buffer() private on next bump.Anton Khirnov2012-06-13
| | | | | | | | | | They are only useful inside filters and we don't allow user filters for now.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-06-06
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: vorbis: Validate that the floor 1 X values contain no duplicates. avprobe: Identify codec probe failures rather than calling them unsupported codecs. avformat: Probe codecs at score 0 on buffer exhaustion conditions. avformat: Factorize codec probing. Indeo Audio decoder imc: make IMDCT support stereo output imc: move channel-specific data into separate context lavfi: remove request/poll and drawing functions from public API on next bump lavfi: make avfilter_insert_pad and pals private on next bump. lavfi: make formats API private on next bump. avplay: use buffersrc instead of custom input filter. avtools: move buffer management code from avconv to cmdutils. avconv: don't use InputStream in the buffer management code. avconv: fix exiting when max frames is reached. mpc8: fix maximum bands handling aacdec: Turn PS off when switching to stereo and turn it to implicit when switching to mono. Conflicts: Changelog cmdutils.h ffmpeg.c ffplay.c ffprobe.c libavcodec/avcodec.h libavcodec/mpc8.c libavcodec/v210dec.h libavcodec/version.h libavcodec/vorbisdec.c libavfilter/avfilter.c libavfilter/avfilter.h libavfilter/buffersrc.c libavfilter/formats.c libavfilter/src_movie.c libavfilter/vf_aspect.c libavfilter/vf_blackframe.c libavfilter/vf_boxblur.c libavfilter/vf_crop.c libavfilter/vf_cropdetect.c libavfilter/vf_delogo.c libavfilter/vf_drawbox.c libavfilter/vf_drawtext.c libavfilter/vf_fade.c libavfilter/vf_fifo.c libavfilter/vf_format.c libavfilter/vf_frei0r.c libavfilter/vf_gradfun.c libavfilter/vf_hflip.c libavfilter/vf_hqdn3d.c libavfilter/vf_libopencv.c libavfilter/vf_lut.c libavfilter/vf_overlay.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavfilter/vf_select.c libavfilter/vf_showinfo.c libavfilter/vf_transpose.c libavfilter/vf_unsharp.c libavfilter/vf_yadif.c libavfilter/vsrc_color.c libavfilter/vsrc_testsrc.c libavformat/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: remove request/poll and drawing functions from public API on next bumpAnton Khirnov2012-06-05
| | | | | | | | | | They are only useful inside filters and we don't allow user filters for now.
| * lavfi: make formats API private on next bump.Anton Khirnov2012-06-05
| | | | | | | | | | It is only useful inside filters and we don't allow user filters for now.
* | Mark GRAY8 format as pseudo-paletted.Reimar Döffinger2012-04-09
| | | | | | | | | | | | | | | | | | | | | | 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>
* | vf_pad: port to new drawutils API.Nicolas George2012-03-21
| |
* | vf_pad: keep a reference to the output buffer.Nicolas George2012-03-08
| | | | | | | | | | | | | | | | Once fixed, the end_frame function does exactly what avfilter_default_end_frame does; therefore, end_frame can be removed to let avfilter_default_end_frame work. Fixes ticket #1038.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-02-22
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: mpegvideo_enc: only allocate output packet when we know there will be output Add names for more channel layouts to the channel layout map. sunrast: Add a sample request for RMP_RAW colormap. avcodec: do not override pts or duration from the audio encoder Add prores regression test. Enable already existing rso regression test. Add regression test for "sox" format muxer/demuxer. Add dpx encoding regression test. swscale: K&R formatting cosmetics for PowerPC code (part I/II) img2: Use ff_guess_image2_codec(filename) shorthand where appropriate. Clarify licensing information about files borrowed from libjpeg. Mark mutable static data const where appropriate. avplay: fix -threads option dvbsubdec: avoid undefined signed left shift in RGBA macro mlpdec: use av_log_ask_for_sample() gif: K&R formatting cosmetics png: make .long_name more descriptive movdec: Adjust keyframe flagging in fragmented files rv34: change most "int stride" into "ptrdiff_t stride". Conflicts: avprobe.c ffplay.c libavcodec/mlpdec.c libavcodec/mpegvideo_enc.c libavcodec/pngenc.c libavcodec/x86/v210-init.c libavfilter/vf_boxblur.c libavfilter/vf_crop.c libavfilter/vf_drawtext.c libavfilter/vf_lut.c libavfilter/vf_overlay.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavfilter/vf_select.c libavfilter/vf_setpts.c libavfilter/vf_settb.c libavformat/img2.c libavutil/audioconvert.c tests/codec-regression.sh tests/lavf-regression.sh tests/ref/lavf/dpx tests/ref/vsynth1/prores tests/ref/vsynth2/prores Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Mark mutable static data const where appropriate.Alex Converse2012-02-21
| |
| * vf_pad: fix "vsub" variable value computationStefano Sabatini2011-09-28
| | | | | | | | | | | | It was shifting 2 rather than 1, +10l. Signed-off-by: Anton Khirnov <anton@khirnov.net>
| * vsrc_color: add @file doxyStefano Sabatini2011-09-19
| | | | | | | | | | | | Also remove outdated reference to color in vf_pad.c. Signed-off-by: Anton Khirnov <anton@khirnov.net>
* | pad: fix format string lengthMichael Niedermayer2011-11-14
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Mark AVFilterPad[] compound literals as const.Reimar Döffinger2011-11-06
| | | | | | | | | | | | | | GCC 4.6.2 at least still seems to fail to put them in .rodata though, see also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37303 Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* | Add const to static arrays where it was forgotten.Reimar Döffinger2011-11-05
| | | | | | | | Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* | vf_pad: Fix alignment of get_video_buffer()Michael Niedermayer2011-10-27
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | vf_pad: remove mathematical constants now redundant.Nicolas George2011-10-13
| | | | | | | | | | Signed-off-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavfi: tweak display aspect ratio variables in pad and scale filtersStefano Sabatini2011-07-30
| | | | | | | | | | | | | | | | | | | | | | Previously, "dar" and "a" were documented like "input display aspect ratio", but their actual value was "in_w/in_h". In order to avoid to break scripts which rely on the "a" variable, the patch keeps the same semantics but fixes the corresponding docs, and fixes the semantics of the recently added "dar" variable, which now correctly expresses the input Display Aspect Ratio value as "(inw_w/in_h)*sar".
* | vf_pad: fix "vsub" variable value computationStefano Sabatini2011-07-04
| | | | | | | | It was shifting 2 rather than 1, +10l.
* | vf_pad: add support for a "sar" variableStefano Sabatini2011-07-04
| | | | | | | | Also add a "dar" alias for "a", for avoiding confusion with sar/dar.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-07-04
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (40 commits) H.264: template left MB handling H.264: faster fill_decode_caches H.264: faster write_back_* H.264: faster fill_filter_caches H.264: make filter_mb_fast support the case of unavailable top mb Do not include log.h in avutil.h Do not include pixfmt.h in avutil.h Do not include rational.h in avutil.h Do not include mathematics.h in avutil.h Do not include intfloat_readwrite.h in avutil.h Remove return statements following infinite loops without break RTSP: Doxygen comment cleanup doxygen: Escape '\' in Doxygen documentation. md5: cosmetics md5: use AV_WL32 to write result md5: add fate test md5: include correct headers md5: fix test program doxygen: Drop array size declarations from Doxygen parameter names. doxygen: Fix parameter names to match the function prototypes. ... Conflicts: libavcodec/x86/dsputil_mmx.c libavformat/flvenc.c libavformat/oggenc.c libavformat/wtv.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Do not include mathematics.h in avutil.hMans Rullgard2011-07-03
| | | | | | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
| * pad: make the filter parametricStefano Sabatini2011-04-26
| | | | | | | | | | Signed-off-by: Stefano Sabatini <stefano.sabatini-lala@poste.it> Signed-off-by: Anton Khirnov <anton@khirnov.net>
| * Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-19
| | | | | | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
| * lavfi: put color source in a dedicated fileStefano Sabatini2011-02-21
| | | | | | | | | | | | Move the color source code from vf_pad.c to vsrc_color.c. Signed-off-by: Mans Rullgard <mans@mansr.com>
| * lavfi: add drawutilsStefano Sabatini2011-02-21
| | | | | | | | | | | | | | 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>
| * Merge libavcore into libavutilReinhard Tartler2011-02-15
| | | | | | | | | | | | | | | | | | | | | | | | It is pretty hopeless that other considerable projects will adopt libavutil alone in other projects. Projects that need small footprint are better off with more specialized libraries such as gnulib or rather just copy the necessary parts that they need. With this in mind, nobody is helped by having libavutil and libavcore split. In order to ease maintenance inside and around FFmpeg and to reduce confusion where to put common code, avcore's functionality is merged (back) to avutil. Signed-off-by: Reinhard Tartler <siretart@tauware.de>
* | lavfi: add layout negotiation fields and helper functions.Mina Nagy Zaki2011-06-19
| |
* | vsrc_color: add @file doxyStefano Sabatini2011-06-18
| | | | | | | | Also remove outdated reference to color in vf_pad.c.
* | pad: make the filter parametricStefano Sabatini2011-04-19
| | | | | | | | | | | | Address trac issue #61. Signed-off-by: Stefano Sabatini <stefano.sabatini-lala@poste.it>
* | lavfi: put color source in a dedicated fileStefano Sabatini2011-02-21
| | | | | | | | | | | | Move the color source code from vf_pad.c to vsrc_color.c. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavfi: add drawutilsStefano Sabatini2011-02-21
| | | | | | | | | | | | | | 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>
* | Merge libavcore into libavutilReinhard Tartler2011-02-16
|/ | | | Done to keep ABI compatible. Otherwise this is just silly