MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / vulkan_encode_issue

Function vulkan_encode_issue

libavcodec/vulkan_encode.c:141–444  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141static int vulkan_encode_issue(AVCodecContext *avctx,
142 FFHWBaseEncodePicture *base_pic)
143{
144 FFVulkanEncodeContext *ctx = avctx->priv_data;
145 FFVulkanFunctions *vk = &ctx->s.vkfn;
146
147 const size_t size_align = ctx->caps.minBitstreamBufferSizeAlignment;
148
149 FFVulkanEncodePicture *vp = base_pic->priv;
150 AVFrame *src = (AVFrame *)base_pic->input_image;
151 AVVkFrame *vkf = (AVVkFrame *)src->data[0];
152
153 int err, max_pkt_size;
154
155 FFVkBuffer *sd_buf;
156
157 int slot_index = -1;
158 FFVkExecContext *exec;
159 VkCommandBuffer cmd_buf;
160 VkImageMemoryBarrier2 img_bar[37];
161 int nb_img_bar = 0;
162
163 /* Coding start/end */
164 VkVideoBeginCodingInfoKHR encode_start;
165 VkVideoEndCodingInfoKHR encode_end = {
166 .sType = VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR,
167 };
168
169 VkVideoEncodeRateControlLayerInfoKHR rc_layer;
170 VkVideoEncodeRateControlInfoKHR rc_info;
171 VkVideoEncodeQualityLevelInfoKHR q_info;
172 VkVideoCodingControlInfoKHR encode_ctrl;
173
174 VkVideoReferenceSlotInfoKHR ref_slot[37];
175 VkVideoEncodeInfoKHR encode_info;
176
177 /* Create packet data buffer */
178 max_pkt_size = FFALIGN(3 * ctx->base.surface_width * ctx->base.surface_height + (1 << 16),
179 ctx->caps.minBitstreamBufferSizeAlignment);
180
181 err = ff_vk_get_pooled_buffer(&ctx->s, &ctx->buf_pool, &vp->pkt_buf,
182 VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR,
183 &ctx->profile_list, max_pkt_size,
184 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
185 ctx->s.host_cached_flag);
186 if (err < 0)
187 return err;
188
189 sd_buf = (FFVkBuffer *)vp->pkt_buf->data;
190
191 /* Setup rate control */
192 err = init_pic_rc(avctx, base_pic, &rc_info, &rc_layer);
193 if (err < 0)
194 return err;
195
196 q_info = (VkVideoEncodeQualityLevelInfoKHR) {
197 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR,
198 .pNext = &rc_info,

Callers

nothing calls this directly

Calls 8

ff_vk_get_pooled_bufferFunction · 0.85
ff_vk_exec_getFunction · 0.85
ff_vk_exec_startFunction · 0.85
ff_vk_exec_add_dep_bufFunction · 0.85
ff_vk_exec_add_dep_frameFunction · 0.85
ff_vk_exec_update_frameFunction · 0.85
av_frame_freeFunction · 0.85
init_pic_rcFunction · 0.70

Tested by

no test coverage detected