summaryrefslogtreecommitdiff
path: root/media-video/handbrake
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/handbrake')
-rw-r--r--media-video/handbrake/Manifest3
-rw-r--r--media-video/handbrake/files/handbrake-1.1.0-nolibav.patch235
-rw-r--r--media-video/handbrake/handbrake-1.1.0.ebuild6
3 files changed, 241 insertions, 3 deletions
diff --git a/media-video/handbrake/Manifest b/media-video/handbrake/Manifest
index a36c9c15cf31..e152b4dba0ef 100644
--- a/media-video/handbrake/Manifest
+++ b/media-video/handbrake/Manifest
@@ -1,4 +1,5 @@
AUX handbrake-0.10.3-nolibav.patch 2821 BLAKE2B 78294506e6b3efe71d7d14537c2e605d10067fd9e637f06ff3b01a9d8e6bea34dfb2c871bb2558e35310bebdb4922ae99f63d9f7911f7236a28ea1a4dc3d6832 SHA512 88a0b5df6cc198a8383a2d1dcf6d4c71f24445ea71e29dac570a2b3987cdaa0a563b56c7cccd291b58099dbdb15130bdcc0cd4527bdaeb442aefe4fa06455ec7
+AUX handbrake-1.1.0-nolibav.patch 9306 BLAKE2B 8b3fafe2063fc03d1e4a571eb5133b532e760dda4cafaee80b748efcacfc8c3546531e29393a82582cde75f14d07fccc9f4b3451d497cf3beae97d0e93da5515 SHA512 42f21168349a9120c78f80f14c3faea81ed4d65b9987aaa8162b718dbb919a7e736969c1ae18083bb853b657e45bd20453e6fa3a304e11592bc48c1faaa4f285
AUX handbrake-9999-fix-missing-x265-link-flag.patch 281 BLAKE2B 623f902bb31586513a51db95a63841e6234d4841d6332d2be9a6a0d7fd07f3e9cc694eb8945bebf718e10538fa390bbaa9dcbea81ba5324cbf20bd64bc582fdb SHA512 30d457258dd287cae3df66e7899b66480be2212a3969fe3a4e4f99ed383740e8f597fa7cf869922f29f501f100313b7efd78ebe09e2949ed4c235e2df22d22e5
AUX handbrake-9999-remove-dvdnav-dup.patch 809 BLAKE2B 16cde838dcf59753e5438df0d2c2b81f45667058bd0687a7368c528f61bd2a2fedc4462894daad58c3acb5c51bdd53df3b30e28adba93a0fb2838416e4226217 SHA512 e2005155adf29e8253f4313d209b2ccc642fb1d7f63256d3bdf675ddd0e6b0e15bc6bffd98e19aa7dab3907e161e29c5268dc5656590ce9254b12a91ac3ff6b0
AUX handbrake-9999-remove-faac-dependency.patch 3697 BLAKE2B b0f7d0a1c4d464d3287ab233b756f5036d6ffa7e9e59a2f98a8ffb2ae59e46d25e56edb3e5bf9c04a16330f3dc50f4c2426f252b35834b7c9c9e6b4904244368 SHA512 9d070e50a9b7d4b8ac25b7d56bd341aca6dc979ba506c84f4b95109909f70020723915cd120bed24e84a8fc242ee3c3a5775f43a78b7995e53cd499444c9f6dc
@@ -7,6 +8,6 @@ DIST handbrake-1.0.7.tar.bz2 12650549 BLAKE2B 54fa6f4ee053de3ce1840695e66b0fef5a
DIST handbrake-1.1.0.tar.bz2 15262590 BLAKE2B b2f892c57cd562124460ac2846949bd0ce05eff0b87fbd733d7102eeda9455f57997fb0bbd72d991d0f2d8ab3f02e6f82d88a0449158c3a947595f50198eb4bd SHA512 48cbbc57e93e74a8aa3d224311f5d97905061e103c3ecb07aa5e09d8f401687679cac0e8952e146fea0fad5d00e6c26fe90159c11e87b8b413469abbe900edc3
EBUILD handbrake-0.10.5-r2.ebuild 3479 BLAKE2B d035befa6a812aab6a6f4f333bf66637009d228cf54ddc22dc3ec8d95ec9b8b5cea6183c8366352dd2c82452303126d4dfe9a449848d2cccb844486cbda36f70 SHA512 1f5bf9e88bbed89473edcf81013eee4b6ef223ea4fe9fc43ca46aa0b1ce657a122f2f6a020b46d354d36fb4c6044911c36c3c37793f5d2c6feffe89275d3ce52
EBUILD handbrake-1.0.7.ebuild 3524 BLAKE2B 26efd30bd6f2e359fb5059aa2713645b7b7a3a1ae929b5492fb4589d2b76f454653994d88d8bbb875212080cc75933bf1cb8a90b1443022de0e7e2a7c0476786 SHA512 b519a8842dbd5a1420e1b3bd4256b2edbf5b1163c0a2eac90a6386798d86af63cdf18aa519f4244b51042a38a14a10cfae6fbf3211dbd9e1c981f730011dfb99
-EBUILD handbrake-1.1.0.ebuild 3530 BLAKE2B e7661612fab7f3f3873f815bf62d73e22152b05732d151f384f263515f499ae512386d666fba56b9caf75c88542e16b57cdafd2f70b55b4215d4aaa7257e4da3 SHA512 a9cf9b909ca2d52b745ebf00a858625c8da53df868197a5ba0327bbe851dbb9d22d6e75c0366474e8020407d6b2542137ddb94d87ad927034759cb92aa130db0
+EBUILD handbrake-1.1.0.ebuild 3597 BLAKE2B bcaa5f077f58ed23a8cd32a869c9eab0e0411a743794363322065e7fd8e048e3a7a46824ef8ab7e077b2b4fc4778c46ea73f3a7796625e593e54629fcbc756f8 SHA512 bfd15f0a8691d9b33089353dd8f500b8ad2155ef3d423d96247f20e1da2fdf8c908c37b75eb7ebfca1f9a0ab52255840902489d86b802cf3e7f073544e93771b
EBUILD handbrake-9999.ebuild 3524 BLAKE2B 26efd30bd6f2e359fb5059aa2713645b7b7a3a1ae929b5492fb4589d2b76f454653994d88d8bbb875212080cc75933bf1cb8a90b1443022de0e7e2a7c0476786 SHA512 b519a8842dbd5a1420e1b3bd4256b2edbf5b1163c0a2eac90a6386798d86af63cdf18aa519f4244b51042a38a14a10cfae6fbf3211dbd9e1c981f730011dfb99
MISC metadata.xml 826 BLAKE2B 3cbdae05b5011afa3ef7dd76f7979756e0385584511b9eecdac3cc9a031ed31cc64b225214acf6e8f4691455ac31c4a8f9fa8612884705c3da23ab4bbae32e7b SHA512 f6344c1c82a507438d41d38020cd3ca33ba056d156d0fcdc72b6c4def5adee1260bb1f89ad8aec544f22e58738c2be22da210bfad7b2ed6c95f201cdc619a0d6
diff --git a/media-video/handbrake/files/handbrake-1.1.0-nolibav.patch b/media-video/handbrake/files/handbrake-1.1.0-nolibav.patch
new file mode 100644
index 000000000000..bb7e17bdde5b
--- /dev/null
+++ b/media-video/handbrake/files/handbrake-1.1.0-nolibav.patch
@@ -0,0 +1,235 @@
+From 9e1f245708a157231c427c0ef9b91729d59a30e1 Mon Sep 17 00:00:00 2001
+From: John Stebbins <jstebbins.hb@gmail.com>
+Date: Tue, 28 Nov 2017 08:22:54 -0800
+Subject: [PATCH] add sdtp (sample dependency) box to mp4 (#1006)
+
+* add sdtp (sample dependency) box to mp4
+
+The AppleTV 4K requires this box in order to play 2160p60 video.
+---
+ contrib/ffmpeg/A21-mp4-sdtp.patch | 126 ++++++++++++++++++++++++++++++++++++++
+ libhb/encavcodec.c | 8 ++-
+ libhb/encx264.c | 7 +--
+ libhb/encx265.c | 3 +
+ libhb/muxavformat.c | 4 ++
+ 5 files changed, 140 insertions(+), 8 deletions(-)
+ create mode 100644 contrib/ffmpeg/A21-mp4-sdtp.patch
+
+diff --git a/contrib/ffmpeg/A21-mp4-sdtp.patch b/contrib/ffmpeg/A21-mp4-sdtp.patch
+new file mode 100644
+index 000000000..5d2221c47
+--- /dev/null
++++ b/contrib/ffmpeg/A21-mp4-sdtp.patch
+@@ -0,0 +1,126 @@
++From c2204c579c8411771b53a4bc66324c7c5d07698a Mon Sep 17 00:00:00 2001
++From: John Stebbins <stebbins@jetheaddev.com>
++Date: Thu, 16 Nov 2017 14:40:12 -0800
++Subject: [PATCH] movenc: add sdtp (sample dependency) box to mp4
++
++The AppleTV 4K requires this box in order to play 2160p60 video.
++---
++ libavcodec/avcodec.h | 9 +++++++--
++ libavformat/movenc.c | 34 +++++++++++++++++++++++++++++++++-
++ libavformat/movenc.h | 6 ++++++
++ 3 files changed, 46 insertions(+), 3 deletions(-)
++
++diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
++index 5624835023..48e9d23679 100644
++--- a/libavcodec/avcodec.h
+++++ b/libavcodec/avcodec.h
++@@ -1161,8 +1161,13 @@ typedef struct AVPacket {
++ int64_t convergence_duration;
++ #endif
++ } AVPacket;
++-#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe
++-#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted
+++#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe
+++#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted
+++/**
+++ * Flag is used to indicate packets that contain frames that can
+++ * be discarded by the decoder. I.e. Non-reference frames.
+++ */
+++#define AV_PKT_FLAG_DISPOSABLE 0x0004
++
++ enum AVSideDataParamChangeFlags {
++ AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001,
++diff --git a/libavformat/movenc.c b/libavformat/movenc.c
++index a546fdfead..d263f444f4 100644
++--- a/libavformat/movenc.c
+++++ b/libavformat/movenc.c
++@@ -227,6 +227,30 @@ static int mov_write_stss_tag(AVIOContext *pb, MOVTrack *track, uint32_t flag)
++ return update_size(pb, pos);
++ }
++
+++/* Sample dependency atom */
+++static int mov_write_sdtp_tag(AVIOContext *pb, MOVTrack *track)
+++{
+++ int i;
+++ uint8_t leading, dependent, reference, redundancy;
+++ int64_t pos = avio_tell(pb);
+++ avio_wb32(pb, 0); // size
+++ ffio_wfourcc(pb, "sdtp");
+++ avio_wb32(pb, 0); // version & flags
+++ for (i = 0; i < track->entry; i++) {
+++ dependent = MOV_SAMPLE_DEPENDENCY_YES;
+++ leading = reference = redundancy = MOV_SAMPLE_DEPENDENCY_UNKNOWN;
+++ if (track->cluster[i].flags & MOV_DISPOSABLE_SAMPLE) {
+++ reference = MOV_SAMPLE_DEPENDENCY_NO;
+++ }
+++ if (track->cluster[i].flags & MOV_SYNC_SAMPLE) {
+++ dependent = MOV_SAMPLE_DEPENDENCY_NO;
+++ }
+++ avio_w8(pb, (leading << 6) | (dependent << 4) |
+++ (reference << 2) | redundancy);
+++ }
+++ return update_size(pb, pos);
+++}
+++
++ static int mov_write_amr_tag(AVIOContext *pb, MOVTrack *track)
++ {
++ avio_wb32(pb, 0x11); /* size */
++@@ -1211,8 +1235,12 @@ static int mov_write_stbl_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra
++ mov_write_stts_tag(pb, track);
++ if ((track->par->codec_type == AVMEDIA_TYPE_VIDEO ||
++ track->par->codec_tag == MKTAG('r','t','p',' ')) &&
++- track->has_keyframes && track->has_keyframes < track->entry)
+++ track->has_keyframes && track->has_keyframes < track->entry) {
++ mov_write_stss_tag(pb, track, MOV_SYNC_SAMPLE);
+++ }
+++ if (track->par->codec_type == AVMEDIA_TYPE_VIDEO && track->has_disposable) {
+++ mov_write_sdtp_tag(pb, track);
+++ }
++ if (track->mode == MODE_MOV && track->flags & MOV_TRACK_STPS)
++ mov_write_stss_tag(pb, track, MOV_PARTIAL_SYNC_SAMPLE);
++ if (track->par->codec_type == AVMEDIA_TYPE_VIDEO &&
++@@ -3647,6 +3675,10 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt)
++ if (trk->cluster[trk->entry].flags & MOV_SYNC_SAMPLE)
++ trk->has_keyframes++;
++ }
+++ if (pkt->flags & AV_PKT_FLAG_DISPOSABLE) {
+++ trk->cluster[trk->entry].flags |= MOV_DISPOSABLE_SAMPLE;
+++ trk->has_disposable++;
+++ }
++ trk->entry++;
++ trk->sample_count += samples_in_chunk;
++ mov->mdat_size += size;
++diff --git a/libavformat/movenc.h b/libavformat/movenc.h
++index 008f4671c6..f4eb4e8078 100644
++--- a/libavformat/movenc.h
+++++ b/libavformat/movenc.h
++@@ -51,6 +51,7 @@ typedef struct MOVIentry {
++ int cts;
++ #define MOV_SYNC_SAMPLE 0x0001
++ #define MOV_PARTIAL_SYNC_SAMPLE 0x0002
+++#define MOV_DISPOSABLE_SAMPLE 0x0004
++ uint32_t flags;
++ } MOVIentry;
++
++@@ -85,6 +86,7 @@ typedef struct MOVTrack {
++ long sample_count;
++ long sample_size;
++ int has_keyframes;
+++ int has_disposable;
++ #define MOV_TRACK_CTTS 0x0001
++ #define MOV_TRACK_STPS 0x0002
++ #define MOV_TRACK_ENABLED 0x0004
++@@ -180,6 +182,10 @@ typedef struct MOVMuxContext {
++ int missing_duration_warned;
++ } MOVMuxContext;
++
+++#define MOV_SAMPLE_DEPENDENCY_UNKNOWN 0x0
+++#define MOV_SAMPLE_DEPENDENCY_YES 0x1
+++#define MOV_SAMPLE_DEPENDENCY_NO 0x2
+++
++ #define FF_MOV_FLAG_RTP_HINT (1 << 0)
++ #define FF_MOV_FLAG_FRAGMENT (1 << 1)
++ #define FF_MOV_FLAG_EMPTY_MOOV (1 << 2)
++--
++2.13.6
++
+diff --git a/libhb/encavcodec.c b/libhb/encavcodec.c
+index 59d491148..9960a21b4 100644
+--- a/libhb/encavcodec.c
++++ b/libhb/encavcodec.c
+@@ -532,12 +532,14 @@ static void get_packets( hb_work_object_t * w, hb_buffer_list_t * list )
+ out->s.duration = get_frame_duration(pv, frameno);
+ out->s.stop = out->s.stop + out->s.duration;
+ // libav 12 deprecated context->coded_frame, so we can't determine
+- // the exact frame type any more. Luckily for us, we really don't
+- // require it.
++ // the exact frame type any more. So until I can completely
++ // wire up ffmpeg with AV_PKT_DISPOSABLE_FRAME, all frames
++ // must be considered to potentially be reference frames
++ out->s.flags = HB_FLAG_FRAMETYPE_REF;
+ out->s.frametype = 0;
+ if (pkt.flags & AV_PKT_FLAG_KEY)
+ {
+- out->s.flags = HB_FLAG_FRAMETYPE_REF | HB_FLAG_FRAMETYPE_KEY;
++ out->s.flags |= HB_FLAG_FRAMETYPE_KEY;
+ hb_chapter_dequeue(pv->chapter_queue, out);
+ }
+ out = process_delay_list(pv, out);
+diff --git a/libhb/encx264.c b/libhb/encx264.c
+index ce7879ec7..26645213a 100644
+--- a/libhb/encx264.c
++++ b/libhb/encx264.c
+@@ -701,6 +701,7 @@ static hb_buffer_t *nal_encode( hb_work_object_t *w, x264_picture_t *pic_out,
+ frames we only get the duration of the first which will
+ eventually screw up the muxer & decoder. */
+ int i;
++ buf->s.flags &= ~HB_FLAG_FRAMETYPE_REF;
+ for( i = 0; i < i_nal; i++ )
+ {
+ int size = nal[i].i_payload;
+@@ -737,11 +738,7 @@ static hb_buffer_t *nal_encode( hb_work_object_t *w, x264_picture_t *pic_out,
+ * Also, since libx264 doesn't tell us when B-frames are
+ * themselves reference frames, figure it out on our own.
+ */
+- if (nal[i].i_ref_idc == NAL_PRIORITY_DISPOSABLE)
+- {
+- buf->s.flags &= ~HB_FLAG_FRAMETYPE_REF;
+- }
+- else
++ if (nal[i].i_ref_idc != NAL_PRIORITY_DISPOSABLE)
+ {
+ if (buf->s.frametype == HB_FRAME_B)
+ {
+diff --git a/libhb/encx265.c b/libhb/encx265.c
+index ec7b7d574..242dc6f1f 100644
+--- a/libhb/encx265.c
++++ b/libhb/encx265.c
+@@ -425,16 +425,19 @@ static hb_buffer_t* nal_encode(hb_work_object_t *w,
+ buf->s.frametype = HB_FRAME_IDR;
+ break;
+ case X265_TYPE_P:
++ buf->s.flags |= HB_FLAG_FRAMETYPE_REF;
+ buf->s.frametype = HB_FRAME_P;
+ break;
+ case X265_TYPE_B:
+ buf->s.frametype = HB_FRAME_B;
+ break;
+ case X265_TYPE_BREF:
++ buf->s.flags |= HB_FLAG_FRAMETYPE_REF;
+ buf->s.frametype = HB_FRAME_BREF;
+ break;
+ case X265_TYPE_I:
+ default:
++ buf->s.flags |= HB_FLAG_FRAMETYPE_REF;
+ buf->s.frametype = HB_FRAME_I;
+ break;
+ }
+diff --git a/libhb/muxavformat.c b/libhb/muxavformat.c
+index f85336dfe..62a270d5b 100644
+--- a/libhb/muxavformat.c
++++ b/libhb/muxavformat.c
+@@ -1197,6 +1197,10 @@ static int avformatMux(hb_mux_object_t *m, hb_mux_data_t *track, hb_buffer_t *bu
+ {
+ pkt.flags |= AV_PKT_FLAG_KEY;
+ }
++ if (!(buf->s.flags & HB_FLAG_FRAMETYPE_REF))
++ {
++ pkt.flags |= AV_PKT_FLAG_DISPOSABLE;
++ }
+ }
+ else if (buf->s.frametype & HB_FRAME_MASK_KEY)
+ {
diff --git a/media-video/handbrake/handbrake-1.1.0.ebuild b/media-video/handbrake/handbrake-1.1.0.ebuild
index 4ea9a4d91e3e..e5423a884920 100644
--- a/media-video/handbrake/handbrake-1.1.0.ebuild
+++ b/media-video/handbrake/handbrake-1.1.0.ebuild
@@ -5,7 +5,7 @@ EAPI=6
PYTHON_COMPAT=( python2_7 )
-inherit autotools eutils gnome2-utils python-any-r1
+inherit autotools eutils gnome2-utils python-any-r1 xdg-utils
if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="https://github.com/HandBrake/HandBrake.git"
@@ -99,7 +99,7 @@ src_prepare() {
default
# Get rid of libav specific code when using ffmpeg
- use libav || eapply -R "${FILESDIR}/${PN}-0.10.3-nolibav.patch"
+ use libav || eapply -R "${FILESDIR}/${PN}-1.1.0-nolibav.patch"
cd "${S}/gtk"
# Don't run autogen.sh.
@@ -145,6 +145,7 @@ pkg_postinst() {
fi
gnome2_icon_cache_update
+ xdg_desktop_database_update
}
pkg_preinst() {
@@ -153,4 +154,5 @@ pkg_preinst() {
pkg_postrm() {
gnome2_icon_cache_update
+ xdg_desktop_database_update
}