我已经使用ffmpeg成功实现了一个视频播放器.我现在正在尝试使用硬件解码,但我面临一些问题.我发现了一篇帖子,我将其作为起点:http://comments.gmane.org/gmane.comp.video.ffmpeg.libav.user/13523
我已经更新了为解码器设置必要内容的代码.更新后的代码可以在这里找到:https://drive.google.com/file/d/0B5ufHdoDzA4ieVk5UVpxcDNzRHc/view?usp=sharing
这就是我用它来初始化解码器的方法:
// Prepare the decoding context
AVCodec *codec = nullptr;
_codecContext = _avFormatContext->streams[_streamIndex]->codec;
if ((codec = avcodec_find_decoder(_codecContext->codec_id)) == 0)
{
std::cout << "Unsupported video codec!" << std::endl;
return false;
}
_codecContext->thread_count = 1; // Multithreading is apparently not compatible with hardware decoding
InputStream *ist = new InputStream();
ist->hwaccel_id = HWACCEL_AUTO;
ist->hwaccel_device = "dxva2";
ist->dec = codec;
ist->dec_ctx = _codecContext;
_codecContext->coded_width = _width;
_codecContext->coded_height = _height;
_codecContext->opaque = ist;
dxva2_init(_codecContext);
_codecContext->get_buffer2 = ist->hwaccel_get_buffer;
_codecContext->get_format = …
Run Code Online (Sandbox Code Playgroud) 我有一个管道作业,用于签出 git 存储库(我们称之为“repoA”)并将其传递给其他一些下游作业以进行进一步处理。上游作业的脚本存储在不同的 git 存储库中(我们称之为“repoB”)。该作业配置有“轮询 SCM”选项,以便对 repoA 的任何更改都会触发它。在管道部分中,我选择了“来自 SCM 的管道脚本”选项并将其配置为从 repoB 的 master 分支获取管道脚本。我还添加了选项“不要触发提交通知上的构建”。我期望的行为是推送到 repoA 的任何更改都会触发该作业,而对 repoB 的任何更改都不会触发该作业。然而,当我将更改推送到 repoB 时,就会触发该作业。
我不知道这是一个错误,还是我遗漏了一些东西。
我正在运行 Jenkins 2.7.4。我的主 Jenkins 运行在 Ubuntu 服务器 16.04.1 LTS 上。我的所有 Jenkins 插件都是最新的。