mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 03:59:43 +00:00
avcodec/hevc: add support for Frame Duplication (Doubling/Tripling)
Parse picture_struct SEI value.
This commit is contained in:
parent
270068b5af
commit
31d7b17c46
@ -235,6 +235,11 @@ static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
|
||||
case HEVC_NAL_RADL_R:
|
||||
case HEVC_NAL_RASL_N:
|
||||
case HEVC_NAL_RASL_R:
|
||||
if (ctx->sei.picture_timing.picture_struct == HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING) {
|
||||
s->repeat_pict = 1;
|
||||
} else if (ctx->sei.picture_timing.picture_struct == HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING) {
|
||||
s->repeat_pict = 2;
|
||||
}
|
||||
ret = hevc_parse_slice_header(s, nal, avctx);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -144,6 +144,12 @@ static int decode_nal_sei_pic_timing(HEVCSEI *s, GetBitContext *gb, const HEVCPa
|
||||
} else if (pic_struct == 1 || pic_struct == 9 || pic_struct == 11) {
|
||||
av_log(logctx, AV_LOG_DEBUG, "TOP Field\n");
|
||||
h->picture_struct = AV_PICTURE_STRUCTURE_TOP_FIELD;
|
||||
} else if (pic_struct == 7) {
|
||||
av_log(logctx, AV_LOG_DEBUG, "Frame/Field Doubling\n");
|
||||
h->picture_struct = HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING;
|
||||
} else if (pic_struct == 8) {
|
||||
av_log(logctx, AV_LOG_DEBUG, "Frame/Field Tripling\n");
|
||||
h->picture_struct = HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING;
|
||||
}
|
||||
get_bits(gb, 2); // source_scan_type
|
||||
get_bits(gb, 1); // duplicate_flag
|
||||
|
@ -59,6 +59,11 @@ typedef enum {
|
||||
HEVC_SEI_TYPE_ALPHA_CHANNEL_INFO = 165,
|
||||
} HEVC_SEI_Type;
|
||||
|
||||
typedef enum {
|
||||
HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING = 7,
|
||||
HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING = 8
|
||||
} HEVC_SEI_PicStructType;
|
||||
|
||||
typedef struct HEVCSEIPictureHash {
|
||||
uint8_t md5[3][16];
|
||||
uint8_t is_md5;
|
||||
|
Loading…
Reference in New Issue
Block a user