ffms2: revbump for ffmpeg6
This commit is contained in:
parent
6c6c5b6439
commit
9f209716a1
|
@ -0,0 +1,424 @@
|
|||
From 45673149e9a2f5586855ad472e3059084eaa36b1 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Buitenhuis <derek.buitenhuis@gmail.com>
|
||||
Date: Tue, 4 May 2021 14:41:21 +0100
|
||||
Subject: [PATCH] Use auto for AVCodec
|
||||
|
||||
The geniuses over at FFmpeg decided to constify this API, so old
|
||||
versions of the library will return AVCodec *, while new versions
|
||||
of the libary will return const AVCodec *, which, in C++, are not
|
||||
OK to convert between.
|
||||
|
||||
Rather than use some macro hell in ffmscompat.h, we can work around
|
||||
this by using auto.
|
||||
|
||||
Gross.
|
||||
|
||||
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
|
||||
---
|
||||
src/core/audiosource.cpp | 2 +-
|
||||
src/core/indexing.cpp | 6 +++---
|
||||
src/core/videosource.cpp | 2 +-
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/core/audiosource.cpp b/src/core/audiosource.cpp
|
||||
index e4ce97c..ac09666 100644
|
||||
--- a/src/core/audiosource.cpp
|
||||
+++ b/src/core/audiosource.cpp
|
||||
@@ -469,7 +469,7 @@ void FFMS_AudioSource::OpenFile() {
|
||||
|
||||
LAVFOpenFile(SourceFile.c_str(), FormatContext, TrackNumber);
|
||||
|
||||
- AVCodec *Codec = avcodec_find_decoder(FormatContext->streams[TrackNumber]->codecpar->codec_id);
|
||||
+ auto *Codec = avcodec_find_decoder(FormatContext->streams[TrackNumber]->codecpar->codec_id);
|
||||
if (Codec == nullptr)
|
||||
throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_CODEC,
|
||||
"Audio codec not found");
|
||||
diff --git a/src/core/indexing.cpp b/src/core/indexing.cpp
|
||||
index e547c5a..59fb4e8 100644
|
||||
--- a/src/core/indexing.cpp
|
||||
+++ b/src/core/indexing.cpp
|
||||
@@ -384,7 +384,7 @@ FFMS_TrackType FFMS_Indexer::GetTrackType(int Track) {
|
||||
}
|
||||
|
||||
const char *FFMS_Indexer::GetTrackCodec(int Track) {
|
||||
- AVCodec *codec = avcodec_find_decoder(FormatContext->streams[Track]->codecpar->codec_id);
|
||||
+ auto *codec = avcodec_find_decoder(FormatContext->streams[Track]->codecpar->codec_id);
|
||||
return codec ? codec->name : nullptr;
|
||||
}
|
||||
|
||||
@@ -402,7 +402,7 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
|
||||
UseDTS);
|
||||
|
||||
if (IndexMask.count(i) && FormatContext->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
- AVCodec *VideoCodec = avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
|
||||
+ auto *VideoCodec = avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
|
||||
if (!VideoCodec) {
|
||||
FormatContext->streams[i]->discard = AVDISCARD_ALL;
|
||||
IndexMask.erase(i);
|
||||
@@ -433,7 +433,7 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
|
||||
IndexMask.insert(i);
|
||||
}
|
||||
} else if (IndexMask.count(i) && FormatContext->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
- AVCodec *AudioCodec = avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
|
||||
+ auto *AudioCodec = avcodec_find_decoder(FormatContext->streams[i]->codecpar->codec_id);
|
||||
if (AudioCodec == nullptr)
|
||||
throw FFMS_Exception(FFMS_ERROR_CODEC, FFMS_ERROR_UNSUPPORTED,
|
||||
"Audio codec not found");
|
||||
diff --git a/src/core/videosource.cpp b/src/core/videosource.cpp
|
||||
index b889970..8956c22 100644
|
||||
--- a/src/core/videosource.cpp
|
||||
+++ b/src/core/videosource.cpp
|
||||
@@ -171,7 +171,7 @@ FFMS_VideoSource::FFMS_VideoSource(const char *SourceFile, FFMS_Index &Index, in
|
||||
|
||||
LAVFOpenFile(SourceFile, FormatContext, VideoTrack);
|
||||
|
||||
- AVCodec *Codec = avcodec_find_decoder(FormatContext->streams[VideoTrack]->codecpar->codec_id);
|
||||
+ auto *Codec = avcodec_find_decoder(FormatContext->streams[VideoTrack]->codecpar->codec_id);
|
||||
if (Codec == nullptr)
|
||||
throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_CODEC,
|
||||
"Video codec not found");
|
||||
--
|
||||
2.40.0
|
||||
|
||||
From 96cbf38ea9381829a1314f432a2c60495dcefaad Mon Sep 17 00:00:00 2001
|
||||
From: Derek Buitenhuis <derek.buitenhuis@gmail.com>
|
||||
Date: Tue, 4 May 2021 14:12:41 +0100
|
||||
Subject: [PATCH] all: Update AVPacket API usage
|
||||
|
||||
AVPackets must all be on the heap now, since it is no longer
|
||||
part of the libav* ABI.
|
||||
|
||||
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
|
||||
---
|
||||
src/core/audiosource.cpp | 16 ++++++----
|
||||
src/core/indexing.cpp | 63 ++++++++++++++++++++++------------------
|
||||
src/core/indexing.h | 4 +--
|
||||
src/core/utils.cpp | 6 ----
|
||||
src/core/utils.h | 1 -
|
||||
src/core/videosource.cpp | 30 ++++++++++---------
|
||||
6 files changed, 64 insertions(+), 56 deletions(-)
|
||||
|
||||
diff --git a/src/core/audiosource.cpp b/src/core/audiosource.cpp
|
||||
index 37cf9ae..e4ce97c 100644
|
||||
--- a/src/core/audiosource.cpp
|
||||
+++ b/src/core/audiosource.cpp
|
||||
@@ -285,10 +285,15 @@ FFMS_AudioSource::AudioBlock *FFMS_AudioSource::CacheBlock(CacheIterator &pos) {
|
||||
int FFMS_AudioSource::DecodeNextBlock(CacheIterator *pos) {
|
||||
CurrentFrame = &Frames[PacketNumber];
|
||||
|
||||
- AVPacket Packet;
|
||||
- if (!ReadPacket(&Packet))
|
||||
+ AVPacket *Packet = av_packet_alloc();
|
||||
+ if (!Packet)
|
||||
+ throw FFMS_Exception(FFMS_ERROR_PARSER, FFMS_ERROR_ALLOCATION_FAILED,
|
||||
+ "Could not allocate packet.");
|
||||
+ if (!ReadPacket(Packet)) {
|
||||
+ av_packet_free(&Packet);
|
||||
throw FFMS_Exception(FFMS_ERROR_PARSER, FFMS_ERROR_UNKNOWN,
|
||||
"ReadPacket unexpectedly failed to read a packet");
|
||||
+ }
|
||||
|
||||
// ReadPacket may have changed the packet number
|
||||
CurrentFrame = &Frames[PacketNumber];
|
||||
@@ -297,8 +302,9 @@ int FFMS_AudioSource::DecodeNextBlock(CacheIterator *pos) {
|
||||
int NumberOfSamples = 0;
|
||||
AudioBlock *CachedBlock = nullptr;
|
||||
|
||||
- int Ret = avcodec_send_packet(CodecContext, &Packet);
|
||||
- av_packet_unref(&Packet);
|
||||
+ int Ret = avcodec_send_packet(CodecContext, Packet);
|
||||
+ av_packet_unref(Packet);
|
||||
+ av_packet_free(&Packet);
|
||||
|
||||
av_frame_unref(DecodeFrame);
|
||||
Ret = avcodec_receive_frame(CodecContext, DecodeFrame);
|
||||
@@ -513,8 +519,6 @@ void FFMS_AudioSource::Seek() {
|
||||
}
|
||||
|
||||
bool FFMS_AudioSource::ReadPacket(AVPacket *Packet) {
|
||||
- InitNullPacket(*Packet);
|
||||
-
|
||||
while (av_read_frame(FormatContext, Packet) >= 0) {
|
||||
if (Packet->stream_index == TrackNumber) {
|
||||
// Required because not all audio packets, especially in ogg, have a pts. Use the previous valid packet's pts instead.
|
||||
diff --git a/src/core/indexing.cpp b/src/core/indexing.cpp
|
||||
index 23fb95b..e547c5a 100644
|
||||
--- a/src/core/indexing.cpp
|
||||
+++ b/src/core/indexing.cpp
|
||||
@@ -320,7 +320,7 @@ void FFMS_Indexer::CheckAudioProperties(int Track, AVCodecContext *Context) {
|
||||
}
|
||||
}
|
||||
|
||||
-void FFMS_Indexer::ParseVideoPacket(SharedAVContext &VideoContext, AVPacket &pkt, int *RepeatPict,
|
||||
+void FFMS_Indexer::ParseVideoPacket(SharedAVContext &VideoContext, AVPacket *pkt, int *RepeatPict,
|
||||
int *FrameType, bool *Invisible, enum AVPictureStructure *LastPicStruct) {
|
||||
if (VideoContext.Parser) {
|
||||
uint8_t *OB;
|
||||
@@ -330,8 +330,8 @@ void FFMS_Indexer::ParseVideoPacket(SharedAVContext &VideoContext, AVPacket &pkt
|
||||
av_parser_parse2(VideoContext.Parser,
|
||||
VideoContext.CodecContext,
|
||||
&OB, &OBSize,
|
||||
- pkt.data, pkt.size,
|
||||
- pkt.pts, pkt.dts, pkt.pos);
|
||||
+ pkt->data, pkt->size,
|
||||
+ pkt->pts, pkt->dts, pkt->pos);
|
||||
|
||||
// H.264 (PAFF) and HEVC may have one field per packet, so we need to track
|
||||
// when we have a full or half frame available, and mark one of them as
|
||||
@@ -351,15 +351,15 @@ void FFMS_Indexer::ParseVideoPacket(SharedAVContext &VideoContext, AVPacket &pkt
|
||||
|
||||
*RepeatPict = VideoContext.Parser->repeat_pict;
|
||||
*FrameType = VideoContext.Parser->pict_type;
|
||||
- *Invisible = (IncompleteFrame || VideoContext.Parser->repeat_pict < 0 || (pkt.flags & AV_PKT_FLAG_DISCARD));
|
||||
+ *Invisible = (IncompleteFrame || VideoContext.Parser->repeat_pict < 0 || (pkt->flags & AV_PKT_FLAG_DISCARD));
|
||||
} else {
|
||||
- *Invisible = !!(pkt.flags & AV_PKT_FLAG_DISCARD);
|
||||
+ *Invisible = !!(pkt->flags & AV_PKT_FLAG_DISCARD);
|
||||
}
|
||||
|
||||
if (VideoContext.CodecContext->codec_id == AV_CODEC_ID_VP8)
|
||||
- ParseVP8(pkt.data[0], Invisible, FrameType);
|
||||
+ ParseVP8(pkt->data[0], Invisible, FrameType);
|
||||
else if (VideoContext.CodecContext->codec_id == AV_CODEC_ID_VP9)
|
||||
- ParseVP9(pkt.data[0], Invisible, FrameType);
|
||||
+ ParseVP9(pkt->data[0], Invisible, FrameType);
|
||||
}
|
||||
|
||||
void FFMS_Indexer::Free() {
|
||||
@@ -458,32 +458,36 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
|
||||
}
|
||||
}
|
||||
|
||||
- AVPacket Packet;
|
||||
- InitNullPacket(Packet);
|
||||
+ AVPacket *Packet = av_packet_alloc();
|
||||
+ if (!Packet)
|
||||
+ throw FFMS_Exception(FFMS_ERROR_CODEC, FFMS_ERROR_ALLOCATION_FAILED,
|
||||
+ "Could not allocate packet.");
|
||||
std::vector<int64_t> LastValidTS(FormatContext->nb_streams, AV_NOPTS_VALUE);
|
||||
|
||||
int64_t filesize = avio_size(FormatContext->pb);
|
||||
enum AVPictureStructure LastPicStruct = AV_PICTURE_STRUCTURE_UNKNOWN;
|
||||
- while (av_read_frame(FormatContext, &Packet) >= 0) {
|
||||
+ while (av_read_frame(FormatContext, Packet) >= 0) {
|
||||
// Update progress
|
||||
// FormatContext->pb can apparently be NULL when opening images.
|
||||
if (IC && FormatContext->pb) {
|
||||
- if ((*IC)(FormatContext->pb->pos, filesize, ICPrivate))
|
||||
+ if ((*IC)(FormatContext->pb->pos, filesize, ICPrivate)) {
|
||||
+ av_packet_free(&Packet);
|
||||
throw FFMS_Exception(FFMS_ERROR_CANCELLED, FFMS_ERROR_USER,
|
||||
"Cancelled by user");
|
||||
+ }
|
||||
}
|
||||
- if (!IndexMask.count(Packet.stream_index)) {
|
||||
- av_packet_unref(&Packet);
|
||||
+ if (!IndexMask.count(Packet->stream_index)) {
|
||||
+ av_packet_unref(Packet);
|
||||
continue;
|
||||
}
|
||||
|
||||
- int Track = Packet.stream_index;
|
||||
+ int Track = Packet->stream_index;
|
||||
FFMS_Track &TrackInfo = (*TrackIndices)[Track];
|
||||
- bool KeyFrame = !!(Packet.flags & AV_PKT_FLAG_KEY);
|
||||
+ bool KeyFrame = !!(Packet->flags & AV_PKT_FLAG_KEY);
|
||||
ReadTS(Packet, LastValidTS[Track], (*TrackIndices)[Track].UseDTS);
|
||||
|
||||
if (FormatContext->streams[Track]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
- int64_t PTS = TrackInfo.UseDTS ? Packet.dts : Packet.pts;
|
||||
+ int64_t PTS = TrackInfo.UseDTS ? Packet->dts : Packet->pts;
|
||||
if (PTS == AV_NOPTS_VALUE) {
|
||||
// VPx alt-refs are output as packets which lack timestmps or durations, since
|
||||
// they are invisible. Currently, the timestamp mangling code in libavformat
|
||||
@@ -495,9 +499,11 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
|
||||
// FFMS2 currently sorts packets by PTS, which will break decoding, otherwise.
|
||||
bool HasAltRefs = (FormatContext->streams[Track]->codecpar->codec_id == AV_CODEC_ID_VP8 ||
|
||||
FormatContext->streams[Track]->codecpar->codec_id == AV_CODEC_ID_VP9);
|
||||
- if (Packet.duration == 0 && !HasAltRefs)
|
||||
+ if (Packet->duration == 0 && !HasAltRefs) {
|
||||
+ av_packet_free(&Packet);
|
||||
throw FFMS_Exception(FFMS_ERROR_INDEXING, FFMS_ERROR_PARSER,
|
||||
"Invalid packet pts, dts, and duration");
|
||||
+ }
|
||||
|
||||
if (TrackInfo.empty())
|
||||
PTS = 0;
|
||||
@@ -513,7 +519,7 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
|
||||
ParseVideoPacket(AVContexts[Track], Packet, &RepeatPict, &FrameType, &Invisible, &LastPicStruct);
|
||||
|
||||
TrackInfo.AddVideoFrame(PTS, RepeatPict, KeyFrame,
|
||||
- FrameType, Packet.pos, Invisible);
|
||||
+ FrameType, Packet->pos, Invisible);
|
||||
} else if (FormatContext->streams[Track]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
// For video seeking timestamps are used only if all packets have
|
||||
// timestamps, while for audio they're used if any have timestamps,
|
||||
@@ -522,28 +528,29 @@ FFMS_Index *FFMS_Indexer::DoIndexing() {
|
||||
TrackInfo.HasTS = true;
|
||||
|
||||
int64_t StartSample = AVContexts[Track].CurrentSample;
|
||||
- uint32_t SampleCount = IndexAudioPacket(Track, &Packet, AVContexts[Track], *TrackIndices);
|
||||
+ uint32_t SampleCount = IndexAudioPacket(Track, Packet, AVContexts[Track], *TrackIndices);
|
||||
TrackInfo.SampleRate = AVContexts[Track].CodecContext->sample_rate;
|
||||
|
||||
TrackInfo.AddAudioFrame(LastValidTS[Track],
|
||||
- StartSample, SampleCount, KeyFrame, Packet.pos, Packet.flags & AV_PKT_FLAG_DISCARD);
|
||||
+ StartSample, SampleCount, KeyFrame, Packet->pos, Packet->flags & AV_PKT_FLAG_DISCARD);
|
||||
}
|
||||
|
||||
- if (!(Packet.flags & AV_PKT_FLAG_DISCARD))
|
||||
- TrackInfo.LastDuration = Packet.duration;
|
||||
+ if (!(Packet->flags & AV_PKT_FLAG_DISCARD))
|
||||
+ TrackInfo.LastDuration = Packet->duration;
|
||||
|
||||
- av_packet_unref(&Packet);
|
||||
+ av_packet_unref(Packet);
|
||||
}
|
||||
+ av_packet_free(&Packet);
|
||||
|
||||
TrackIndices->Finalize(AVContexts, FormatContext->iformat->name);
|
||||
return TrackIndices.release();
|
||||
}
|
||||
|
||||
-void FFMS_Indexer::ReadTS(const AVPacket &Packet, int64_t &TS, bool &UseDTS) {
|
||||
- if (!UseDTS && Packet.pts != AV_NOPTS_VALUE)
|
||||
- TS = Packet.pts;
|
||||
+void FFMS_Indexer::ReadTS(const AVPacket *Packet, int64_t &TS, bool &UseDTS) {
|
||||
+ if (!UseDTS && Packet->pts != AV_NOPTS_VALUE)
|
||||
+ TS = Packet->pts;
|
||||
if (TS == AV_NOPTS_VALUE)
|
||||
UseDTS = true;
|
||||
- if (UseDTS && Packet.dts != AV_NOPTS_VALUE)
|
||||
- TS = Packet.dts;
|
||||
+ if (UseDTS && Packet->dts != AV_NOPTS_VALUE)
|
||||
+ TS = Packet->dts;
|
||||
}
|
||||
diff --git a/src/core/indexing.h b/src/core/indexing.h
|
||||
index 3cfc3c3..5c06868 100644
|
||||
--- a/src/core/indexing.h
|
||||
+++ b/src/core/indexing.h
|
||||
@@ -80,10 +80,10 @@ private:
|
||||
int64_t Filesize;
|
||||
uint8_t Digest[20];
|
||||
|
||||
- void ReadTS(const AVPacket &Packet, int64_t &TS, bool &UseDTS);
|
||||
+ void ReadTS(const AVPacket *Packet, int64_t &TS, bool &UseDTS);
|
||||
void CheckAudioProperties(int Track, AVCodecContext *Context);
|
||||
uint32_t IndexAudioPacket(int Track, AVPacket *Packet, SharedAVContext &Context, FFMS_Index &TrackIndices);
|
||||
- void ParseVideoPacket(SharedAVContext &VideoContext, AVPacket &pkt, int *RepeatPict, int *FrameType, bool *Invisible, enum AVPictureStructure *LastPicStruct);
|
||||
+ void ParseVideoPacket(SharedAVContext &VideoContext, AVPacket *pkt, int *RepeatPict, int *FrameType, bool *Invisible, enum AVPictureStructure *LastPicStruct);
|
||||
void Free();
|
||||
public:
|
||||
FFMS_Indexer(const char *Filename);
|
||||
diff --git a/src/core/utils.cpp b/src/core/utils.cpp
|
||||
index ce67533..8a2e997 100644
|
||||
--- a/src/core/utils.cpp
|
||||
+++ b/src/core/utils.cpp
|
||||
@@ -62,12 +62,6 @@ void ClearErrorInfo(FFMS_ErrorInfo *ErrorInfo) {
|
||||
}
|
||||
}
|
||||
|
||||
-void InitNullPacket(AVPacket &pkt) {
|
||||
- av_init_packet(&pkt);
|
||||
- pkt.data = nullptr;
|
||||
- pkt.size = 0;
|
||||
-}
|
||||
-
|
||||
void FillAP(FFMS_AudioProperties &AP, AVCodecContext *CTX, FFMS_Track &Frames) {
|
||||
AP.SampleFormat = static_cast<FFMS_SampleFormat>(av_get_packed_sample_fmt(CTX->sample_fmt));
|
||||
AP.BitsPerSample = av_get_bytes_per_sample(CTX->sample_fmt) * 8;
|
||||
diff --git a/src/core/utils.h b/src/core/utils.h
|
||||
index 9819dc7..003ab79 100644
|
||||
--- a/src/core/utils.h
|
||||
+++ b/src/core/utils.h
|
||||
@@ -58,7 +58,6 @@ std::unique_ptr<T> make_unique(Args&&... args) {
|
||||
}
|
||||
|
||||
void ClearErrorInfo(FFMS_ErrorInfo *ErrorInfo);
|
||||
-void InitNullPacket(AVPacket &pkt);
|
||||
void FillAP(FFMS_AudioProperties &AP, AVCodecContext *CTX, FFMS_Track &Frames);
|
||||
|
||||
void LAVFOpenFile(const char *SourceFile, AVFormatContext *&FormatContext, int Track);
|
||||
diff --git a/src/core/videosource.cpp b/src/core/videosource.cpp
|
||||
index 06bd161..b889970 100644
|
||||
--- a/src/core/videosource.cpp
|
||||
+++ b/src/core/videosource.cpp
|
||||
@@ -673,30 +673,34 @@ void FFMS_VideoSource::DecodeNextFrame(int64_t &AStartTime, int64_t &Pos) {
|
||||
if (HasPendingDelayedFrames())
|
||||
return;
|
||||
|
||||
- AVPacket Packet;
|
||||
- InitNullPacket(Packet);
|
||||
-
|
||||
- while (ReadFrame(&Packet) >= 0) {
|
||||
- if (Packet.stream_index != VideoTrack) {
|
||||
- av_packet_unref(&Packet);
|
||||
+ AVPacket *Packet = av_packet_alloc();
|
||||
+ if (!Packet)
|
||||
+ throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_ALLOCATION_FAILED,
|
||||
+ "Could not allocate packet.");
|
||||
+
|
||||
+ while (ReadFrame(Packet) >= 0) {
|
||||
+ if (Packet->stream_index != VideoTrack) {
|
||||
+ av_packet_unref(Packet);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (AStartTime < 0)
|
||||
- AStartTime = Frames.UseDTS ? Packet.dts : Packet.pts;
|
||||
+ AStartTime = Frames.UseDTS ? Packet->dts : Packet->pts;
|
||||
|
||||
if (Pos < 0)
|
||||
- Pos = Packet.pos;
|
||||
+ Pos = Packet->pos;
|
||||
|
||||
- bool FrameFinished = DecodePacket(&Packet);
|
||||
- av_packet_unref(&Packet);
|
||||
- if (FrameFinished)
|
||||
+ bool FrameFinished = DecodePacket(Packet);
|
||||
+ av_packet_unref(Packet);
|
||||
+ if (FrameFinished) {
|
||||
+ av_packet_free(&Packet);
|
||||
return;
|
||||
+ }
|
||||
}
|
||||
|
||||
// Flush final frames
|
||||
- InitNullPacket(Packet);
|
||||
- DecodePacket(&Packet);
|
||||
+ DecodePacket(Packet);
|
||||
+ av_packet_free(&Packet);
|
||||
}
|
||||
|
||||
bool FFMS_VideoSource::SeekTo(int n, int SeekOffset) {
|
||||
--
|
||||
2.40.0
|
||||
|
||||
From bf9e03e9e08534c024e5a744a6437c4aac160201 Mon Sep 17 00:00:00 2001
|
||||
From: Derek Buitenhuis <derek.buitenhuis@gmail.com>
|
||||
Date: Tue, 4 May 2021 14:20:47 +0100
|
||||
Subject: [PATCH 2/3] configure: Remove deprecated API use
|
||||
|
||||
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
|
||||
---
|
||||
configure.ac | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index b35ef80bc..d19714d0f 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -102,10 +102,10 @@ CFLAGS="$_CFLAGS $FFMPEG_CFLAGS"
|
||||
|
||||
AC_DEFUN([TEST_FFMPEG],
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
- #include <libavcodec/avcodec.h>
|
||||
+ #include <libavformat/avformat.h>
|
||||
#include <libswscale/swscale.h>
|
||||
]],[[
|
||||
- avcodec_register_all();
|
||||
+ avformat_network_init();
|
||||
swscale_version();
|
||||
]])], [eval $1=yes], [eval $1=no])
|
||||
])
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
# Template file for 'ffms2'
|
||||
pkgname=ffms2
|
||||
version=2.40
|
||||
revision=1
|
||||
revision=2
|
||||
build_style=gnu-configure
|
||||
configure_args="--enable-shared --disable-static"
|
||||
hostmakedepends="pkg-config autoconf automake libtool"
|
||||
makedepends="ffmpeg-devel zlib-devel"
|
||||
makedepends="ffmpeg6-devel zlib-devel"
|
||||
short_desc="Libav/ffmpeg based frames server"
|
||||
maintainer="Orphaned <orphan@voidlinux.org>"
|
||||
license="MIT, GPL-3.0-or-later"
|
||||
|
|
Loading…
Reference in New Issue