1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-28 20:53:54 +02:00
Commit Graph

106611 Commits

Author SHA1 Message Date
Linjie Fu
a285968a0b lavc/vaapi_encode_h265: Add GPB frame support for hevc_vaapi
Use GPB frames to replace regular P/B frames if backend driver does not
support it.

- GPB:
    Generalized P and B picture. Regular P/B frames replaced by B
    frames with previous-predict only, L0 == L1. Normal B frames
    still have 2 different ref_lists and allow bi-prediction

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
Signed-off-by: Fei Wang <fei.w.wang@intel.com>
2022-04-11 11:38:43 +08:00
Paul B Mahol
6e45acd23b avfilter: let single output frame A->V filters set reasonable frame rate 2022-04-10 22:41:26 +02:00
Marton Balint
7ac559b819 fate: add fate tests for VBN encoder and decoder
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
ee50cc18b3 avcodec/vbnenc: add VBN encoder
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
013d774e22 avcodec/vbndec: add VBN decoder
Add support for decoding Vizrt Binary Image (VBN) files.

LZW-compressed data is not supported yet.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
a4570d7a66 avcodec/hapenc: use the common texturedsp encode function
And add slice thread capabilities.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
b3074ac9f4 avcodec/hapdec: use the common texturedsp decode function
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
30fdcd2e12 avcodec/dds: use the common texture dsp decode function
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
541d3755e9 avcodec/texturedsp: add TextureDSPThreadContext for common decode/encode function
This will allow using a common threaded decode or encode function from most
codecs using texture DSP functions.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Marton Balint
80e997b081 fate/filter-refcmp-*: make refcmp_metadata fail on empty or truncated input
On empty input the awk script was always successful which caused the
filter-refcmp tests to always succeed.

Also fix the command lines for refcmp_metadata compare function because it
needs auto conversion filters, and update reference of test
filter-refcmp-psnr-rgb because it was missed in
a7fc78c1a6 but was never noticed due to the
original issue...

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 20:12:23 +02:00
Peter Ross
072101bd52 avcodec/binkaudio: fix indentation to match previous line
Signed-off-by: Peter Ross <pross@xvid.org>
2022-04-10 10:45:02 +10:00
Andrey Volk
4e6debe1df avcodec/libwebpenc_animencoder: Fix memory leak of WebPData in libwebp_anim_encode_frame()
Signed-off-by: Andrey Volk <andywolk@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-10 01:13:19 +02:00
Romain Beauxis
2a44db59ca avdevice/dshow: Fix dshow device name/description
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-09 21:29:39 +02:00
Peter Ross
7f534d022e avformat/codec2: remove surplus include 'memory.h' statement
on glibc memory.h drags in string.h, but codec2 does not use any
str* or mem* functions. additionally, memory.h is not part of the
C99 or POSIX standards.

Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-09 21:05:18 +02:00
TADANO Tokumei
ad063e6e10 avformat/mpegts.c: ignore a section with next flag
'current_next_indicator' of 0 (next) on each section header indicates
the service information is for immediate future one.
ffmpeg doesn't need to parse it but current (1) one.

ref: section 5.1.1 of DVB BlueBook A038 (EN 300 468)

Signed-off-by: TADANO Tokumei <aimingoff@pc.nifty.jp>
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-09 20:23:45 +02:00
TADANO Tokumei
5dcedfcd17 avformat/mpegts.c: fix to check end of each descriptor of SDT
Current code incorrectly check against end of section rather than
end of descriptor.

Signed-off-by: TADANO Tokumei <aimingoff@pc.nifty.jp>
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-04-09 19:58:53 +02:00
softworkz
58b07ecb3f avcodec/dvdsubdec: fix incorrect yellow appearance of dvd subtitles
The guess_palette() implementation is questionable in itself
as its results don't match those from other DVD subtitle decoders.

This commit starts cleanup by fixing an obvious bug which has made
certain DVD subs appear yellow instead of white or grey for more than
10 years..

Signed-off-by: softworkz <softworkz@hotmail.com>
Signed-off-by: rcombs <rcombs@rcombs.me>
2022-04-09 04:45:28 -05:00
James Almer
aa0829d834 fate: update reference files after the recent dash manifest muxer changes
Missed in 487b49d8f2.

