if (support_encode == 0) {
printf("Can't find VAEntrypointEncSlice for H264 profiles. If you are using a non-Intel GPU\n");
- printf("but have one in your system, try launching Nageru with --va-display /dev/dri/card0\n");
+ printf("but have one in your system, try launching Nageru with --va-display /dev/dri/renderD128\n");
printf("to use VA-API against DRM instead of X11.\n");
exit(1);
} else {
pending_audio_frames.erase(it);
}
- AVFrame *frame = avcodec_alloc_frame();
+ AVFrame *frame = av_frame_alloc();
frame->nb_samples = audio.size() / 2;
frame->format = AV_SAMPLE_FMT_S32;
frame->channel_layout = AV_CH_LAYOUT_STEREO;
httpd->add_packet(pkt, audio_pts + global_delay, audio_pts + global_delay);
}
// TODO: Delayed frames.
- avcodec_free_frame(&frame);
+ av_frame_unref(frame);
av_free_packet(&pkt);
if (audio_pts == task.pts) break;
}
int frame_type, int64_t pts, int64_t dts)
{
// Wait for the GPU to be done with the frame.
- glClientWaitSync(frame.fence.get(), 0, 0);
+ GLenum sync_status;
+ do {
+ sync_status = glClientWaitSync(frame.fence.get(), 0, 1000000000);
+ check_error();
+ } while (sync_status == GL_TIMEOUT_EXPIRED);
+ assert(sync_status != GL_WAIT_FAILED);
// Release back any input frames we needed to render this frame.
frame.input_frames.clear();