diff options
author | rcombs <rcombs@rcombs.me> | 2022-04-16 02:52:48 -0500 |
---|---|---|
committer | rcombs <rcombs@rcombs.me> | 2022-06-01 19:38:50 -0500 |
commit | 792a9f2406a52a26ddfd3045e97fda791db323d2 (patch) | |
tree | 96168823a2175ff115bc19c4a86114e219fa004a /libavcodec | |
parent | a465e2c39ed1aed0415403e74b37d23f227e2914 (diff) | |
download | ffmpeg-792a9f2406a52a26ddfd3045e97fda791db323d2.tar.gz |
lavc/videotoolboxdec: insert emu-prevention bytes for HEVC as well
Fixes decoding of files with sync-fooling sequences in their PSs.
Signed-off-by: rcombs <rcombs@rcombs.me>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/videotoolbox.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c index 921fed9619..ce83c2594a 100644 --- a/libavcodec/videotoolbox.c +++ b/libavcodec/videotoolbox.c @@ -246,7 +246,7 @@ CFDataRef ff_videotoolbox_hvcc_extradata_create(AVCodecContext *avctx) for (i = 0; i < HEVC_MAX_##T##PS_COUNT; i++) { \ if (h->ps.t##ps_list[i]) { \ const HEVC##T##PS *lps = (const HEVC##T##PS *)h->ps.t##ps_list[i]->data; \ - vt_extradata_size += 2 + lps->data_size; \ + vt_extradata_size += 2 + escape_ps(NULL, lps->data, lps->data_size); \ num_##t##ps++; \ } \ } @@ -369,11 +369,11 @@ CFDataRef ff_videotoolbox_hvcc_extradata_create(AVCodecContext *avctx) for (i = 0; i < HEVC_MAX_##T##PS_COUNT; i++) { \ if (h->ps.t##ps_list[i]) { \ const HEVC##T##PS *lps = (const HEVC##T##PS *)h->ps.t##ps_list[i]->data; \ + int size = escape_ps(p + 2, lps->data, lps->data_size); \ /* unsigned int(16) nalUnitLength; */ \ - AV_WB16(p, lps->data_size); \ + AV_WB16(p, size); \ /* bit(8*nalUnitLength) nalUnit; */ \ - memcpy(p + 2, lps->data, lps->data_size); \ - p += 2 + lps->data_size; \ + p += 2 + size; \ } \ } |