summaryrefslogtreecommitdiff
path: root/libavcodec/libopenh264enc.c
Commit message (Collapse)AuthorAge
* avcodec/libopenh264enc: Allow user-supplied buffersAndreas Rheinhardt2021-05-23
| | | | | | | | Here the packet size is known before allocating the packet, so that supporting user-supplied buffers is trivial. Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec: Constify AVCodecsAndreas Rheinhardt2021-04-27
| | | | | | | | | | Given that the AVCodec.next pointer has now been removed, most of the AVCodecs are not modified at all any more and can therefore be made const (as this patch does); the only exceptions are the very few codecs for external libraries that have a init_static_data callback. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec: Remove deprecated coder type optionsAndreas Rheinhardt2021-04-27
| | | | | | | Deprecated in be00ec832c519427cd92218abac77dafdc1d5487. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* lavc: rename AV_CODEC_CAP_AUTO_THREADS->AV_CODEC_CAP_OTHER_THREADSAnton Khirnov2021-03-16
| | | | | | | | | | This cap is currently used to mark multithreading-capable codecs that wrap external libraries with their own multithreading code. The name is highly confusing for our API users, since libavcodec ALWAYS handles thread_count=0 (see commit message in previous commit). Therefore rename the cap and update its documentation to make its meaning clear. The old name is kept deprecated until next+1 major bump.
* lavc: replace internal use of AV_CODEC_CAP_AUTO_THREADS with an internal capAnton Khirnov2021-03-16
| | | | | | | | | | | | | | | | AV_CODEC_CAP_AUTO_THREADS was originally added in b4d44a45f9a to mark codecs that spawn threads internally and are able to select an optimal threads count by themselves (all such codecs are wrappers around external libraries). It is used by lavc generic code to check whether it should handle thread_count=0 itself or pass the zero directly to the codec implementation. Within this meaning, it is clearly supposed to be an internal cap rather than a public one, since from the viewpoint of a libavcodec user, lavc ALWAYS handles thread_count=0. Whether it happens in the generic code or within the codec internals is not a meaningful difference for the caller. External aspects of this flag will be dealt with in the following commit.
* lavc/libopenh264enc: use framerate if availableJun Zhao2020-08-05
| | | | | | | | | | Respecting the framerate in the libopenh264enc codec context. Both the libx264 and libx265 encoders already contain similar logic to first check the framerate before falling back to the timebase. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
* 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>