| 145 | } |
| 146 | |
| 147 | VASliceParameterBufferBase *ff_vaapi_alloc_slice(struct vaapi_context *vactx, const uint8_t *buffer, uint32_t size) |
| 148 | { |
| 149 | uint8_t *slice_params; |
| 150 | VASliceParameterBufferBase *slice_param; |
| 151 | |
| 152 | if (!vactx->slice_data) |
| 153 | vactx->slice_data = buffer; |
| 154 | if (vactx->slice_data + vactx->slice_data_size != buffer) { |
| 155 | if (commit_slices(vactx) < 0) |
| 156 | return NULL; |
| 157 | vactx->slice_data = buffer; |
| 158 | } |
| 159 | |
| 160 | slice_params = |
| 161 | av_fast_realloc(vactx->slice_params, |
| 162 | &vactx->slice_params_alloc, |
| 163 | (vactx->slice_count + 1) * vactx->slice_param_size); |
| 164 | if (!slice_params) |
| 165 | return NULL; |
| 166 | vactx->slice_params = slice_params; |
| 167 | |
| 168 | slice_param = (VASliceParameterBufferBase *)(slice_params + vactx->slice_count * vactx->slice_param_size); |
| 169 | slice_param->slice_data_size = size; |
| 170 | slice_param->slice_data_offset = vactx->slice_data_size; |
| 171 | slice_param->slice_data_flag = VA_SLICE_DATA_FLAG_ALL; |
| 172 | |
| 173 | vactx->slice_count++; |
| 174 | vactx->slice_data_size += size; |
| 175 | return slice_param; |
| 176 | } |
| 177 | |
| 178 | int ff_vaapi_common_end_frame(MpegEncContext *s) |
| 179 | { |
no test coverage detected