Signed-off-by: James Almer <jamrial@gmail.com>
2022-04-08 16:08:53 -03:00
Paul B Mahol
5a9de38e54 avfilter/vf_waveform: copy props from input frame 2022-04-08 18:54:00 +02:00
Paul B Mahol
a700dc3735 avfilter/vf_waveform: add some support for commands 2022-04-08 18:54:00 +02:00
Paul B Mahol
e528ced7c8 avfilter/vf_vectorscope: add some commands support 2022-04-08 18:54:00 +02:00
Paul B Mahol
49526852c3 avfilter/vf_drawbox: add packed rgb support 2022-04-08 12:17:26 +02:00
Paul B Mahol
8d6acba59a avfilter/vf_colorkey: use multiplication instead of division 2022-04-08 10:16:59 +02:00
Paul B Mahol
c3f5f1bc56 avfilter/vf_colorkey: add >8 depth support 2022-04-08 10:02:33 +02:00
Paul B Mahol
9d20f64f9c avformat/smacker: add better seeking support 2022-04-08 10:02:33 +02:00
Haihao Xiang
b2dd3e844d qsvenc: fix typo
Reviewed-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
2022-04-08 11:16:29 +08:00
James Almer
487b49d8f2 avformat/webmdashenc: fix on-demand profile string
Fixes ticket #9596

Signed-off-by: James Almer <jamrial@gmail.com>
2022-04-07 21:57:42 -03:00
James Almer
3e186148ca avcodec/libdav1d: don't depend on the event flags API to init sequence params the first time
A bug was found in dav1d <= 1.0.0 where the event flag New Sequence Header would
not be signaled for some samples using delayed random access points.
It has since been fixed, but nonetheless it's best to ensure the AVCodecContext
is filled with parameters when parsing the first frame, regardless of what events
were signaled.

Fixes ticket #9694.

Signed-off-by: James Almer <jamrial@gmail.com>
2022-04-07 15:28:50 -03:00
James Almer
e3c4442b24 avcodec/libsvtav1: give svtav1-params priority over avctx values
If the svt equivalent option to an avctx AVOption is passed by the user
then it should have priority. The exception are fields like dimensions, bitdepth
and pixel format, which must match what lavc will feed the encoder after init.

This addresses libsvt-av1 issue #1858.

Signed-off-by: James Almer <jamrial@gmail.com>
2022-04-07 12:15:39 -03:00
Hendrik Leppkes
cd96211ace avfilter/f_ebur128: multiply in integer first, before dividing in float
Restores the order of operations from before 15a1104, which reduces
errors from floating point calculations, and fixes FATE on mingw64.
2022-04-07 16:37:51 +02:00
Gyan Doshi
607ecc27ed doc/filters: add range/defaults for tile filter options 2022-04-07 15:56:43 +05:30
Paul B Mahol
55d414829c avfilter/af_ladspa: fix pts compensation if number of samples per frame is lower than latency 2022-04-07 09:39:55 +02:00
Paul B Mahol
4fbf3c828b avfilter/af_ladspa: compensate output pts if latency compensation is on 2022-04-06 16:59:45 +02:00
Wenbin Chen
fb88809063 libavcodec/qsvenc: Add more pixel format support to qsvenc
Qsv encoder only support input P010 and nv12 format directly from system
memory. For other format, we need to upload frame to device memory and
input qsv format to encoder. Now add other system memory format support
to qsv encoder.

Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
2022-04-06 17:12:26 +08:00
Wenbin Chen
e0ae810da3 libavcodec/qsvdec: Add more pixel format support to qsvdec
Qsv decoder only supports directly output nv12 and p010 to system
memory. For other format, we need to download frame from qsv format
to system memory. Now add other supported format to qsvdec.

Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
2022-04-06 17:12:26 +08:00
Wenbin Chen
0a0847dbac libavcodec/qsvdec: using suggested num to set init_pool_size
The init_pool_size is set to be 64 and it is too many.
Use IOSurfQuery to get NumFrameSuggest which is the suggested
number of frame that needed to be allocated when initializing the decoder.
Considering that the hevc_qsv encoder uses the  most frame buffer,
async is 4 (default) and max_b_frames is 8 (default) and decoder
may followed by VPP, use NumFrameSuggest + 16 to set init_pool_size.

Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
Signed-off-by: Guangxin Xu <guangxin.xu@intel.com>
2022-04-06 17:12:26 +08:00
Wenbin Chen
4a633eb36f libavcodec/qsvdec: remove redundant decodeHeader()
Since ffmpeg-qsv uses return value to reinit decoder, it doesn't need to
decode header each time. Move qsv_decode_header's position so that
it will be called only if codec needed to be reinitialized.
Rearrange the code of flushing decoder and re-init decoder operation.
Remove the buffer_count and use the got_frame to decide whether the
decoder is drain.

Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
Signed-off-by: Guangxin Xu <guangxin.xu@intel.com>
2022-04-06 17:12:26 +08:00
Wenbin Chen
40f38659d7 libavcodec/qsvdec: reinit decoder according to decode() return value
FFmpeg-qsv decoder reinit codec when width and height change, but there
are not only resolution change need to reinit codec. I change it to use
return value from DecodeFrameAsync() to decide whether decoder need to
be reinitialized.

Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
Signed-off-by: Guangxin Xu <guangxin.xu@intel.com>
2022-04-06 17:12:26 +08:00
He, Fan F
ad21f26492 libavcodec/qsvenc: enable LowDelayBRC and MaxFrameSizeI/MaxFrameSizeP for more accurate bitrate control
Feature introduction of LowDelayBRC, MaxFrameSizeI and MaxFrameSizeP could be found here:
https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md

