summaryrefslogtreecommitdiff
path: root/libavcodec/libopenh264enc.c
Commit message (Collapse)AuthorAge
* lavc/libopenh264enc: Add coder option to replace cabacLinjie Fu2020-05-13
| | | | | | | | | | | | | | | | | Set DEPRECATED flag to option cabac, replace with coder. The priority logic is: 1. s->coder; then 2. avctx->coder_type; then 3. s->cabac. Change the default option to -1 and allow the default cabac to be determined by profile. Add FF_API_OPENH264_CABAC macro for cabac to remove this option after LIBAVCODEC_VERSION_MAJOR = 59. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Linjie Fu <linjie.fu@intel.com>
* lavc/libopenh264enc: Allow specifying the profile through AVCodecContextLinjie Fu2020-05-13
| | | | | | | | | | | | | | And determine the profile with following priority: 1. s->profile; then 2. avctx->profile; then 3. s->cabac; then 4. a default profile. This seems more natural in case user somehow sets both avctx->profile and s->profile. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Linjie Fu <linjie.fu@intel.com>
* lavc/libopenh264enc: Rewrite profile handlingLinjie Fu2020-05-13
| | | | | | | | | | | | Support the profiles "constrained_baseline" and "high" for libopenh264 version >= 1.8, support "constrained_baseline" and "main" for earlier version. If option not supported with current version, convert to constrained baseline with a warning for users. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Linjie Fu <linjie.fu@intel.com>
* lavc/libopenh264enc: set slice_mode option to deprecatedLinjie Fu2020-04-29
| | | | | | | | | | | | | | | "slice mode" option seems to be unnecessary since it could be determined by -slices/max_nal_size. default: SM_FIXEDSLCNUM_SLICE mode with cpu-number slices. -slices N: SM_FIXEDSLCNUM_SLICE mode with N slices. -max_nal_size: SM_SIZELIMITED_SLICE mode with limited size slices. Add FF_API_OPENH264_SLICE_MODE macro to remove this option after LIBAVCODEC_VERSION_MAJOR = 59. Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* lavc/libopenh264enc: prompt slice number changing inside libopenh264Linjie Fu2020-04-29
| | | | | | | | | | Libopenh264enc would set the slice according to the number of cpu cores if uiSliceNum equals to 0 (auto) in SM_FIXEDSLCNUM_SLICE mode. Prompt a warning for user to catch this. Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* lavc/libopenh264enc: add bit rate control select supportLinjie Fu2020-04-29
| | | | | | | | | | | | | | | | | RC_BITRATE_MODE: set BITS_EXCEEDED to iCurrentBitsLevel and allows QP adjust in RcCalculatePictureQp(). RC_BUFFERBASED_MODE: use buffer status to adjust the video quality. RC_TIMESTAMP_MODE: bit rate control based on timestamp, introduced in release 1.4. Default to use RC_QUALITY_MODE. Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* lavc/libopenh264enc: add default gop size and bit rateLinjie Fu2020-04-29
| | | | | | | | | | | | | | | It would be 200kbps bitrate with gop size = 12 by default which generated too many IDR frames in rather low bit rate. The quality would be poor. Set these default values to -1 to check whether it's specified by user explicitly. Use 2Mbps bitrate as nvenc sugguested, and leave gop size untouched in libopenh264. Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* lavc/libopenh264enc: Add qmin/qmax supportLinjie Fu2020-04-29
| | | | | | | | | | | | | | Clip iMinQp/iMaxQp to (1, 51) for user specified qp range. If not set, leave iMinQp/iMaxQp untouched and use the values (0, 51) initialized in FillDefault(), and the QP range would be adjusted to the defaults inside libopenh264 library according to the iUsageType, (12, 42) for iUsageType == CAMERA_VIDEO_REAL_TIME which is default. <https://github.com/cisco/openh264/blob/master/codec/encoder/core/src/encoder_ext.cpp#L375> Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* lavc/libopenh264enc: fix the if-else coding styleLinjie Fu2020-04-10
| | | | | Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* avcodec/libopenh264enc: fix class_nameTobias Rapp2018-11-13
| | | | | | | Reverts some accidental change in commit e621b1ca646a2f268797adc3194b694a852548d2. Reviewed-by: Jan Ekström <jeebjp@gmail.com> Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
* libopenh264enc: Handle sample_aspect_ratioValery Kot2018-11-05
|
* avcodec/openh264enc.c: generate IDR frame in response to I frame pict_typeValery Kot2018-04-05
| | | | Signed-off-by: Valery Kot <valery.kot@gmail.com>
* avcodec: add metadata to identify wrappers and hardware decoderswm42017-12-14
| | | | | | | | | | | | | | | | | | | | | Explicitly identify decoder/encoder wrappers with a common name. This saves API users from guessing by the name suffix. For example, they don't have to guess that "h264_qsv" is the h264 QSV implementation, and instead they can just check the AVCodec .codec and .wrapper_name fields. Explicitly mark AVCodec entries that are hardware decoders or most likely hardware decoders with new AV_CODEC_CAPs. The purpose is allowing API users listing hardware decoders in a more generic way. The proposed AVCodecHWConfig does not provide this information fully, because it's concerned with decoder configuration, not information about the fact whether the hardware is used or not. AV_CODEC_CAP_HYBRID exists specifically for QSV, which can have software implementations in case the hardware is not capable. Based on a patch by Philip Langdale <philipl@overt.org>. Merges Libav commit 47687a2f8aca3f65b6fdd117b1cb66a7409a7fd1.
* Merge commit '97cfe1d8bd1968143e2ba9aa46ebe9504a835e24'James Almer2017-11-01
|\ | | | | | | | | | | | | * commit '97cfe1d8bd1968143e2ba9aa46ebe9504a835e24': Convert all AVClass struct declarations to designated initializers. Merged-by: James Almer <jamrial@gmail.com>
| * Convert all AVClass struct declarations to designated initializers.Diego Biurrun2017-06-12
| |
* | Merge commit '800d91d348c89fc8ca3fbec7696ab1ec8787acc6'James Almer2017-03-31
|\| | | | | | | | | | | | | * commit '800d91d348c89fc8ca3fbec7696ab1ec8787acc6': Drop pointless void* casts Merged-by: James Almer <jamrial@gmail.com>
| * Drop pointless void* castsDiego Biurrun2016-11-13
| |
* | Merge commit '7a76371437f9562c3414f985523f883489e3936a'Hendrik Leppkes2016-11-18
|\| | | | | | | | | | | | | * commit '7a76371437f9562c3414f985523f883489e3936a': libopenh264enc: Simplify init by setting FF_CODEC_CAP_INIT_CLEANUP Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libopenh264enc: Simplify init by setting FF_CODEC_CAP_INIT_CLEANUPMartin Storsjö2016-07-15
| | | | | | | | | | | | Also set FF_CODEC_CAP_INIT_THREADSAFE while adding internal capabilities. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '2d097c16b833c532ac974a7f1fd05c0a1f3b7675'Hendrik Leppkes2016-11-18
|\| | | | | | | | | | | | | * commit '2d097c16b833c532ac974a7f1fd05c0a1f3b7675': libopenh264enc: Return a more sensible error code in some init failure paths Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libopenh264enc: Return a more sensible error code in some init failure pathsMartin Storsjö2016-07-15
| | | | | | | | | | | | Previously they returned the default AVERROR_UNKNOWN. Signed-off-by: Martin Storsjö <martin@martin.st>
| * libopenh264: Support building with the 1.6 releaseMartin Storsjö2016-07-09
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
| * Add an OpenH264 decoder wrapperMartin Storsjö2016-06-28
| | | | | | | | | | | | | | | | While it is less featureful (and slower) than the built-in H264 decoder, one could potentially want to use it to take advantage of the cisco patent license offer. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '31aa5335c390c83a6c3ea955b155067c36c4a2c4'Hendrik Leppkes2016-10-07
|\| | | | | | | | | | | | | * commit '31aa5335c390c83a6c3ea955b155067c36c4a2c4': libopenh264enc: Fix inconsistent whitespace Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libopenh264enc: Fix inconsistent whitespaceMartin Storsjö2016-06-24
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* | libopenh264: Support building with the 1.6 releaseMartin Storsjö2016-07-27
| | | | | | | | | | | | | | | | | | This fixes trac issue #5417. This is cherry-picked from libav commit d825b1a5306576dcd0553b7d0d24a3a46ad92864. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Add an OpenH264 decoder wrapperMartin Storsjö2016-07-27
| | | | | | | | | | | | | | | | This is cherrypicked from libav, from commits 82b7525173f20702a8cbc26ebedbf4b69b8fecec and d0b1e6049b06eeeeca146ece4d2f199c5dba1565. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '8dead2aaca4aa8b84b77b05745755afb56b7d37a'Derek Buitenhuis2016-04-17
|\| | | | | | | | | | | | | * commit '8dead2aaca4aa8b84b77b05745755afb56b7d37a': Move const qualifier before type name Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * Move const qualifier before type nameDiego Biurrun2016-03-23
| |
* | Merge commit '936f0d98f864f9f6bb4f9e5458b78537e146bacd'Derek Buitenhuis2016-01-31
|\| | | | | | | | | | | | | * commit '936f0d98f864f9f6bb4f9e5458b78537e146bacd': lavc: Move rtp_payload_size to codec private options Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * lavc: Move rtp_payload_size to codec private optionsVittorio Giovara2016-01-21
| | | | | | | | | | | | | | | | | | | | This option is only used by mpegvideoenc and openh264. It is a very codec-specific option, so deprecate the global variant. The openh264 option is dropped altogether since it is just a fallback for -max_nal_size anyway. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit '81c95eb8eee856d98d4ac37367dbc761f2faf875'Hendrik Leppkes2015-12-18
|\| | | | | | | | | | | | | * commit '81c95eb8eee856d98d4ac37367dbc761f2faf875': openh264: Directly include the deprecation guards header Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * openh264: Directly include the deprecation guards headerLuca Barbato2015-12-08
| | | | | | | | | | Make easier to avoid compile failure when reworking the internal headers.
* | Merge commit 'be00ec832c519427cd92218abac77dafdc1d5487'Hendrik Leppkes2015-12-18
|\| | | | | | | | | | | | | * commit 'be00ec832c519427cd92218abac77dafdc1d5487': lavc: Deprecate coder_type and its symbols Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavc: Deprecate coder_type and its symbolsVittorio Giovara2015-12-07
| | | | | | | | | | | | | | | | | | | | Most option values are simply unused or ignored and in practice the majory of codecs only need to check whether to enable rle or not. Add appropriate codec private options which better expose the allowed features. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | Merge commit '11c9bd633f635f07a762be1ecd672de55daf4edc'Hendrik Leppkes2015-12-17
|\| | | | | | | | | | | | | * commit '11c9bd633f635f07a762be1ecd672de55daf4edc': libopenh264enc: export CPB props side data Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libopenh264enc: export CPB props side dataAnton Khirnov2015-12-06
| |
| * libopenh264enc: Set AVOption data typeMichael Niedermayer2015-11-06
| | | | | | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* | lavc/libopenh264: apply minor options text consistency fixesStefano Sabatini2015-12-16
| |
* | avcodec/libopenh264enc: use AV_OPT_TYPE_BOOL for allow_skip_frames optionClément Bœsch2015-10-31
| |
* | avcodec/libopenh264enc: AV_OPT_TYPE_STRING should use .str defaultMichael Niedermayer2015-10-31
| | | | | | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | avcodec/libopenh264enc: Fix project nameMichael Niedermayer2015-10-31
| | | | | | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | avcodec/libopenh264enc: set .i64 for AV_OPT_TYPE_INTMichael Niedermayer2015-10-31
| | | | | | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | Merge commit '8edaf625f3c38c695c33745822182e94e17d6e1b'Hendrik Leppkes2015-10-29
|\| | | | | | | | | | | | | * commit '8edaf625f3c38c695c33745822182e94e17d6e1b': libopenh264enc: Count and warn about the number of skipped frames Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libopenh264enc: Count and warn about the number of skipped framesMartin Storsjö2015-10-28
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '9e14a992409348630ea96521411127418a92e8a3'Hendrik Leppkes2015-10-29
|\| | | | | | | | | | | | | * commit '9e14a992409348630ea96521411127418a92e8a3': libopenh264enc: Add an option for controlling the frame skipping Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libopenh264enc: Add an option for controlling the frame skippingMartin Storsjö2015-10-28
| | | | | | | | | | | | | | This allows enabling the frame skipping, which is required for the encoder to properly hit the target bitrate. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'c3e5c47bdae2bb8219fea62d91b7455650b22c60'Hendrik Leppkes2015-10-10
|\| | | | | | | | | | | | | * commit 'c3e5c47bdae2bb8219fea62d91b7455650b22c60': libopenh264enc: Added max_nal_size option Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * libopenh264enc: Added max_nal_size optionMario Gasparoni2015-10-09
| | | | | | | | | | | | Also added dynamic slice_mode option, needed for the max_nal_size. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit '1a4c5fe56008c61b0362c75bea5d446dc5b256bc'Hendrik Leppkes2015-09-29
|\| | | | | | | | | | | | | * commit '1a4c5fe56008c61b0362c75bea5d446dc5b256bc': libopenh264enc: Use av_log() to log messages Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>