Mark Thompson
7a20656474
cbs_h265: Add a lot more SEI parsing support
...
Supports both prefix and suffix SEI, decoding all of the common SEI
types and some more obscure ones. Most of this is tested by the
existing tests in fate.
2018-11-18 17:33:26 +00:00
Andreas Rheinhardt
ee47ac97d7
cbs_h2645: Improve performance of writing slices
...
Instead of using a combination of bitreader and -writer for copying data,
one can byte-align the (obsolete and removed) bitreader to improve performance.
With the right alignment one can even use memcpy. The right alignment
normally exists for CABAC and hence for H.265 in general.
For aligned data this reduced the time to copy the slicedata from
776520 decicycles to 33889 with 262144 runs and a 6.5mb/s H.264 video.
For unaligned data the number went down from 279196 to 97739 decicycles.
Signed-off-by: Mark Thompson <sw@jkqxz.net>
2018-11-12 00:12:06 +00:00
Mark Thompson
da6db843b8
cbs_h2645: Allocate all internal buffers with padding
...
Any of these buffers (for both H.264 and H.265) might reasonably be
parsed using the bitstream reader, so include padding on all of them.
2018-10-22 23:01:32 +01:00
Mark Thompson
3143fe34f6
cbs_h264: Actually decompose end-of-sequence NAL units
...
64c50c0e97 declared support for decomposing
them but omitted to implement it; this adds an implementation.
Also do the same for end-of-stream NAL units, since they are equivalent.
2018-10-22 23:01:29 +01:00
Aman Gupta
64c50c0e97
avcodec/cbs_h264: silence errors about end_of_seq nalus
...
[ffmpeg] AVBSFContext: Decomposition unimplemented for unit 4 (type 10).
Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-10-15 11:52:49 -07:00
Mark Thompson
ac687add84
cbs_h264: Add support for mastering display SEI messages
2018-05-10 23:54:01 +01:00
Mark Thompson
d94dda742c
cbs_h264: Add support for pan-scan rectangle SEI messages
2018-05-10 23:54:01 +01:00
Haihao Xiang
2943dd35b7
cbs_h265: read/write content light level information SEI message
...
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
2018-05-10 20:55:42 +01:00
Haihao Xiang
56ed011692
cbs_h265: read/write HEVC PREFIX SEI
...
Similar to H264, cbs_h265_{read, write}_nal_unit() can handle HEVC
prefix SEI NAL units. Currently mastering display colour volume SEI
message is added only, we may add more SEI message if needed later
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
2018-05-10 20:36:45 +01:00
James Almer
c6a63e1109
avcodec/cbs_h2645: use AVBufferRef to store list of active parameter sets
...
Removes unnecessary data copies, and partially fixes potential issues
with dangling references held in said lists.
Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-05-09 11:14:14 -03:00
Mark Thompson
300ef25314
cbs: Add support for array subscripts in trace output
...
This makes the trace output for arrays significantly nicer.
2018-05-02 01:20:45 +01:00
Mark Thompson
315cc8c098
cbs_h2645: Simplify representation of fixed values
2018-05-01 23:31:41 +01:00
James Almer
0807a77160
avcodec/cbs_h2645: create a reference to the existing buffer when decomposing slice units
...
Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-30 20:30:02 -03:00
James Almer
df3a2ff767
avcodec/cbs: use a reference to the assembled CodedBitstreamFragment buffer when writing packets
...
This saves one malloc + memcpy per packet
The CodedBitstreamFragment buffer is padded to follow the requirements
of AVPacket.
Reviewed-by: jkqxz
Signed-off-by: James Almer <jamrial@gmail.com>
2018-03-05 11:44:51 -03:00
Mark Thompson
fbeac5356c
Merge commit ' eccc03c8fb'
...
* commit 'eccc03c8fb ':
cbs_h264: Add support for filler NAL units
Some bitstream -> get_bits.
Merged-by: Mark Thompson <sw@jkqxz.net>
2018-02-21 22:51:46 +00:00
Mark Thompson
ab6edb173b
Merge commit ' 7157d95926'
...
* commit '7157d95926 ':
cbs_h264: Move slice_group_id array out of PPS structure
Merged-by: Mark Thompson <sw@jkqxz.net>
2018-02-21 22:41:00 +00:00
Mark Thompson
77eba7bd99
Merge commit ' a2ca8ed903'
...
* commit 'a2ca8ed903 ':
cbs_h264: Add utility functions to insert/delete SEI messages
Merged-by: Mark Thompson <sw@jkqxz.net>
2018-02-21 22:27:07 +00:00
Mark Thompson
0cc8e34a94
Merge commit ' ce5870a3a8'
...
* commit 'ce5870a3a8 ':
cbs: Refcount all the things!
Some changes for bitstream API.
Merged-by: Mark Thompson <sw@jkqxz.net>
2018-02-21 22:22:54 +00:00
Mark Thompson
af3727e239
Merge commit ' 0e4c166cdd'
...
* commit '0e4c166cdd ':
cbs_h2645: Remove active ps references when it is replaced
Merged-by: Mark Thompson <sw@jkqxz.net>
2018-02-21 22:03:15 +00:00
Mark Thompson
eccc03c8fb
cbs_h264: Add support for filler NAL units
2018-02-20 22:04:12 +00:00
Mark Thompson
7157d95926
cbs_h264: Move slice_group_id array out of PPS structure
...
It's very large, and is only used in some FMO streams.
2018-02-20 22:04:12 +00:00
Mark Thompson
a2ca8ed903
cbs_h264: Add utility functions to insert/delete SEI messages
2018-02-20 22:04:12 +00:00
Mark Thompson
ce5870a3a8
cbs: Refcount all the things!
...
This makes it easier for users of the CBS API to get alloc/free right -
all subelements use the buffer API so that it's clear how to free them.
It also allows eliding some redundant copies: the packet -> fragment copy
disappears after this change if the input packet is refcounted, and more
codec-specific cases are now possible (but not included in this patch).
2018-02-20 22:04:12 +00:00
Mark Thompson
0e4c166cdd
cbs_h2645: Remove active ps references when it is replaced
2018-02-20 22:04:12 +00:00
Mark Thompson
1d12a545ce
cbs: Add an explicit type for coded bitstream unit types
...
Also fix conversion specifiers used for the unit type.
2018-02-20 22:04:12 +00:00
Carl Eugen Hoyos
9b79c65ec0
lavu/lavc/lavf/lavfi: Do not use type modifier %zu on Windows MSVCRT.
2017-12-17 18:05:42 +01:00
Mark Thompson
7bf3f38046
cbs: Add padding to slice data allocations
...
These may be read by the bitstream reader, so they should include the
necessary padding for overreads.
2017-12-02 15:21:30 +00:00
Mark Thompson
22aed77687
cbs_h2645: Fix memory leak on when reading SEI fails
2017-11-12 16:00:41 +00:00
Mark Thompson
41272e112b
cbs_h264: Fix memory leak in error case
...
Fixes CID 1419834.
2017-10-18 20:05:11 +01:00
Mark Thompson
624d4739db
cbs_h264: Fix writing streams with auxiliary pictures
...
Tested with the alphaconformanceG sample.
Fixes CID 1419836.
(cherry picked from commit 9ed18f302b )
2017-10-18 20:05:11 +01:00
Mark Thompson
9b0c7aa0e4
lavc: Add coded bitstream read/write support for H.265
...
(cherry picked from commit 867381b8b5 )
(cherry picked from commit f763489364 )
(cherry picked from commit 067a9ddeb8 )
2017-10-17 20:56:29 +01:00
Mark Thompson
b4c915f4b3
lavc: Add coded bitstream read/write support for H.264
...
(cherry picked from commit acf06f4544 )
(cherry picked from commit 768eb9182e )
(cherry picked from commit e7f64191b2 )
2017-10-17 20:56:29 +01:00
Mark Thompson
9ed18f302b
cbs_h264: Fix writing streams with auxiliary pictures
...
Tested with the alphaconformanceG sample.
2017-09-25 20:42:42 +01:00
Mark Thompson
e7f64191b2
cbs: Add buffer padding when splitting fragments
...
Remove any trailing zeroes from H.26[45] NAL units at the same time.
2017-09-12 22:11:47 +01:00
Mark Thompson
44cde38c8a
cbs: Always check for bitstream end before reading
2017-09-12 22:11:41 +01:00
Mark Thompson
768eb9182e
cbs_h2645: Return error if writing fails
2017-08-20 13:59:17 +01:00
Mark Thompson
867381b8b5
lavc: Add coded bitstream read/write support for H.265
2017-08-12 22:17:20 +01:00
Mark Thompson
acf06f4544
lavc: Add coded bitstream read/write support for H.264
2017-08-12 22:17:20 +01:00