| 113 | } |
| 114 | |
| 115 | static int vaapi_encode_make_misc_param_buffer(AVCodecContext *avctx, |
| 116 | VAAPIEncodePicture *pic, |
| 117 | int type, |
| 118 | const void *data, size_t len) |
| 119 | { |
| 120 | // Construct the buffer on the stack - 1KB is much larger than any |
| 121 | // current misc parameter buffer type (the largest is EncQuality at |
| 122 | // 224 bytes). |
| 123 | uint8_t buffer[1024]; |
| 124 | VAEncMiscParameterBuffer header = { |
| 125 | .type = type, |
| 126 | }; |
| 127 | size_t buffer_size = sizeof(header) + len; |
| 128 | av_assert0(buffer_size <= sizeof(buffer)); |
| 129 | |
| 130 | memcpy(buffer, &header, sizeof(header)); |
| 131 | memcpy(buffer + sizeof(header), data, len); |
| 132 | |
| 133 | return vaapi_encode_make_param_buffer(avctx, pic, |
| 134 | VAEncMiscParameterBufferType, |
| 135 | buffer, buffer_size); |
| 136 | } |
| 137 | |
| 138 | static int vaapi_encode_wait(AVCodecContext *avctx, FFHWBaseEncodePicture *base_pic) |
| 139 | { |
no test coverage detected