diff options
author | Tim Walker <[email protected]> | 2016-09-17 14:54:01 +0200 |
---|---|---|
committer | Tim Walker <[email protected]> | 2016-09-17 15:46:31 +0200 |
commit | 843e327e0d62e730c0d36d5cbe1e43d9dd329308 (patch) | |
tree | c7593c5bf2f3c916ee64e09acdd3d63b87de9a23 /libhb | |
parent | 0b16fbf384d253ba6e76e524e7d334bba2f93270 (diff) |
encx265: flag all HEVC random access points as keyframes.
Diffstat (limited to 'libhb')
-rw-r--r-- | libhb/encx265.c | 5 | ||||
-rw-r--r-- | libhb/h265_common.h | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/libhb/encx265.c b/libhb/encx265.c index 9cb23bd08..fdfe7cf21 100644 --- a/libhb/encx265.c +++ b/libhb/encx265.c @@ -390,6 +390,11 @@ static hb_buffer_t* nal_encode(hb_work_object_t *w, // copy the bitstream data for (i = 0; i < nnal; i++) { + if (HB_HEVC_NALU_KEYFRAME(nal[i].type)) + { + buf->s.flags |= HB_FLAG_FRAMETYPE_REF; + buf->s.flags |= HB_FLAG_FRAMETYPE_KEY; + } memcpy(buf->data + buf->size, nal[i].payload, nal[i].sizeBytes); buf->size += nal[i].sizeBytes; } diff --git a/libhb/h265_common.h b/libhb/h265_common.h index 3a5edf111..3711d35cd 100644 --- a/libhb/h265_common.h +++ b/libhb/h265_common.h @@ -10,6 +10,10 @@ #ifndef HB_H265_COMMON_H #define HB_H265_COMMON_H +// inspired by libavcodec/hevc.h +// in HEVC, all "random access point" NAL units are keyframes +#define HB_HEVC_NALU_KEYFRAME(nal_unit_type) (((nal_unit_type) >= 16) && ((nal_unit_type) <= 23)) + static const char * const hb_h265_tier_names[] = { "auto", "main", "high", NULL, }; static const char * const hb_h265_profile_names_8bit[] = { "auto", "main", "mainstillpicture", NULL, }; static const char * const hb_h265_profile_names_10bit[] = { "auto", "main10", "main10-intra", NULL, }; |