我正在尝试实现 vp9 硬件加速编码过程。我遵循 ffmpeg 官方 github 的示例(此处 -> vaapi_encode.c)。
但给定的示例仅将 .yuv 文件保存到 .h264 文件,我想将帧保存到 .mp4 或 .webm 容器。并具有质量控制能力等。
我不是从文件中读取帧,而是从实时源中收集帧。当实时视频中有完整的 5 秒帧时,使用 vp9_vaapi 将这些帧编码为 5 秒 .mp4 文件。
我可以将实时直播中的所有 5 秒帧保存到 .mp4 或 .webm 文件中,但它们无法正确播放(更准确地说:继续加载,然后我打开)。
官方网站示例的结果:
cpu编码vp9 .mp4文件结果:
我想用一个#define标志来控制是否使用 openmp。由于#pragma不能不在 a 内#define,所以我尝试了
#define USE_OPENMP // Toggle this on/off
#ifdef USE_OPENMP
#define OMP_FOR(n) __pragma("omp parallel for if(n>10)")
#else
#define OMP_FOR(n) // do nothing
#endif
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中我可以:
int size_of_the_loop = 11;
OMP_FOR(size_of_the_loop) // activate openmp if(n>10)
for(){
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
我对#define相关的东西不熟悉,想知道是否可以实现这一目标?谢谢。
我正在学习在c ++中使用线程,
我用整数创建了一个很长的向量,并设置了另一个整数x。我想计算该整数与向量中整数之间的差。
但是,在我的实现中,使用两个线程的函数比使用单个线程的函数要慢。我想知道为什么是原因,以及如何正确实现线程以使其运行得更快。
这是代码:
#include <iostream>
#include <vector>
#include <thread>
#include <future>
#include <math.h>
using namespace std;
vector<int> vector_generator(int size) {
vector<int> temp;
for (int i = 0; i < size; i++) {
temp.push_back(i);
}
return temp;
}
vector<int> dist_calculation(int center, vector<int> &input, int start, int end) {
vector<int> temp;
for (int i = start; i < end; i++) {
temp.push_back(abs(center - input[i]));
}
return temp;
}
void multi_dist_calculation(int center, vector<int> &input) {
int mid = input.size() / 2; …Run Code Online (Sandbox Code Playgroud)