summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* avfilter/vf_colorlevels: Fix build failure on ARMMichael Niedermayer2022-03-06
| | | | | | | | | | This fixes building for arm after 10c2ef1ca41dbe7811f0588f4163c8cf7b8fda66. The argument to av_clip_uintp2 must be an assembly time immediate constant. Reviewed-by: Paul B Mahol <onemda@gmail.com> Reviewed-by and commit message details-by: Martin Storsjö <martin@martin.st> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avfilter/vsrc_gradients: add radial gradientsPaul B Mahol2022-03-06
|
* avfilter/vsrc_gradients: add gbrapf32 format supportPaul B Mahol2022-03-06
|
* avfilter/vf_colorlevels: add planar rgb formats supportPaul B Mahol2022-03-06
|
* avcodec: add pcm-bluray encoderPaul B Mahol2022-03-06
|
* avformat/mpegtsenc: fix muxing pcm-blurayPaul B Mahol2022-03-06
|
* tests: update hash as output have changed again for fate-lavf-mxf_opatomPaul B Mahol2022-03-06
|
* avfilter/avf_ahistogram: use av_clip_uint8() insteadPaul B Mahol2022-03-06
|
* avcodec/dnxhdenc: fill unused bytes from put bits buffer with zerosPaul B Mahol2022-03-05
|
* avfilter/avf_ahistogram: add new histogram mode optionPaul B Mahol2022-03-05
|
* avcodec/dnxhdenc: retry increasing qscale to not overflow max_bitsPaul B Mahol2022-03-05
| | | | | | | Increase mb_bits type from uint16_t to uint32_t to fix possible overflows in bit size calculations. Update fate test that needs change.
* avcodec/dnxhdenc: fix possible out of bound writes for big w/hPaul B Mahol2022-03-04
| | | | It was caused by integer overflows.
* fftools/ffmpeg_opt: Apply copyinkf for all stream typesAndreas Rheinhardt2022-03-04
| | | | | | | | | | The earlier code has ignored it for all stream types except video and subtitles, probably because audio was presumed to only consist of keyframes. Yet this assumption is not true for e.g. TrueHD. Reviewed-by: Jan Ekström <jeebjp@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/vf_pad: use already available outlink variablePaul B Mahol2022-03-04
|
* avformat/mov: reindent after previous commitClément Bœsch2022-03-04
|
* avformat/mov: fix seeking with HEVC open GOP filesClément Bœsch2022-03-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was tested with medias recorded from an iPhone XR and an iPhone 13. Here is how a typical stream looks like in coding order: ┌────────┬─────┬─────┬──────────┐ │ sample | PTS | DTS | keyframe | ├────────┼─────┼─────┼──────────┤ ┊ ┊ ┊ ┊ ┊ │ 53 │ 560 │ 510 │ No │ │ 54 │ 540 │ 520 │ No │ │ 55 │ 530 │ 530 │ No │ │ 56 │ 550 │ 540 │ No │ │ 57 │ 600 │ 550 │ Yes │ │ * 58 │ 580 │ 560 │ No │ │ * 59 │ 570 │ 570 │ No │ │ * 60 │ 590 │ 580 │ No │ │ 61 │ 640 │ 590 │ No │ │ 62 │ 620 │ 600 │ No │ ┊ ┊ ┊ ┊ ┊ In composition/display order: ┌────────┬─────┬─────┬──────────┐ │ sample | PTS | DTS | keyframe | ├────────┼─────┼─────┼──────────┤ ┊ ┊ ┊ ┊ ┊ │ 55 │ 530 │ 530 │ No │ │ 54 │ 540 │ 520 │ No │ │ 56 │ 550 │ 540 │ No │ │ 53 │ 560 │ 510 │ No │ │ * 59 │ 570 │ 570 │ No │ │ * 58 │ 580 │ 560 │ No │ │ * 60 │ 590 │ 580 │ No │ │ 57 │ 600 │ 550 │ Yes │ │ 63 │ 610 │ 610 │ No │ │ 62 │ 620 │ 600 │ No │ ┊ ┊ ┊ ┊ ┊ Sample/frame 58, 59 and 60 are B-frames which actually depends on the key frame (57). Here the key frame is not an IDR but a "CRA" (Clean Random Access). Initially, I thought I could rely on the sdtp box (independent and disposable samples), but unfortunately: sdtp[54] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0 sdtp[55] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0 sdtp[56] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0 sdtp[57] is_leading:0 sample_depends_on:2 sample_is_depended_on:0 sample_has_redundancy:0 sdtp[58] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0 sdtp[59] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0 sdtp[60] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0 sdtp[61] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0 sdtp[62] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0 The information that might have been useful here would have been is_leading, but all the samples are set to 0 so this was unusable. Instead, we need to rely on sgpd/sbgp tables. In my case the video track contained 3 sgpd tables with the following grouping types: tscl, sync and tsas. In the sync table we have the following 2 entries (only): sgpd.sync[1]: sync nal_unit_type:0x14 sgpd.sync[2]: sync nal_unit_type:0x15 (The count starts at 1 because 0 carries the undefined semantic, we'll see that later in the reference table). The NAL unit types presented here correspond to: libavcodec/hevc.h: HEVC_NAL_IDR_N_LP = 20, libavcodec/hevc.h: HEVC_NAL_CRA_NUT = 21, In parallel, the sbgp sync table contains the following: ┌────┬───────┬─────┐ │ id │ count │ gdi │ ├────┼───────┼─────┤ │ 0 │ 1 │ 1 │ │ 1 │ 56 │ 0 │ │ 2 │ 1 │ 2 │ │ 3 │ 59 │ 0 │ │ 4 │ 1 │ 2 │ │ 5 │ 59 │ 0 │ │ 6 │ 1 │ 2 │ │ 7 │ 59 │ 0 │ │ 8 │ 1 │ 2 │ │ 9 │ 59 │ 0 │ │ 10 │ 1 │ 2 │ │ 11 │ 11 │ 0 │ └────┴───────┴─────┘ The gdi column (group description index) directly refers to the index in the sgpd.sync table. This means the first frame is an IDR, then we have batches of undefined frames interlaced with CRA frames. No IDR ever appears again (tried on a 30+ seconds sample). With that information, we can build an heuristic using the presentation order. A few things needed to be introduced in this commit: 1. min_sample_duration is extracted from the stts: we need the minimal step between sample in order to PTS-step backward to a valid point 2. In order to avoid a loop over the ctts table systematically during a seek, we build an expanded list of sample offsets which will be used to translate from DTS to PTS 3. An open_key_samples index to keep track of all the non-IDR key frames; for now it only supports HEVC CRA frames. We should probably add BLA frames as well, but I don't have any sample so I prefered to leave that for later It is entirely possible I missed something obvious in my approach, but I couldn't come up with a better solution. Also, as mentioned in the diff, we could optimize is_open_key_sample(), but the linear scaling overhead should be fine for now since it only happens in seek events. Fixing this issue prevents sending broken packets to the decoder. With FFmpeg hevc decoder the frames are skipped, with VideoToolbox the frames are glitching.
* avformat/mov: add parsing for the sgpd sync boxClément Bœsch2022-03-04
| | | | | | | | | | | sgpd means Sample Group Description Box. For now, only the sync grouping type is parsed, but the function can easily be adjusted to support other flavours. The sbgp (Sample to Group Box) sync_group table built in previous commit contains references to this table through the group_description_index field.
* avformat/mov: add support for sync group in sbgp boxClément Bœsch2022-03-04
|
* avformat/mov: prepare sbgp parsing for other grouping typesClément Bœsch2022-03-04
|
* avfilter/vf_zscale: fix leaks in fast/bypass pathPaul B Mahol2022-03-04
|
* avfilter/avf_abitscope: make frame writable before writing to itPaul B Mahol2022-03-04
|
* avfilter/avf_aphasemeter: make frame writable before writing to itPaul B Mahol2022-03-04
|
* avfilter/avf_ahistogram: make frame writable before writing to itPaul B Mahol2022-03-04
|
* avfilter/avf_avectorscope: make frame writable before writing to itPaul B Mahol2022-03-04
|
* avfilter/f_ebur128: make sure frame is writable before writing to itPaul B Mahol2022-03-04
|
* avfilter/f_graphmonitor: add several more flagsPaul B Mahol2022-03-04
|
* avfilter/f_ebur128: switch to activate()Paul B Mahol2022-03-04
|
* configure: Fix detecting/using getauxvalMartin Storsjö2022-03-04
| | | | | | | While trying to detect getauxval, this actually never output HAVE_GETAUXVAL into config.h before. Signed-off-by: Martin Storsjö <martin@martin.st>
* avfilter/asrc_sinc: check allocation return valuePaul B Mahol2022-03-03
|
* avfilter/asrc_sinc: remove no longer correct (un)packPaul B Mahol2022-03-03
|
* avcodec/tiff: do not abort on zero denominatorPaul B Mahol2022-03-03
| | | | Fixes decoding valid DNG file.
* avfilter/framepool: remove superfluous pallete buffer allocationJames Almer2022-03-03
| | | | | | | av_image_fill_plane_sizes() already sets sizes[1] to AVPALETTE_SIZE. Should fix memory leaks. Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter/framepool: use av_image_fill_plane_sizes() to calculate pool sizesJames Almer2022-03-03
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter/vf_zscale: fix several issues in previous commitPaul B Mahol2022-03-03
|
* avfilter/vf_zscale: add slice threading supportVictoria Zhislina2022-03-03
| | | | | | | | | | | By ffmpeg threading support implementation via frame slicing and doing zimg_filter_graph_build that used to take 30-60% of each frame processig only if necessary (some parameters changed) the performance increase vs original version in video downscale and color conversion >4x is seen on 64 cores Intel Xeon, 3x on i7-6700K (4 cores with HT) Signed-off-by: Victoria Zhislina <Victoria.Zhislina@intel.com>
* avfilter/vf_geq: add float formats supportPaul B Mahol2022-03-03
|
* avfilter/avf_abitscope: add support for more input formatsPaul B Mahol2022-03-03
|
* avfilter/avf_abitscope: refactor code & add trace modePaul B Mahol2022-03-03
|
* doc/filters: correct default value of lut filtersGyan Doshi2022-03-03
|
* avfilter/vf_maskedmerge: fix rounding when maskingPaul B Mahol2022-03-03
|
* avfilter/vf_colorchannelmixer: add float formats supportPaul B Mahol2022-03-03
|
* avfilter/vf_colorchannelmixer: refactor / add templatePaul B Mahol2022-03-03
|
* fftools/ffmpeg: Don't presume frame_queue to have been allocatedAndreas Rheinhardt2022-03-03
| | | | | | Fixes segfaults upon allocation failure. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* fftools/ffmpeg_opt: Simplify adding complex filtergraphAndreas Rheinhardt2022-03-03
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* fftools/ffmpeg_opt: Simplify adding new input/output streamsAndreas Rheinhardt2022-03-03
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/avisynth: fix fallbacks for four framepropsStephen Hutchinson2022-03-02
| | | | | | | | | | If _FieldBased, _Matrix, _ColorRange, or _ChromaLocation haven't been set, that absence would be interpreted as 0, leading to those being set to case 0 instead of default. There is no case 0 for _Primaries and _Transfer, so those were correctly falling back to the default case. Signed-off-by: Stephen Hutchinson <qyot27@gmail.com>
* avformat/mov: Disallow empty sidxMichael Niedermayer2022-03-02
| | | | | | | | | | It appears this is not allowed "Each Segment Index box documents how a (sub)segment is divided into one or more subsegments (which may themselves be further subdivided using Segment Index boxes)." Fixes: Null pointer dereference Fixes: Ticket9517 Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavfi/af_aformat: remove support for comma-separated listsNicolas George2022-03-02
| | | | It has been deprecated for nine years.
* avfilter/drawtext: change reload value to an intervalGyan Doshi2022-03-02
| | | | Allows user to specify a frame interval at which textfile is reloaded.
* avcodec: [loongarch] Optimize Hevc_mc_uni/w with LSX.Lu Wang2022-03-01
| | | | | | | | | | ffmpeg -i 5_h265_1080p_60fps_3Mbps.mkv -f rawvideo -y /dev/null -an before: 182fps after : 191fps Signed-off-by: Hao Chen <chenhao@loongson.cn> Reviewed-by: 殷时友 <yinshiyou-hf@loongson.cn> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>