aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/yuv4mpegenc.c
Commit message (Collapse)AuthorAgeFilesLines
* avformat/mux: Add flag for "not more than one stream of each type"Andreas Rheinhardt2024-03-221-3/+2
| | | | | | | | | | | | | | | | More exactly: Not more than one stream of each type for which a default codec (i.e. AVOutputFormat.(audio|video|subtitle)_codec) is set; for those types for which no such codec is set (or for which no designated default codec in AVOutputFormat exists at all) no streams are permitted. Given that with this flag set the default codecs become more important, they are now set explicitly to AV_CODEC_ID_NONE for "unset"; the earlier code relied on AV_CODEC_ID_NONE being equal to zero, so that default static initialization set it accordingly; but this is not how one is supposed to use an enum. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/avformat: Avoid including codec.h, frame.hAndreas Rheinhardt2023-09-071-0/+1
| | | | | | | | | | | | | | | | AVCodec is only ever used as an incomplete type (i.e. via a pointer to an AVCodec) in avformat.h and it is not really part of the core of avformat.h or libavformat; almost none of our internal users make use of it (and none make use of hwcontext.h, which is implicitly included). So switch to use struct AVCodec, but continue to include codec.h for external users for compatibility. Also, do the same for AVFrame and frame.h, which is implicitly included by codec.h (via lavu/hwcontext.h). Also, remove an unnecessary inclusion of <time.h>. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/yuvmpegenc: add support for rawvideo inputJames Almer2023-05-181-1/+7
| | | | | | | | The demuxer exports rawvideo, so there's no reason for the muxer to only work with wrapped_avframe. Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* yuv4mpegenc: add bitdepth multiplier after rounding width.Ronald S. Bultje2023-04-191-1/+2
| | | | Fixes output of HBD odd-width chroma.
* avformat/avformat: Move AVOutputFormat internals out of public headerAndreas Rheinhardt2023-02-091-6/+7
| | | | | | | | | | | | | | This commit does for AVOutputFormat what commit 20f972701806be20a77f808db332d9489343bb78 did for AVCodec: It adds a new type FFOutputFormat, moves all the internals of AVOutputFormat to it and adds a now reduced AVOutputFormat as first member. This does not affect/improve extensibility of both public or private fields for muxers (it is still a mess due to lavd). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* avformat/yuv4mpegenc: Write data generically via AVPixFmtDescriptorAndreas Rheinhardt2021-08-061-73/+14
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/yuv4mpegenc: add support for yuva444pPaul B Mahol2021-07-251-0/+13
|
* avformat: Constify all muxer/demuxersAndreas Rheinhardt2021-04-271-1/+1
| | | | | | | This is possible now that the next-API is gone. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat: remove deprecated AVStream.codecJames Almer2021-04-271-7/+0
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/yuv4mpegenc: Add const where appropriateAndreas Rheinhardt2020-09-041-4/+2
| | | | | Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avformat/yuv4mpegenc: Simplify writing global and packet headersAndreas Rheinhardt2020-09-041-14/+7
| | | | | | | | | | | | | | YUV4MPEG writes a string as header for both the file itself as well as for every frame; these strings contain magic strings and these were up until now included in the string to write via %s. Yet they are compile time constants, so one can use the compile-time string concatentation instead of inserting these strings at runtime. Furthermore, the global header has been written via snprintf() to a local buffer first before writing it. This can be simplified by using avio_printf(). Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avformat/yuv4mpegenc: simplify writing the headerJames Almer2020-09-031-21/+14
| | | | | | | Actually write it in yuv4_write_header() instead of with the first packet. Signed-off-by: James Almer <jamrial@gmail.com>
* libavformat/yuv4mpeg: Add color range support for Y4M Add color_range ↵Wang Cao2018-06-301-2/+35
| | | | | | | | | | support in Y4M. Set pixel format and color_range for YUVJ pixel formats. Also set color_range based on AVFormatContext. Signed-off-by: Wang Cao <wangcao@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/yuv4mpeg: add gray9/10/12 supportMateusz2017-10-261-3/+20
| | | | Signed-off-by: Mateusz Brzostek <mateuszb@poczta.onet.pl>
* Merge commit '9200514ad8717c63f82101dc394f4378854325bf'Derek Buitenhuis2016-04-101-15/+24
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '9200514ad8717c63f82101dc394f4378854325bf': lavf: replace AVStream.codec with AVStream.codecpar This has been a HUGE effort from: - Derek Buitenhuis <derek.buitenhuis@gmail.com> - Hendrik Leppkes <h.leppkes@gmail.com> - wm4 <nfxjfg@googlemail.com> - Clément Bœsch <clement@stupeflix.com> - James Almer <jamrial@gmail.com> - Michael Niedermayer <michael@niedermayer.cc> - Rostislav Pehlivanov <atomnuker@gmail.com> Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * lavf: replace AVStream.codec with AVStream.codecparAnton Khirnov2016-02-231-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, AVStream contains an embedded AVCodecContext instance, which is used by demuxers to export stream parameters to the caller and by muxers to receive stream parameters from the caller. It is also used internally as the codec context that is passed to parsers. In addition, it is also widely used by the callers as the decoding (when demuxer) or encoding (when muxing) context, though this has been officially discouraged since Libav 11. There are multiple important problems with this approach: - the fields in AVCodecContext are in general one of * stream parameters * codec options * codec state However, it's not clear which ones are which. It is consequently unclear which fields are a demuxer allowed to set or a muxer allowed to read. This leads to erratic behaviour depending on whether decoding or encoding is being performed or not (and whether it uses the AVStream embedded codec context). - various synchronization issues arising from the fact that the same context is used by several different APIs (muxers/demuxers, parsers, bitstream filters and encoders/decoders) simultaneously, with there being no clear rules for who can modify what and the different processes being typically delayed with respect to each other. - avformat_find_stream_info() making it necessary to support opening and closing a single codec context multiple times, thus complicating the semantics of freeing various allocated objects in the codec context. Those problems are resolved by replacing the AVStream embedded codec context with a newly added AVCodecParameters instance, which stores only the stream parameters exported by the demuxers or read by the muxers.
* | fix some a/an typosLou Logan2016-03-281-1/+1
| | | | | | | | Signed-off-by: Lou Logan <lou@lrcd.com>
* | Merge commit 'e80307140f736f593ee643affa015333d7c5e27f'Derek Buitenhuis2016-02-161-0/+1
|\| | | | | | | | | | | | | * commit 'e80307140f736f593ee643affa015333d7c5e27f': yuv4mpegenc: Use AV_CEIL_RSHIFT where needed Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * yuv4mpegenc: Use AV_CEIL_RSHIFT where neededVittorio Giovara2016-01-251-2/+2
| |
* | avutil: Rename FF_CEIL_COMPAT to AV_CEIL_COMPATDerek Buitenhuis2016-01-271-2/+2
| | | | | | | | | | | | | | | | | | | | 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>
* | Merge commit 'd00a8fd417ad20cecbc7ca17b25f352655148fb1'Hendrik Leppkes2015-10-141-13/+11
|\| | | | | | | | | | | | | * commit 'd00a8fd417ad20cecbc7ca17b25f352655148fb1': yuv4mpeg: Use the wrapped avframe pseudo-encoder Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * yuv4mpeg: Use the wrapped avframe pseudo-encoderLuca Barbato2015-10-101-12/+11
| |
* | avformat/yuv4mpegenc: use avio_printf()Paul B Mahol2015-07-031-3/+1
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | avformat/yuv4mpegenc: Use AVFormatContext strict_std_compliance instead of ↵Michael Niedermayer2014-11-061-1/+1
| | | | | | | | | | | | AVCodecContext Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '650d384048ed42579cc6d67bf32a94b468c0b6cb'Michael Niedermayer2014-07-091-9/+6
|\| | | | | | | | | | | | | | | | | | | * commit '650d384048ed42579cc6d67bf32a94b468c0b6cb': yuv4mpegenc: do not access AVCodecContext.coded_frame Conflicts: libavformat/yuv4mpegenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * yuv4mpegenc: do not access AVCodecContext.coded_frameAnton Khirnov2014-07-091-3/+5
| | | | | | | | | | | | | | | | Its contents are meaningful only if the stream codec context is the one actually used for encoding, which is often not the case (and is discouraged). Use AVCodecContext.field_order instead.
* | Merge commit '194be1f43ea391eb986732707435176e579265aa'Michael Niedermayer2014-06-181-2/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '194be1f43ea391eb986732707435176e579265aa': lavf: switch to AVStream.time_base as the hint for the muxer timebase Conflicts: doc/APIchanges libavformat/filmstripenc.c libavformat/movenc.c libavformat/mxfenc.c libavformat/oggenc.c libavformat/swf.h libavformat/version.h tests/ref/lavf/mkv Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavf: switch to AVStream.time_base as the hint for the muxer timebaseAnton Khirnov2014-06-181-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | Previously, AVStream.codec.time_base was used for that purpose, which was quite confusing for the callers. This change also opens the path for removing AVStream.codec. The change in the lavf-mkv test is due to the native timebase (1/1000) being used instead of the default one (1/90000), so the packets are now sent to the crc muxer in the same order in which they are demuxed (previously some of them got reordered because of inexact timestamp conversion).
* | Merge commit 'e4dc1000d7bbbcb5b45cf9849fc5315f19578e37'Michael Niedermayer2014-05-181-19/+142
|/ | | | | | | | | | * commit 'e4dc1000d7bbbcb5b45cf9849fc5315f19578e37': yuv4mpeg: split the demuxer and muxer into separate files Conflicts: libavformat/yuv4mpegdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
* yuv4mpeg: split the demuxer and muxer into separate filesAnton Khirnov2014-05-181-0/+186