aboutsummaryrefslogtreecommitdiffstats
path: root/main/ffmpeg
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2014-12-04 12:00:10 +0200
committerTimo Teräs <timo.teras@iki.fi>2014-12-04 12:00:10 +0200
commita22b228c20bb2e9ec09270beb68c556396690792 (patch)
tree13bfa1654a35ded689d0639dc0212ec5562b2036 /main/ffmpeg
parent8f2469e413757e12582b651b24f49b0fb0072a34 (diff)
downloadaports-a22b228c20bb2e9ec09270beb68c556396690792.tar.bz2
aports-a22b228c20bb2e9ec09270beb68c556396690792.tar.xz
main/ffmpeg: fix flv/aac metadata when using bitfilters
Diffstat (limited to 'main/ffmpeg')
-rw-r--r--main/ffmpeg/APKBUILD6
-rw-r--r--main/ffmpeg/fix-flv-extradata.patch44
2 files changed, 49 insertions, 1 deletions
diff --git a/main/ffmpeg/APKBUILD b/main/ffmpeg/APKBUILD
index 39aace9a11..26494e155d 100644
--- a/main/ffmpeg/APKBUILD
+++ b/main/ffmpeg/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=ffmpeg
pkgver=2.3.4
-pkgrel=1
+pkgrel=2
pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
url="http://ffmpeg.org/"
arch="all"
@@ -14,6 +14,7 @@ makedepends="lame-dev libvorbis-dev xvidcore-dev zlib-dev
depends=
source="http://ffmpeg.org/releases/ffmpeg-$pkgver.tar.bz2
configure-dlvsym.patch
+ fix-flv-extradata.patch
fix-defines.patch
fix-libv4l2-errors.patch"
@@ -80,13 +81,16 @@ libs() {
md5sums="d6a0c7f0827a2446ca2bed11ac9bf608 ffmpeg-2.3.4.tar.bz2
d041c60890392d80f74a567523f4c54d configure-dlvsym.patch
+5f39e099cd7dfe71bb2f6b6615623d67 fix-flv-extradata.patch
fad4fc1e886146a4a2befc8fda052d50 fix-defines.patch
2b6897f352583ee8efdc0c09ef27a30f fix-libv4l2-errors.patch"
sha256sums="2f7dece56ea72a22c7cf49e50b58eaadef340457404395cc0479c843b42344f8 ffmpeg-2.3.4.tar.bz2
ffd6beadaea4cdbc1326fe396d8cd34b3efb791a865a32f64b3fe998b679c1d0 configure-dlvsym.patch
+8324bd3e154c151e64df36afd1edf05b8dc2dcd8e520208be0355a34b4209ad5 fix-flv-extradata.patch
4ccac0cf75fe53685c4cdda4061f7248de9a9b98e11f8e3aed8e1822b94d35d1 fix-defines.patch
872236e91e393b62a1a9d7aebdf0c417314f874a67cef55ad37b39ee57cf9edb fix-libv4l2-errors.patch"
sha512sums="bfb2c33a1d10bd5f8f226a82ca99a9486d1e68e54f8cdb996b13f57a49e731ce9c0606392d92e8486e6cbc9ee75d241cf1abb2127ca274ce1ee67144e6b86c6a ffmpeg-2.3.4.tar.bz2
d9bb652093b1c2d03cead78bcafd59fc8305f36fe5359ac5d7caf038889f1239829e288c07e77a11bbef89de5fe54a5eae50a1c4718ec77137bb677ef9069e54 configure-dlvsym.patch
+d4d369055ef9ec8742f971786b05b89a5748a32cee711f623b71e8aea54b004bebda4e618017a351162647360632b13bcc7f09059938734e692ec841fe769c46 fix-flv-extradata.patch
ea2630d4ae5383bc24a322318aa8c41af745145755333660deec4ed256096eca73a49c41a0921544dfaa53d8087378cb2b5654001332c7262ea39f18e5c472c8 fix-defines.patch
56bba30f200c748d47d60d2b18147522dbceec7e8c97f434d3dbfa239547113a3e9d3b280e22816adeafa994b22eefac4b968448afef1a07aa1c46d3ec359e68 fix-libv4l2-errors.patch"
diff --git a/main/ffmpeg/fix-flv-extradata.patch b/main/ffmpeg/fix-flv-extradata.patch
new file mode 100644
index 0000000000..2fe5b08bcc
--- /dev/null
+++ b/main/ffmpeg/fix-flv-extradata.patch
@@ -0,0 +1,44 @@
+https://trac.ffmpeg.org/ticket/3175
+
+This patch is slightly cleaned up version of:
+http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2014-May/157791.html
+
+diff -ru ffmpeg-2.3.4.orig/libavformat/flvenc.c ffmpeg-2.3.4/libavformat/flvenc.c
+--- ffmpeg-2.3.4.orig/libavformat/flvenc.c 2014-10-03 04:49:20.000000000 -0300
++++ ffmpeg-2.3.4/libavformat/flvenc.c 2014-12-04 11:37:23.286586875 -0200
+@@ -414,11 +414,35 @@
+ if (enc->codec_id == AV_CODEC_ID_AAC) {
+ avio_w8(pb, get_audio_flags(s, enc));
+ avio_w8(pb, 0); // AAC sequence header
++ if (enc->extradata_size < 2) {
++ static const int mpeg4audio_sample_rates[16] = {
++ 96000, 88200, 64000, 48000, 44100, 32000,
++ 24000, 22050, 16000, 12000, 11025, 8000, 7350
++ };
++ int sample_rate_index;
++
++ av_log(s, AV_LOG_WARNING, "AAC extradata empty!.\n");
++ for (sample_rate_index = 0; sample_rate_index < 16; sample_rate_index++)
++ if (enc->sample_rate == mpeg4audio_sample_rates[sample_rate_index])
++ break;
++
++ if (sample_rate_index < 16 && (enc->extradata = av_mallocz(2)) != NULL) {
++ enc->extradata_size = 2;
++ enc->extradata[0] = 0x10 | (sample_rate_index>>1);
++ enc->extradata[1] = (sample_rate_index & 0x01)<<7 | enc->channels <<3;
++ }
++ }
++ if (enc->extradata_size >= 2)
++ av_log(s, AV_LOG_DEBUG, "AAC extradata size %d: %02x:%02x.\n", enc->extradata_size, enc->extradata[0], enc->extradata[1]);
+ avio_write(pb, enc->extradata, enc->extradata_size);
+ } else {
+ avio_w8(pb, enc->codec_tag | FLV_FRAME_KEY); // flags
+ avio_w8(pb, 0); // AVC sequence header
+ avio_wb24(pb, 0); // composition time
++ if(enc->extradata_size>=2)
++ av_log(s, AV_LOG_DEBUG, "Video extradata size %d: %02x:%02x.\n", enc->extradata_size, enc->extradata[0], enc->extradata[1]);
++ else
++ av_log(s, AV_LOG_WARNING, "Video extradata empty!.\n");
+ ff_isom_write_avcc(pb, enc->extradata, enc->extradata_size);
+ }
+ data_size = avio_tell(pb) - pos;