| 672 | } |
| 673 | |
| 674 | static int transfer_frame(VkRenderer *renderer, AVFrame *frame, int use_hw_frame) |
| 675 | { |
| 676 | RendererContext *ctx = (RendererContext *) renderer; |
| 677 | int ret; |
| 678 | |
| 679 | if (use_hw_frame && !check_hw_transfer(ctx, frame)) |
| 680 | return AVERROR(ENOSYS); |
| 681 | |
| 682 | av_frame_unref(ctx->vk_frame); |
| 683 | if (use_hw_frame) |
| 684 | av_hwframe_get_buffer(ctx->hw_frame_ref, ctx->vk_frame, 0); |
| 685 | ret = av_hwframe_transfer_data(ctx->vk_frame, frame, 1); |
| 686 | if (!ret) |
| 687 | return move_to_output_frame(ctx, frame); |
| 688 | |
| 689 | if (ret != AVERROR(ENOSYS)) |
| 690 | av_log(NULL, AV_LOG_FATAL, "Transfer frame failed: %s\n", |
| 691 | av_err2str(ret)); |
| 692 | return ret; |
| 693 | } |
| 694 | |
| 695 | static int convert_frame(VkRenderer *renderer, AVFrame *frame) |
| 696 | { |
no test coverage detected