diff options
author | Daniel Tobias | 2017-12-22 07:48:49 +1100 |
---|---|---|
committer | Daniel Tobias | 2017-12-22 07:53:00 +1100 |
commit | 0ef5d412a7f5c5ed0eba684f390471ab8be7e96d (patch) | |
tree | a316f6320dbc09ecac744ba759c42c1dc435a244 | |
parent | e1c51c4b10b5b84c2f87dbd66e79085b62e65cdf (diff) | |
download | aur-0ef5d412a7f5c5ed0eba684f390471ab8be7e96d.tar.gz |
add patch included in base package
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 10 | ||||
-rw-r--r-- | fs56089.patch | 84 |
3 files changed, 94 insertions, 4 deletions
@@ -1,5 +1,5 @@ # Generated by mksrcinfo v8 -# Thu Dec 21 20:41:20 UTC 2017 +# Thu Dec 21 20:47:13 UTC 2017 pkgbase = ffmpeg-headless pkgdesc = Complete solution to record, convert and stream audio and video; optimised for server (headless) systems pkgver = 3.4.1 @@ -52,7 +52,9 @@ pkgbase = ffmpeg-headless conflicts = ffmpeg replaces = ffmpeg source = https://ffmpeg.org/releases/ffmpeg-3.4.1.tar.xz + source = fs56089.patch sha256sums = 5a77278a63741efa74e26bf197b9bb09ac6381b9757391b922407210f0f991c0 + sha256sums = 0bfcd12d1992903f21c146ae56d9ad89b52818cfb2303197ee905347c25a5427 pkgname = ffmpeg-headless @@ -29,13 +29,17 @@ provides=('libavcodec.so' 'libavdevice.so' 'libavfilter.so' 'libavformat.so' 'libswscale.so' "ffmpeg") conflicts=('ffmpeg') replaces=('ffmpeg') -source=("https://ffmpeg.org/releases/${_pkgname}-${pkgver}.tar.xz") -#validpgpkeys=('FCF986EA15E6E293A5644F10B4322F04D67658D8') -sha256sums=('5a77278a63741efa74e26bf197b9bb09ac6381b9757391b922407210f0f991c0') +source=("https://ffmpeg.org/releases/${_pkgname}-${pkgver}.tar.xz" + 'fs56089.patch') +sha256sums=('5a77278a63741efa74e26bf197b9bb09ac6381b9757391b922407210f0f991c0' + '0bfcd12d1992903f21c146ae56d9ad89b52818cfb2303197ee905347c25a5427') prepare() { cd ${_pkgname}-${pkgver} + # https://bugs.archlinux.org/task/56089 + # Backport of http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=a606f27f4c610708fa96e35eed7b7537d3d8f712 + patch -Np1 -i ../fs56089.patch } build() { diff --git a/fs56089.patch b/fs56089.patch new file mode 100644 index 000000000000..6aca38f9f96c --- /dev/null +++ b/fs56089.patch @@ -0,0 +1,84 @@ +diff -rupN ffmpeg-3.4.orig/libavformat/aviobuf.c ffmpeg-3.4/libavformat/aviobuf.c +--- ffmpeg-3.4.orig/libavformat/aviobuf.c 2017-11-02 14:57:16.078834563 +0100 ++++ ffmpeg-3.4/libavformat/aviobuf.c 2017-11-02 15:02:52.549816990 +0100 +@@ -531,6 +531,24 @@ void avio_write_marker(AVIOContext *s, i + s->last_time = time; + } + ++static int read_packet_wrapper(AVIOContext *s, uint8_t *buf, int size) ++{ ++ int ret; ++ ++ if (!s->read_packet) ++ return AVERROR_EOF; ++ ret = s->read_packet(s->opaque, buf, size); ++#if FF_API_OLD_AVIO_EOF_0 ++ if (!ret && !s->max_packet_size) { ++ av_log(NULL, AV_LOG_WARNING, "Invalid return value 0 for stream protocol\n"); ++ ret = AVERROR_EOF; ++ } ++#else ++ av_assert2(ret || s->max_packet_size); ++#endif ++ return ret; ++} ++ + /* Input stream */ + + static void fill_buffer(AVIOContext *s) +@@ -569,10 +587,7 @@ static void fill_buffer(AVIOContext *s) + len = s->orig_buffer_size; + } + +- if (s->read_packet) +- len = s->read_packet(s->opaque, dst, len); +- else +- len = 0; ++ len = read_packet_wrapper(s, dst, len); + if (len <= 0) { + /* do not modify buffer if EOF reached so that a seek back can + be done without rereading data */ +@@ -644,8 +659,7 @@ int avio_read(AVIOContext *s, unsigned c + if (len == 0 || s->write_flag) { + if((s->direct || size > s->buffer_size) && !s->update_checksum) { + // bypass the buffer and read data directly into buf +- if(s->read_packet) +- len = s->read_packet(s->opaque, buf, size); ++ len = read_packet_wrapper(s, buf, size); + + if (len <= 0) { + /* do not modify buffer if EOF reached so that a seek back can +@@ -711,7 +725,7 @@ int avio_read_partial(AVIOContext *s, un + return -1; + + if (s->read_packet && s->write_flag) { +- len = s->read_packet(s->opaque, buf, size); ++ len = read_packet_wrapper(s, buf, size); + if (len > 0) + s->pos += len; + return len; +diff -rupN ffmpeg-3.4.orig/libavformat/avio.h ffmpeg-3.4/libavformat/avio.h +--- ffmpeg-3.4.orig/libavformat/avio.h 2017-11-02 14:57:16.078834563 +0100 ++++ ffmpeg-3.4/libavformat/avio.h 2017-11-02 14:59:15.602300896 +0100 +@@ -452,6 +452,8 @@ void avio_free_directory_entry(AVIODirEn + * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. + * @param opaque An opaque pointer to user-specific data. + * @param read_packet A function for refilling the buffer, may be NULL. ++ * For stream protocols, must never return 0 but rather ++ * a proper AVERROR code. + * @param write_packet A function for writing the buffer contents, may be NULL. + * The function may not change the input buffers content. + * @param seek A function for seeking to specified byte position, may be NULL. +diff -rupN ffmpeg-3.4.orig/libavformat/version.h ffmpeg-3.4/libavformat/version.h +--- ffmpeg-3.4.orig/libavformat/version.h 2017-11-02 14:57:16.082167807 +0100 ++++ ffmpeg-3.4/libavformat/version.h 2017-11-02 15:04:01.704627612 +0100 +@@ -97,6 +97,9 @@ + #ifndef FF_API_OLD_ROTATE_API + #define FF_API_OLD_ROTATE_API (LIBAVFORMAT_VERSION_MAJOR < 58) + #endif ++#ifndef FF_API_OLD_AVIO_EOF_0 ++#define FF_API_OLD_AVIO_EOF_0 (LIBAVFORMAT_VERSION_MAJOR < 58) ++#endif + + + #ifndef FF_API_R_FRAME_RATE |