Signed-off-by: Dmitry Ermilov <dmitry.ermilov@intel.com>
Signed-off-by: Fan F He <fan.f.he@intel.com>
2022-04-06 17:12:26 +08:00
Ingo Brückl
02111be0c1 libavutil/hwcontext_vaapi: Re-enable support for libva v1
Commit e050959103 implemented passing in
modifiers by using the PRIME_2 memory type, which only exists in v2 of
the library.

To still support v1 of the library, conditionally compile using
VA_CHECK_VERSION() for both the new code and the old code before
the commit.

Note PRIME_2 memory was introduced from VA-API 1.1, so use
VA_CHECK_VERSION(1, 1, 0) instead of VA_CHECK_VERSION(2, 0, 0) (Haihao)

Signed-off-by: Ingo Brückl <ib@wupperonline.de>
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
2022-04-06 17:12:26 +08:00
Stefano Sabatini
67c1078046 doc/fate: add note about showing test names and running a tests subset 2022-04-06 09:22:31 +02:00
Danil Chapovalov
706f12992d avcodec/libvpxenc: enable dynamic max quantizer reconfiguration
Signed-off-by: James Zern <jzern@google.com>
2022-04-05 17:38:52 -07:00
James Almer
c9ecbc08a1 tests: use a filtergraph script for fate-mov-channel-description
Should fix running the test on certain shells

Signed-off-by: James Almer <jamrial@gmail.com>
2022-04-05 21:25:26 -03:00
Andreas Rheinhardt
24fd3ff5a2 avcodec/vp9_raw_reorder_bsf: Merge close and flush
Also mark the function as av_cold while at it.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 22:19:50 +02:00
Andreas Rheinhardt
ebec607941 avcodec/vp9_raw_reorder_bsf: Fix leak of cached packet
In case the BSF has not been drained before flushing/closing,
the context's next_frame might be set; yet it is not freed
in flush or close. The former only zeroes it (which automatically
causes a leak in case it was set). So do this when closing
and flushing.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 22:19:50 +02:00
Andreas Rheinhardt
a68a6322b7 avformat/mpegenc: Fix ever growing FIFO and infinite loop on error
Since the switch to the new FIFO API in commit
ea511196a6, the FIFO is always
grown by the amount of data intended to be written into it
even in case the FIFO has enough free space. Fix this by
only growing the FIFO if needed and then only by the amount that is
actually needed.

The allocation errors that resulted from this uncovered another bug:
The context is left in an inconsistent state in case the FIFO can't
be grown, because the FIFO does not contain as much data as the sizes
contained in the PacketDesc list claim. This led to an infinite loop
in output_packet() (called from mpeg_mux_end()).

Fix this by growing the FIFO before adding a new PacketDesc element,
thereby preventing the context from becoming inconsistent.

Reported-by: Nicolas Gaullier <nicolas.gaullier@cji.paris>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 21:52:11 +02:00
Andreas Rheinhardt
6ed0d95fa2 avcodec/codec_internal: Constify AVPacket in decode_sub cb
No subtitle decoder ever modifies the AVPacket given to it.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 20:02:47 +02:00
Andreas Rheinhardt
4243da4ff4 avcodec/codec_internal: Use union for FFCodec decode/encode callbacks
This is possible, because every given FFCodec has to implement
exactly one of these. Doing so decreases sizeof(FFCodec) and
therefore decreases the size of the binary.
Notice that in case of position-independent code the decrease
is in .data.rel.ro, so that this translates to decreased
memory consumption.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 20:02:37 +02:00
Andreas Rheinhardt
ce7dbd0481 avcodec/codec_internal: Make FFCodec.decode use AVFrame*
This increases type-safety by avoiding conversions from/through void*.
It also avoids the boilerplate "AVFrame *frame = data;" line
for non-subtitle decoders.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 19:54:09 +02:00
Andreas Rheinhardt
fb59a42ef9 avcodec/codec_internal: Add FFCodec.decode_sub
This increases type-safety by avoiding conversions from/through void*.
It also avoids the boilerplate "AVSubtitle *sub = data;" line
for subtitle decoders. Its only downside is that it increases
sizeof(FFCodec), yet this can be more than offset lateron.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 19:53:27 +02:00