~ubuntu-branches/debian/sid/ffmpeg/sid

« back to all changes in this revision

Viewing changes to libavcodec/dxva2_hevc.c

  • Committer: Package Import Robot
  • Author(s): Andreas Cadhalpun, Fabian Greffrath, Andreas Cadhalpun
  • Date: 2015-09-22 15:15:20 UTC
  • mfrom: (0.1.29)
  • Revision ID: package-import@ubuntu.com-20150922151520-hhmd3in9ykigjvs9
Tags: 7:2.8-1
[ Fabian Greffrath ]
* Pass the --dbg-package=ffmpeg-dbg parameter only to dh_strip.
* Add alternative Depends: libavcodec-ffmpeg-extra56 to libavcodec-dev and
  ffmpeg-dbg to allow for building and debugging with this library installed.

[ Andreas Cadhalpun ]
* Import new major upstream release 2.8.
* Remove the transitional lib*-ffmpeg-dev packages.
* Drop old Breaks on kodi-bin.
* Drop workaround for sparc, which is no Debian architecture anymore.
* Re-enable x265 on alpha, as it's available again.
* Disable unavailable frei0r, opencv and x264 on mips64el.
* Disable libopenjpeg (#787275) and libschroedinger (#787957) decoders.
  (Closes: #786670)
* Disable libdc1394 on sparc64, because it links against the broken due to
  #790560 libudev1.
* Enable libsnappy support.
* Add new symbols.
* Update debian/copyright.
* Update debian/tests/encdec_list.txt.
* Add hls-only-seek-if-there-is-an-offset.patch. (Closes: #798189)
* Add 'Breaks: libavutil-ffmpeg54 (>= 8:0)' to the libraries.

Show diffs side-by-side

added added

removed removed

Lines of Context:
57
57
                                    DXVA_PicParams_HEVC *pp)
58
58
{
59
59
    const HEVCFrame *current_picture = h->ref;
 
60
    const HEVCSPS *sps = h->ps.sps;
 
61
    const HEVCPPS *pps = h->ps.pps;
60
62
    int i, j;
61
63
 
62
64
    memset(pp, 0, sizeof(*pp));
63
65
 
64
 
    pp->PicWidthInMinCbsY  = h->sps->min_cb_width;
65
 
    pp->PicHeightInMinCbsY = h->sps->min_cb_height;
 
66
    pp->PicWidthInMinCbsY  = sps->min_cb_width;
 
67
    pp->PicHeightInMinCbsY = sps->min_cb_height;
66
68
 
67
 
    pp->wFormatAndSequenceInfoFlags = (h->sps->chroma_format_idc          <<  0) |
68
 
                                      (h->sps->separate_colour_plane_flag <<  2) |
69
 
                                      ((h->sps->bit_depth - 8)            <<  3) |
70
 
                                      ((h->sps->bit_depth - 8)            <<  6) |
71
 
                                      ((h->sps->log2_max_poc_lsb - 4)     <<  9) |
 
69
    pp->wFormatAndSequenceInfoFlags = (sps->chroma_format_idc             <<  0) |
 
70
                                      (sps->separate_colour_plane_flag    <<  2) |
 
71
                                      ((sps->bit_depth - 8)               <<  3) |
 
72
                                      ((sps->bit_depth - 8)               <<  6) |
 
73
                                      ((sps->log2_max_poc_lsb - 4)        <<  9) |
72
74
                                      (0                                  << 13) |
73
75
                                      (0                                  << 14) |
74
76
                                      (0                                  << 15);
75
77
 
76
78
    fill_picture_entry(&pp->CurrPic, ff_dxva2_get_surface_index(avctx, ctx, current_picture->frame), 0);
77
79
 
78
 
    pp->sps_max_dec_pic_buffering_minus1         = h->sps->temporal_layer[h->sps->max_sub_layers - 1].max_dec_pic_buffering - 1;
79
 
    pp->log2_min_luma_coding_block_size_minus3   = h->sps->log2_min_cb_size - 3;
80
 
    pp->log2_diff_max_min_luma_coding_block_size = h->sps->log2_diff_max_min_coding_block_size;
81
 
    pp->log2_min_transform_block_size_minus2     = h->sps->log2_min_tb_size - 2;
82
 
    pp->log2_diff_max_min_transform_block_size   = h->sps->log2_max_trafo_size  - h->sps->log2_min_tb_size;
83
 
    pp->max_transform_hierarchy_depth_inter      = h->sps->max_transform_hierarchy_depth_inter;
84
 
    pp->max_transform_hierarchy_depth_intra      = h->sps->max_transform_hierarchy_depth_intra;
85
 
    pp->num_short_term_ref_pic_sets              = h->sps->nb_st_rps;
86
 
    pp->num_long_term_ref_pics_sps               = h->sps->num_long_term_ref_pics_sps;
 
80
    pp->sps_max_dec_pic_buffering_minus1         = sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering - 1;
 
81
    pp->log2_min_luma_coding_block_size_minus3   = sps->log2_min_cb_size - 3;
 
82
    pp->log2_diff_max_min_luma_coding_block_size = sps->log2_diff_max_min_coding_block_size;
 
83
    pp->log2_min_transform_block_size_minus2     = sps->log2_min_tb_size - 2;
 
84
    pp->log2_diff_max_min_transform_block_size   = sps->log2_max_trafo_size  - sps->log2_min_tb_size;
 
85
    pp->max_transform_hierarchy_depth_inter      = sps->max_transform_hierarchy_depth_inter;
 
86
    pp->max_transform_hierarchy_depth_intra      = sps->max_transform_hierarchy_depth_intra;
 
87
    pp->num_short_term_ref_pic_sets              = sps->nb_st_rps;
 
88
    pp->num_long_term_ref_pics_sps               = sps->num_long_term_ref_pics_sps;
87
89
 
88
 
    pp->num_ref_idx_l0_default_active_minus1     = h->pps->num_ref_idx_l0_default_active - 1;
89
 
    pp->num_ref_idx_l1_default_active_minus1     = h->pps->num_ref_idx_l1_default_active - 1;
90
 
    pp->init_qp_minus26                          = h->pps->pic_init_qp_minus26;
 
90
    pp->num_ref_idx_l0_default_active_minus1     = pps->num_ref_idx_l0_default_active - 1;
 
91
    pp->num_ref_idx_l1_default_active_minus1     = pps->num_ref_idx_l1_default_active - 1;
 
92
    pp->init_qp_minus26                          = pps->pic_init_qp_minus26;
91
93
 
92
94
    if (h->sh.short_term_ref_pic_set_sps_flag == 0 && h->sh.short_term_rps) {
93
 
        pp->ucNumDeltaPocsOfRefRpsIdx            = h->sh.short_term_rps->num_delta_pocs;
 
95
        pp->ucNumDeltaPocsOfRefRpsIdx            = h->sh.short_term_rps->rps_idx_num_delta_pocs;
94
96
        pp->wNumBitsForShortTermRPSInSlice       = h->sh.short_term_ref_pic_set_size;
95
97
    }
96
98
 
97
 
    pp->dwCodingParamToolFlags = (h->sps->scaling_list_enable_flag               <<  0) |
98
 
                                 (h->sps->amp_enabled_flag                       <<  1) |
99
 
                                 (h->sps->sao_enabled                            <<  2) |
100
 
                                 (h->sps->pcm_enabled_flag                       <<  3) |
101
 
                                 ((h->sps->pcm_enabled_flag ? (h->sps->pcm.bit_depth - 1) : 0)            <<  4) |
102
 
                                 ((h->sps->pcm_enabled_flag ? (h->sps->pcm.bit_depth_chroma - 1) : 0)     <<  8) |
103
 
                                 ((h->sps->pcm_enabled_flag ? (h->sps->pcm.log2_min_pcm_cb_size - 3) : 0) << 12) |
104
 
                                 ((h->sps->pcm_enabled_flag ? (h->sps->pcm.log2_max_pcm_cb_size - h->sps->pcm.log2_min_pcm_cb_size) : 0) << 14) |
105
 
                                 (h->sps->pcm.loop_filter_disable_flag           << 16) |
106
 
                                 (h->sps->long_term_ref_pics_present_flag        << 17) |
107
 
                                 (h->sps->sps_temporal_mvp_enabled_flag          << 18) |
108
 
                                 (h->sps->sps_strong_intra_smoothing_enable_flag << 19) |
109
 
                                 (h->pps->dependent_slice_segments_enabled_flag  << 20) |
110
 
                                 (h->pps->output_flag_present_flag               << 21) |
111
 
                                 (h->pps->num_extra_slice_header_bits            << 22) |
112
 
                                 (h->pps->sign_data_hiding_flag                  << 25) |
113
 
                                 (h->pps->cabac_init_present_flag                << 26) |
 
99
    pp->dwCodingParamToolFlags = (sps->scaling_list_enable_flag                  <<  0) |
 
100
                                 (sps->amp_enabled_flag                          <<  1) |
 
101
                                 (sps->sao_enabled                               <<  2) |
 
102
                                 (sps->pcm_enabled_flag                          <<  3) |
 
103
                                 ((sps->pcm_enabled_flag ? (sps->pcm.bit_depth - 1) : 0)            <<  4) |
 
104
                                 ((sps->pcm_enabled_flag ? (sps->pcm.bit_depth_chroma - 1) : 0)     <<  8) |
 
105
                                 ((sps->pcm_enabled_flag ? (sps->pcm.log2_min_pcm_cb_size - 3) : 0) << 12) |
 
106
                                 ((sps->pcm_enabled_flag ? (sps->pcm.log2_max_pcm_cb_size - sps->pcm.log2_min_pcm_cb_size) : 0) << 14) |
 
107
                                 (sps->pcm.loop_filter_disable_flag              << 16) |
 
108
                                 (sps->long_term_ref_pics_present_flag           << 17) |
 
109
                                 (sps->sps_temporal_mvp_enabled_flag             << 18) |
 
110
                                 (sps->sps_strong_intra_smoothing_enable_flag    << 19) |
 
111
                                 (pps->dependent_slice_segments_enabled_flag     << 20) |
 
112
                                 (pps->output_flag_present_flag                  << 21) |
 
113
                                 (pps->num_extra_slice_header_bits               << 22) |
 
114
                                 (pps->sign_data_hiding_flag                     << 25) |
 
115
                                 (pps->cabac_init_present_flag                   << 26) |
114
116
                                 (0                                              << 27);
115
117
 
116
 
    pp->dwCodingSettingPicturePropertyFlags = (h->pps->constrained_intra_pred_flag                <<  0) |
117
 
                                              (h->pps->transform_skip_enabled_flag                <<  1) |
118
 
                                              (h->pps->cu_qp_delta_enabled_flag                   <<  2) |
119
 
                                              (h->pps->pic_slice_level_chroma_qp_offsets_present_flag <<  3) |
120
 
                                              (h->pps->weighted_pred_flag                         <<  4) |
121
 
                                              (h->pps->weighted_bipred_flag                       <<  5) |
122
 
                                              (h->pps->transquant_bypass_enable_flag              <<  6) |
123
 
                                              (h->pps->tiles_enabled_flag                         <<  7) |
124
 
                                              (h->pps->entropy_coding_sync_enabled_flag           <<  8) |
125
 
                                              (h->pps->uniform_spacing_flag                       <<  9) |
126
 
                                              ((h->pps->tiles_enabled_flag ? h->pps->loop_filter_across_tiles_enabled_flag : 0) << 10) |
127
 
                                              (h->pps->seq_loop_filter_across_slices_enabled_flag << 11) |
128
 
                                              (h->pps->deblocking_filter_override_enabled_flag    << 12) |
129
 
                                              (h->pps->disable_dbf                                << 13) |
130
 
                                              (h->pps->lists_modification_present_flag            << 14) |
131
 
                                              (h->pps->slice_header_extension_present_flag        << 15) |
 
118
    pp->dwCodingSettingPicturePropertyFlags = (pps->constrained_intra_pred_flag                   <<  0) |
 
119
                                              (pps->transform_skip_enabled_flag                   <<  1) |
 
120
                                              (pps->cu_qp_delta_enabled_flag                      <<  2) |
 
121
                                              (pps->pic_slice_level_chroma_qp_offsets_present_flag <<  3) |
 
122
                                              (pps->weighted_pred_flag                            <<  4) |
 
123
                                              (pps->weighted_bipred_flag                          <<  5) |
 
124
                                              (pps->transquant_bypass_enable_flag                 <<  6) |
 
125
                                              (pps->tiles_enabled_flag                            <<  7) |
 
126
                                              (pps->entropy_coding_sync_enabled_flag              <<  8) |
 
127
                                              (pps->uniform_spacing_flag                          <<  9) |
 
128
                                              ((pps->tiles_enabled_flag ? pps->loop_filter_across_tiles_enabled_flag : 0) << 10) |
 
129
                                              (pps->seq_loop_filter_across_slices_enabled_flag    << 11) |
 
130
                                              (pps->deblocking_filter_override_enabled_flag       << 12) |
 
131
                                              (pps->disable_dbf                                   << 13) |
 
132
                                              (pps->lists_modification_present_flag               << 14) |
 
133
                                              (pps->slice_header_extension_present_flag           << 15) |
132
134
                                              (IS_IRAP(h)                                         << 16) |
133
135
                                              (IS_IDR(h)                                          << 17) |
134
136
                                              /* IntraPicFlag */
135
137
                                              (IS_IRAP(h)                                         << 18) |
136
138
                                              (0                                                  << 19);
137
 
    pp->pps_cb_qp_offset            = h->pps->cb_qp_offset;
138
 
    pp->pps_cr_qp_offset            = h->pps->cr_qp_offset;
139
 
    if (h->pps->tiles_enabled_flag) {
140
 
        pp->num_tile_columns_minus1 = h->pps->num_tile_columns - 1;
141
 
        pp->num_tile_rows_minus1    = h->pps->num_tile_rows - 1;
142
 
 
143
 
        if (!h->pps->uniform_spacing_flag) {
144
 
            for (i = 0; i < h->pps->num_tile_columns; i++)
145
 
                pp->column_width_minus1[i] = h->pps->column_width[i] - 1;
146
 
 
147
 
            for (i = 0; i < h->pps->num_tile_rows; i++)
148
 
                pp->row_height_minus1[i] = h->pps->row_height[i] - 1;
 
139
    pp->pps_cb_qp_offset            = pps->cb_qp_offset;
 
140
    pp->pps_cr_qp_offset            = pps->cr_qp_offset;
 
141
    if (pps->tiles_enabled_flag) {
 
142
        pp->num_tile_columns_minus1 = pps->num_tile_columns - 1;
 
143
        pp->num_tile_rows_minus1    = pps->num_tile_rows - 1;
 
144
 
 
145
        if (!pps->uniform_spacing_flag) {
 
146
            for (i = 0; i < pps->num_tile_columns; i++)
 
147
                pp->column_width_minus1[i] = pps->column_width[i] - 1;
 
148
 
 
149
            for (i = 0; i < pps->num_tile_rows; i++)
 
150
                pp->row_height_minus1[i] = pps->row_height[i] - 1;
149
151
        }
150
152
    }
151
153
 
152
 
    pp->diff_cu_qp_delta_depth           = h->pps->diff_cu_qp_delta_depth;
153
 
    pp->pps_beta_offset_div2             = h->pps->beta_offset / 2;
154
 
    pp->pps_tc_offset_div2               = h->pps->tc_offset / 2;
155
 
    pp->log2_parallel_merge_level_minus2 = h->pps->log2_parallel_merge_level - 2;
 
154
    pp->diff_cu_qp_delta_depth           = pps->diff_cu_qp_delta_depth;
 
155
    pp->pps_beta_offset_div2             = pps->beta_offset / 2;
 
156
    pp->pps_tc_offset_div2               = pps->tc_offset / 2;
 
157
    pp->log2_parallel_merge_level_minus2 = pps->log2_parallel_merge_level - 2;
156
158
    pp->CurrPicOrderCntVal               = h->poc;
157
159
 
158
160
    // fill RefPicList from the DPB
197
199
static void fill_scaling_lists(AVDXVAContext *ctx, const HEVCContext *h, DXVA_Qmatrix_HEVC *qm)
198
200
{
199
201
    unsigned i, j, pos;
200
 
    const ScalingList *sl = h->pps->scaling_list_data_present_flag ?
201
 
                            &h->pps->scaling_list : &h->sps->scaling_list;
 
202
    const ScalingList *sl = h->ps.pps->scaling_list_data_present_flag ?
 
203
                            &h->ps.pps->scaling_list : &h->ps.sps->scaling_list;
202
204
 
203
205
    memset(qm, 0, sizeof(*qm));
204
206
    for (i = 0; i < 6; i++) {