← index
Acid.Cam.v2.Qt/src/ffmpeg_write.h
Source: Acid.Cam.v2.Qt/src/ffmpeg_write.h
/*
 * Acid Cam v2 - Qt/OpenCV Edition
 * written by Jared Bruni ( http://lostsidedead.com )
 * (C) 2017 GPL
 */

#ifndef _FFMPEG_WRITE_H_
#define _FFMPEG_WRITE_H_

#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <opencv2/opencv.hpp>
#include <sstream>

enum class FFmpegCodec {
    LIBX264,        // CPU H.264 encoder
    LIBX265,        // CPU H.265/HEVC encoder
    H264_NVENC,     // NVIDIA GPU H.264 encoder
    HEVC_NVENC,     // NVIDIA GPU H.265/HEVC encoder
    H264_VAAPI,     // Intel/AMD VAAPI H.264 encoder
    HEVC_VAAPI,     // Intel/AMD VAAPI H.265 encoder
    CODEC_COUNT
};

const char* getCodecName(FFmpegCodec codec);
const char* getCodecDescription(FFmpegCodec codec);
FILE* ffmpeg_open(const std::string &output, FFmpegCodec codec,
                  const std::string &src_res, const std::string &dst_res,
                  double fps, int crf);
void ffmpeg_write_frame(FILE *fptr, const cv::Mat &frame);
void ffmpeg_close(FILE *fptr);
bool ffmpeg_mux_audio(const std::string &temp_video, const std::string &source,
                      const std::string &output);
bool ffmpeg_check_nvenc();
bool ffmpeg_check_vaapi();

#endif