1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00
Commit Graph

81 Commits

Author SHA1 Message Date
Aaron Levinson
ae5b67ee64 qsvenc: Make sure the interlaced encoding works
Purpose: qsvenc: make sure that interlaced encoding works.  Also,
reduce the vertical alignment constraint when possible to reduce
memory usage.

Note: Most of this code used to be present in ffmpeg and was
eliminated in revision 1f26a23 on Oct. 31, 2016 (qsv: Merge libav
implementation, at
https://github.com/FFmpeg/FFmpeg/commit/1f26a231bb065276cd80ce02957c759f3197
edfa#diff-7d84a34d58597bb7aa4b8239dca1f9f8).  Already applied to
libav.

Reviewed-by: Luca Barbato <lu_zero@gentoo.org>
(cherry picked from commit 8fd8f91e47)
Signed-off-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: Aaron Levinson <alevinsn@aracnet.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-05-09 03:22:14 +02:00
Aaron Levinson
dd8319767e qsvenc: Use MFXVideoENCODE_Query() to update the parameters
Purpose: Fill out the default/unset parameters with ones actually in use.

Note: Matches the current MediaSDK example code.  This code used to be
present in ffmpeg and was eliminated in revision 1f26a23 on Oct. 31,
2016 (qsv: Merge libav implementation, at
1f26a231bb (diff-7d84a34d58597bb7aa4b8239dca1f9f8)).
Already applied to libav.

Reviewed-by: Luca Barbato <lu_zero@gentoo.org>
(cherry picked from commit b22094d749)
Signed-off-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: Aaron Levinson <alevinsn@aracnet.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-05-09 03:22:14 +02:00
Mark Thompson
ff821fdfce Merge commit '4ab61cd983b539749bd621ea271624ddb5196a8e'
* commit '4ab61cd983b539749bd621ea271624ddb5196a8e':
  qsv{enc,dec}: extend the internal frame allocator

Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-30 22:07:57 +01:00
Mark Thompson
c0f2a8eac1 Merge commit '00aeedd84105a17f414185bd33ecadebeddb3a27'
* commit '00aeedd84105a17f414185bd33ecadebeddb3a27':
  qsv{dec,enc}: use a struct as a memory id with internal memory allocator

Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-30 22:06:03 +01:00
Mark Thompson
2f18e452f8 Merge commit '404e51478ecad060249d5b9bee6ab39a8a9d8c1c'
* commit '404e51478ecad060249d5b9bee6ab39a8a9d8c1c':
  qsv{dec,enc}: always use an internal mfxFrameSurface1

Minor fixups for differences in the QSV encoder because of a53cc.

Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-30 22:00:03 +01:00
Mark Thompson
a7434ef195 Merge commit '8e07c22e508b349d145b9f142aa3ee8b3ce1d3a4'
* commit '8e07c22e508b349d145b9f142aa3ee8b3ce1d3a4':
  qsvenc: print warnings from encode/init

Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-12 15:21:41 +00:00
Mark Thompson
15887a410c Merge commit '95414eb2dc63a6f934275b4ed33dedd4369f2c49'
* commit '95414eb2dc63a6f934275b4ed33dedd4369f2c49':
  qsv: print more complete error messages

Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-12 15:19:05 +00:00
Mark Thompson
723a542d6c Merge commit 'd9ec3c60143babe1bb77c268e1d5547d15acd69b'
* commit 'd9ec3c60143babe1bb77c268e1d5547d15acd69b':
  qsvenc: take only the allocated dimensions from the frames context

Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-12 15:06:07 +00:00
Mark Thompson
562f386c77 Merge commit '37a9015ee84c15fec5247ba8f6577351a25fa8d2'
* commit '37a9015ee84c15fec5247ba8f6577351a25fa8d2':
  qsvenc: add support for p010

Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-12 15:04:45 +00:00
Anton Khirnov
4ab61cd983 qsv{enc,dec}: extend the internal frame allocator
Handle the internal frame requests, which is required by the HEVC
encoding plugin.

Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
2016-11-07 12:48:00 +01:00
Anton Khirnov
00aeedd841 qsv{dec,enc}: use a struct as a memory id with internal memory allocator
This will allow implementing the allocator more fully, which is needed
by the HEVC encoder plugin with video memory input.

Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
2016-11-07 12:47:54 +01:00
Anton Khirnov
404e51478e qsv{dec,enc}: always use an internal mfxFrameSurface1
For encoding, this avoids modifying the input surface, which we are not
allowed to do.
This will also be useful in the following commits.

Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
2016-11-07 12:47:46 +01:00
Anton Khirnov
fb240a6276 qsvenc: do not re-execute encoding on all positive status codes
It should only be done for DEVICE_BUSY/IN_EXECUTION

(cherry picked from commit 0956fd4606)
Fixes ticket #5924.
2016-11-04 18:56:01 +00:00
Kyle Schwarz
5d54293668 avcodec/qsv: remove MFX_EXTBUFF_CODING_OPTION3
4th generation Intel CPUs don't support MFX_EXTBUFF_CODING_OPTION3.

This patch fixes bug #5324.
2016-10-31 19:23:40 +00:00
Mark Thompson
1f26a231bb qsv: Merge libav implementation
Merged as-at libav 398f015, and therefore includes outstanding
skipped merges 04b17ff and 130e1f1.

All features not in libav are preserved, and no options change.
2016-10-31 19:23:40 +00:00
Anton Khirnov
8e07c22e50 qsvenc: print warnings from encode/init 2016-07-22 19:08:13 +02:00
Anton Khirnov
95414eb2dc qsv: print more complete error messages
Include the libmfx error code and its description
2016-07-22 19:08:13 +02:00
Anton Khirnov
d9ec3c6014 qsvenc: take only the allocated dimensions from the frames context
Other parameters, like the display size, should still be taken from the
codec context.
2016-07-22 19:08:13 +02:00
Anton Khirnov
37a9015ee8 qsvenc: add support for p010 2016-07-22 19:08:13 +02:00
Anton Khirnov
0956fd4606 qsvenc: do not re-execute encoding on all positive status codes
It should only be done for DEVICE_BUSY/IN_EXECUTION
2016-07-22 19:08:13 +02:00
Anton Khirnov
ad9c9440d5 qsvenc: support getting the session from an AVHWFramesContext 2016-06-21 19:53:38 +02:00
Andrey Turkin
63adb3602d libavcodec: factor out SEI generation for A53 captions
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-06-19 02:11:20 +02:00
Derek Buitenhuis
acc155ac55 Merge commit 'a1335149fd610b16459d9281b611282cac51c950'
* commit 'a1335149fd610b16459d9281b611282cac51c950':
  qsvenc: store the sync point in heap memory

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-04-11 14:45:57 +01:00
Maxym Dmytrychenko
a1335149fd qsvenc: store the sync point in heap memory
The QSV runtime expects the sync point address passed to
MFXVideoENCODE_EncodeFrameAsync() to be valid until
MFXVideoCORE_SyncOperation().

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2016-02-24 10:14:40 +01:00
Derek Buitenhuis
c63da6e916 Merge commit '9cac1b4b4f1532fb2aeef54799285360656be5eb'
* commit '9cac1b4b4f1532fb2aeef54799285360656be5eb':
  qsvenc: Add private option to replace coder_type

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-16 16:51:45 +00:00
Derek Buitenhuis
02bd02da5f qsvenc: Fix b_strategy typo
This was introduced in 0e6c853221.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-01-28 00:08:40 +00:00
Derek Buitenhuis
2e9b995e4f Merge commit '0e6c8532215790bbe560a9eea4f3cc82bb55cf92'
* commit '0e6c8532215790bbe560a9eea4f3cc82bb55cf92'
  lavc: Move b_frame_strategy and b_sensitivity to codec private options

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-01-27 20:18:04 +00:00
Vittorio Giovara
9cac1b4b4f qsvenc: Add private option to replace coder_type
Missing from be00ec832c.
2016-01-25 12:00:16 -05:00
Anton Khirnov
68395f8c99 qsvenc: fix a typo
Introduced in 0e6c853221.
2016-01-23 21:03:31 +01:00
Vittorio Giovara
0e6c853221 lavc: Move b_frame_strategy and b_sensitivity to codec private options
The b_frame_strategy option is only used by mpegvideoenc, qsv, x264, and
xavs, while b_sensitivity is only used by mpegvideoenc.

These are very codec-specific options, so deprecate the global variants.
Set proper limits to the maximum allowed values.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2016-01-21 15:33:19 -05:00
Hendrik Leppkes
ed9cff9edf Merge commit 'd1cd20e4e33f8139e150034b3c457302312d81bd'
* commit 'd1cd20e4e33f8139e150034b3c457302312d81bd':
  qsvenc: split encoding frames and reading from the async FIFO

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-01-19 08:44:50 +01:00
Hendrik Leppkes
b5513441e4 Merge commit 'a6259a6ecbad18d58085e4ab23f56151e98d7b53'
* commit 'a6259a6ecbad18d58085e4ab23f56151e98d7b53':
  qsvenc: properly handle the warning from MFXVideoCORE_SyncOperation

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-01-19 08:43:03 +01:00
Anton Khirnov
d1cd20e4e3 qsvenc: split encoding frames and reading from the async FIFO
This makes sure all the frames are returned at the end.

Found-By: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
2016-01-07 08:20:21 +01:00
Maxym Dmytrychenko
a6259a6ecb qsvenc: properly handle the warning from MFXVideoCORE_SyncOperation
Same as what is done in 3b6473b43e.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2016-01-07 08:20:21 +01:00
Hendrik Leppkes
b2d8b91cf0 Merge commit '825900248b4053515803152d3165efdb034b660b'
* commit '825900248b4053515803152d3165efdb034b660b':
  qsvenc: export CPB props side data

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-12-17 13:42:53 +01:00
Anton Khirnov
825900248b qsvenc: export CPB props side data 2015-12-06 10:25:49 +01:00
Will Kelleher
0eac93da0f qsvenc: write a53 caption data to SEI
Signed-off-by: Will Kelleher <wkelleher@gogoair.com>
Previous version reviewed-by: Ivan Uskov <ivan.uskov@nablet.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-11-30 23:31:12 +01:00
Hendrik Leppkes
5bc9c7a6db Merge commit 'fc4c27c4edfc6a5f9bc7c696e823652474a65ce8'
* commit 'fc4c27c4edfc6a5f9bc7c696e823652474a65ce8':
  qsvenc: expose additional encoding options

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-11-29 15:22:53 +01:00
Hendrik Leppkes
24563c20f1 Merge commit 'e7d7cf86dcaba8eaaed62c80172ff0aff2588c2a'
* commit 'e7d7cf86dcaba8eaaed62c80172ff0aff2588c2a':
  qsvenc: support more RC methods

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-11-29 15:18:08 +01:00
Derek Buitenhuis
98540a2c7d Merge commit '4d8f536b535487063a08609636e712ad86d2ad54'
* commit '4d8f536b535487063a08609636e712ad86d2ad54':
  qsvenc: print the actual video parameters used by MSDK

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2015-11-22 17:46:57 +00:00
Anton Khirnov
fc4c27c4ed qsvenc: expose additional encoding options 2015-11-20 09:29:50 +01:00
Anton Khirnov
e7d7cf86dc qsvenc: support more RC methods 2015-11-20 09:29:13 +01:00
Anton Khirnov
3edac01f79 qsvenc: fix setting maxrate for VBR 2015-11-20 09:25:58 +01:00
Anton Khirnov
4d8f536b53 qsvenc: print the actual video parameters used by MSDK 2015-11-20 09:23:22 +01:00
Hendrik Leppkes
866a4174db Merge commit 'dc923bc23b3efd949d0bf67ff1abdb95059e5843'
* commit 'dc923bc23b3efd949d0bf67ff1abdb95059e5843':
  qsvenc: add an API for allocating opaque surfaces

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:55:43 +02:00
Hendrik Leppkes
a440886a35 Merge commit '2ec96b6bd5bf7b22978711bcf2cee702bee89c6f'
* commit '2ec96b6bd5bf7b22978711bcf2cee702bee89c6f':
  qsvenc: cosmetics, reindent

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:49:26 +02:00
Hendrik Leppkes
2fece1e4d5 Merge commit 'f6f32fc93d39caf329869c1bff8ad024ccab1d42'
* commit 'f6f32fc93d39caf329869c1bff8ad024ccab1d42':
  qsvenc: set the timestamp for PIX_FMT_QSV frames as well

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:48:11 +02:00
Hendrik Leppkes
760dbdd3c5 Merge commit '772c87c5a658f36d7c0612f5da583fc2bfa54f79'
* commit '772c87c5a658f36d7c0612f5da583fc2bfa54f79':
  qsvenc: support passing arbitrary external buffers to the encoder

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-22 15:46:52 +02:00
Anton Khirnov
dc923bc23b qsvenc: add an API for allocating opaque surfaces 2015-10-16 20:00:40 +02:00
Anton Khirnov
2ec96b6bd5 qsvenc: cosmetics, reindent 2015-10-16 20:00:17 +02:00