Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Rothenpieler <timo@rothenpieler.org>2018-04-11 14:47:27 +0300
committerTimo Rothenpieler <timo@rothenpieler.org>2018-04-13 10:21:07 +0300
commit9e857aa00e1035f25b220f51f46e06148b9ae4f9 (patch)
tree6fc2a65ea07f913cdcad1377e53f2101fc27b407 /libavcodec
parent9e406326687b5342dc9caffd4f5f1b03ac4bf26b (diff)
avcodec/nvdec_hevc: add support for new extended sps/pps flags from SDK 8.1
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/hevc_ps.c5
-rw-r--r--libavcodec/hevc_ps.h1
-rw-r--r--libavcodec/nvdec_hevc.c6
3 files changed, 9 insertions, 3 deletions
diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c
index 1f18d0335b..f877fa572c 100644
--- a/libavcodec/hevc_ps.c
+++ b/libavcodec/hevc_ps.c
@@ -1100,7 +1100,6 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id,
skip_bits(gb, 7); //sps_extension_7bits = get_bits(gb, 7);
if (sps_extension_flag[0]) {
int extended_precision_processing_flag;
- int high_precision_offsets_enabled_flag;
int cabac_bypass_alignment_enabled_flag;
sps->transform_skip_rotation_enabled_flag = get_bits1(gb);
@@ -1115,8 +1114,8 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id,
"extended_precision_processing_flag not yet implemented\n");
sps->intra_smoothing_disabled_flag = get_bits1(gb);
- high_precision_offsets_enabled_flag = get_bits1(gb);
- if (high_precision_offsets_enabled_flag)
+ sps->high_precision_offsets_enabled_flag = get_bits1(gb);
+ if (sps->high_precision_offsets_enabled_flag)
av_log(avctx, AV_LOG_WARNING,
"high_precision_offsets_enabled_flag not yet implemented\n");
diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h
index 9873754389..1fbda199e3 100644
--- a/libavcodec/hevc_ps.h
+++ b/libavcodec/hevc_ps.h
@@ -289,6 +289,7 @@ typedef struct HEVCSPS {
int implicit_rdpcm_enabled_flag;
int explicit_rdpcm_enabled_flag;
int intra_smoothing_disabled_flag;
+ int high_precision_offsets_enabled_flag;
int persistent_rice_adaptation_enabled_flag;
///< coded frame dimension in various units
diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c
index 58f3fa9b45..ba54d210e8 100644
--- a/libavcodec/nvdec_hevc.c
+++ b/libavcodec/nvdec_hevc.c
@@ -107,6 +107,12 @@ static int nvdec_hevc_start_frame(AVCodecContext *avctx,
.log2_diff_max_min_pcm_luma_coding_block_size = sps->pcm.log2_max_pcm_cb_size - sps->pcm.log2_min_pcm_cb_size,
.pcm_sample_bit_depth_luma_minus1 = sps->pcm_enabled_flag ? sps->pcm.bit_depth - 1 : 0,
.pcm_sample_bit_depth_chroma_minus1 = sps->pcm_enabled_flag ? sps->pcm.bit_depth_chroma - 1 : 0,
+#if defined(NVDECAPI_VERSION) && NVDECAPI_VERSION >= 0x01000008
+ .log2_max_transform_skip_block_size_minus2 = pps->log2_max_transform_skip_block_size - 2,
+ .log2_sao_offset_scale_luma = pps->log2_sao_offset_scale_luma,
+ .log2_sao_offset_scale_chroma = pps->log2_sao_offset_scale_chroma,
+ .high_precision_offsets_enabled_flag = sps->high_precision_offsets_enabled_flag,
+#endif
.pcm_loop_filter_disabled_flag = sps->pcm.loop_filter_disable_flag,
.strong_intra_smoothing_enabled_flag = sps->sps_strong_intra_smoothing_enable_flag,
.max_transform_hierarchy_depth_intra = sps->max_transform_hierarchy_depth_intra,