mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-08-13 10:58:49 +00:00
add:compat.h
This commit is contained in:
parent
70eccc0f61
commit
8d83585130
4 changed files with 48 additions and 17 deletions
|
@ -1,6 +1,7 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
#include "decoder.h"
|
#include "decoder.h"
|
||||||
#include "frames.h"
|
#include "frames.h"
|
||||||
#include "devicesocket.h"
|
#include "devicesocket.h"
|
||||||
|
@ -53,7 +54,7 @@ static void avLogCallback(void *avcl, int level, const char *fmt, va_list vl) {
|
||||||
|
|
||||||
bool Decoder::init()
|
bool Decoder::init()
|
||||||
{
|
{
|
||||||
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 9, 100)
|
#ifdef QTSCRCPY_LAVF_REQUIRES_REGISTER_ALL
|
||||||
av_register_all();
|
av_register_all();
|
||||||
#endif
|
#endif
|
||||||
if (avformat_network_init()) {
|
if (avformat_network_init()) {
|
||||||
|
@ -325,7 +326,7 @@ void Decoder::run()
|
||||||
AVFrame* decodingFrame = m_frames->decodingFrame();
|
AVFrame* decodingFrame = m_frames->decodingFrame();
|
||||||
// the new decoding/encoding API has been introduced by:
|
// the new decoding/encoding API has been introduced by:
|
||||||
// <http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=7fc329e2dd6226dfecaa4a1d7adf353bf2773726>
|
// <http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=7fc329e2dd6226dfecaa4a1d7adf353bf2773726>
|
||||||
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 37, 0)
|
#ifdef QTSCRCPY_LAVF_HAS_NEW_ENCODING_DECODING_API
|
||||||
int ret;
|
int ret;
|
||||||
if ((ret = avcodec_send_packet(codecCtx, &packet)) < 0) {
|
if ((ret = avcodec_send_packet(codecCtx, &packet)) < 0) {
|
||||||
char errorbuf[255] = { 0 };
|
char errorbuf[255] = { 0 };
|
||||||
|
@ -371,7 +372,7 @@ void Decoder::run()
|
||||||
int gotPicture = 0;
|
int gotPicture = 0;
|
||||||
int len = -1;
|
int len = -1;
|
||||||
if (decodingFrame) {
|
if (decodingFrame) {
|
||||||
len = avcodec_decode_video2(codecCtx, decodingFrame, &gotpicture, &packet);
|
len = avcodec_decode_video2(codecCtx, decodingFrame, &gotPicture, &packet);
|
||||||
}
|
}
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
qCritical("Could not decode video packet: %d", len);
|
qCritical("Could not decode video packet: %d", len);
|
||||||
|
|
|
@ -1,18 +1,9 @@
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
#include "recorder.h"
|
#include "recorder.h"
|
||||||
|
|
||||||
// In ffmpeg/doc/APIchanges:
|
|
||||||
// 2016-04-11 - 6f69f7a / 9200514 - lavf 57.33.100 / 57.5.0 - avformat.h
|
|
||||||
// Add AVStream.codecpar, deprecate AVStream.codec.
|
|
||||||
#if (LIBAVFORMAT_VERSION_MICRO >= 100 /* FFmpeg */ && \
|
|
||||||
LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 33, 100)) \
|
|
||||||
|| (LIBAVFORMAT_VERSION_MICRO < 100 && /* Libav */ \
|
|
||||||
LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 5, 0))
|
|
||||||
# define LAVF_NEW_CODEC_API
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const AVRational SCRCPY_TIME_BASE = {1, 1000000}; // timestamps in us
|
static const AVRational SCRCPY_TIME_BASE = {1, 1000000}; // timestamps in us
|
||||||
|
|
||||||
Recorder::Recorder(const QString& fileName)
|
Recorder::Recorder(const QString& fileName)
|
||||||
|
@ -67,7 +58,7 @@ bool Recorder::open(AVCodec *inputCodec)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef LAVF_NEW_CODEC_API
|
#ifdef QTSCRCPY_LAVF_HAS_NEW_CODEC_PARAMS_API
|
||||||
outStream->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
|
outStream->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
|
||||||
outStream->codecpar->codec_id = inputCodec->id;
|
outStream->codecpar->codec_id = inputCodec->id;
|
||||||
outStream->codecpar->format = AV_PIX_FMT_YUV420P;
|
outStream->codecpar->format = AV_PIX_FMT_YUV420P;
|
||||||
|
@ -126,12 +117,12 @@ bool Recorder::write(AVPacket *packet)
|
||||||
|
|
||||||
const AVOutputFormat *Recorder::findMuxer(const char* name)
|
const AVOutputFormat *Recorder::findMuxer(const char* name)
|
||||||
{
|
{
|
||||||
#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58, 9, 100)
|
#ifdef QTSCRCPY_LAVF_HAS_NEW_MUXER_ITERATOR_API
|
||||||
void* opaque = Q_NULLPTR;
|
void* opaque = Q_NULLPTR;
|
||||||
#endif
|
#endif
|
||||||
const AVOutputFormat* outFormat = Q_NULLPTR;
|
const AVOutputFormat* outFormat = Q_NULLPTR;
|
||||||
do {
|
do {
|
||||||
#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58, 9, 100)
|
#ifdef QTSCRCPY_LAVF_HAS_NEW_MUXER_ITERATOR_API
|
||||||
outFormat = av_muxer_iterate(&opaque);
|
outFormat = av_muxer_iterate(&opaque);
|
||||||
#else
|
#else
|
||||||
outFormat = av_oformat_next(outFormat);
|
outFormat = av_oformat_next(outFormat);
|
||||||
|
@ -152,7 +143,7 @@ bool Recorder::recorderWriteHeader(AVPacket *packet)
|
||||||
// copy the first packet to the extra data
|
// copy the first packet to the extra data
|
||||||
memcpy(extradata, packet->data, packet->size);
|
memcpy(extradata, packet->data, packet->size);
|
||||||
|
|
||||||
#ifdef LAVF_NEW_CODEC_API
|
#ifdef QTSCRCPY_LAVF_HAS_NEW_CODEC_PARAMS_API
|
||||||
ostream->codecpar->extradata = extradata;
|
ostream->codecpar->extradata = extradata;
|
||||||
ostream->codecpar->extradata_size = packet->size;
|
ostream->codecpar->extradata_size = packet->size;
|
||||||
#else
|
#else
|
||||||
|
|
36
QtScrcpy/util/compat.h
Normal file
36
QtScrcpy/util/compat.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
#ifndef COMPAT_H
|
||||||
|
#define COMPAT_H
|
||||||
|
#include "libavcodec/version.h"
|
||||||
|
#include "libavformat/version.h"
|
||||||
|
|
||||||
|
// In ffmpeg/doc/APIchanges:
|
||||||
|
// 2016-04-11 - 6f69f7a / 9200514 - lavf 57.33.100 / 57.5.0 - avformat.h
|
||||||
|
// Add AVStream.codecpar, deprecate AVStream.codec.
|
||||||
|
#if (LIBAVFORMAT_VERSION_MICRO >= 100 /* FFmpeg */ && \
|
||||||
|
LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 33, 100)) \
|
||||||
|
|| (LIBAVFORMAT_VERSION_MICRO < 100 && /* Libav */ \
|
||||||
|
LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 5, 0))
|
||||||
|
# define QTSCRCPY_LAVF_HAS_NEW_CODEC_PARAMS_API
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// In ffmpeg/doc/APIchanges:
|
||||||
|
// 2018-02-06 - 0694d87024 - lavf 58.9.100 - avformat.h
|
||||||
|
// Deprecate use of av_register_input_format(), av_register_output_format(),
|
||||||
|
// av_register_all(), av_iformat_next(), av_oformat_next().
|
||||||
|
// Add av_demuxer_iterate(), and av_muxer_iterate().
|
||||||
|
#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58, 9, 100)
|
||||||
|
# define QTSCRCPY_LAVF_HAS_NEW_MUXER_ITERATOR_API
|
||||||
|
#else
|
||||||
|
# define QTSCRCPY_LAVF_REQUIRES_REGISTER_ALL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// In ffmpeg/doc/APIchanges:
|
||||||
|
// 2016-04-21 - 7fc329e - lavc 57.37.100 - avcodec.h
|
||||||
|
// Add a new audio/video encoding and decoding API with decoupled input
|
||||||
|
// and output -- avcodec_send_packet(), avcodec_receive_frame(),
|
||||||
|
// avcodec_send_frame() and avcodec_receive_packet().
|
||||||
|
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 37, 100)
|
||||||
|
# define QTSCRCPY_LAVF_HAS_NEW_ENCODING_DECODING_API
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // COMPAT_H
|
|
@ -1 +1,4 @@
|
||||||
include ($$PWD/mousetap/mousetap.pri)
|
include ($$PWD/mousetap/mousetap.pri)
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/compat.h
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue