From: "Alexis Ballier" <aballier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: media-video/bino/files/, media-video/bino/
Date: Mon, 5 Dec 2016 12:11:30 +0000 (UTC) [thread overview]
Message-ID: <1480939882.a3b9e2c859ba23d5f868fd6b4d6ac89eeb47c04c.aballier@gentoo> (raw)
commit: a3b9e2c859ba23d5f868fd6b4d6ac89eeb47c04c
Author: Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 5 12:11:01 2016 +0000
Commit: Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Mon Dec 5 12:11:22 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a3b9e2c8
media-video/bino: apply debian patch to build with ffmpeg 3, bug #587860
Package-Manager: portage-2.3.2
media-video/bino/bino-1.6.1-r2.ebuild | 1 +
media-video/bino/files/ffmpeg_2.9.patch | 133 ++++++++++++++++++++++++++++++++
2 files changed, 134 insertions(+)
diff --git a/media-video/bino/bino-1.6.1-r2.ebuild b/media-video/bino/bino-1.6.1-r2.ebuild
index 708c92d..4442bd2 100644
--- a/media-video/bino/bino-1.6.1-r2.ebuild
+++ b/media-video/bino/bino-1.6.1-r2.ebuild
@@ -46,6 +46,7 @@ DOCS=( AUTHORS ChangeLog NEWS README README.Linux )
PATCHES=(
"${FILESDIR}/${PN}-1.4.2-lirc-detect.patch" # detect lirc
+ "${FILESDIR}/ffmpeg_2.9.patch" # build with latest ffmpeg, #587860
)
src_configure() {
diff --git a/media-video/bino/files/ffmpeg_2.9.patch b/media-video/bino/files/ffmpeg_2.9.patch
new file mode 100644
index 00000000..c790d6e
--- /dev/null
+++ b/media-video/bino/files/ffmpeg_2.9.patch
@@ -0,0 +1,133 @@
+https://bugs.gentoo.org/show_bug.cgi?id=587860
+https://github.com/schaal/bino/blob/master/debian/patches/ffmpeg_2.9.patch
+
+Description: Replace deprecated FFmpeg API
+Author: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
+Last-Update: <2015-11-02>
+
+--- bino-1.6.0.orig/src/media_object.cpp
++++ bino-1.6.0/src/media_object.cpp
+@@ -427,20 +427,20 @@ void media_object::set_video_frame_templ
+ video_frame_template.value_range = video_frame::u8_full;
+ video_frame_template.chroma_location = video_frame::center;
+ if (!_always_convert_to_bgra32
+- && (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P10))
++ && (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P10))
+ {
+- if (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10)
++ if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10)
+ {
+ video_frame_template.layout = video_frame::yuv444p;
+ }
+- else if (video_codec_ctx->pix_fmt == PIX_FMT_YUV422P
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10)
++ else if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10)
+ {
+ video_frame_template.layout = video_frame::yuv422p;
+ }
+@@ -453,9 +453,9 @@ void media_object::set_video_frame_templ
+ {
+ video_frame_template.color_space = video_frame::yuv709;
+ }
+- if (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P10)
++ if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P10)
+ {
+ video_frame_template.value_range = video_frame::u10_mpeg;
+ if (video_codec_ctx->color_range == AVCOL_RANGE_JPEG)
+@@ -482,15 +482,15 @@ void media_object::set_video_frame_templ
+ }
+ }
+ else if (!_always_convert_to_bgra32
+- && (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ444P
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUVJ422P
+- || video_codec_ctx->pix_fmt == PIX_FMT_YUVJ420P))
++ && (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ444P
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ422P
++ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ420P))
+ {
+- if (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ444P)
++ if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ444P)
+ {
+ video_frame_template.layout = video_frame::yuv444p;
+ }
+- else if (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ422P)
++ else if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ422P)
+ {
+ video_frame_template.layout = video_frame::yuv422p;
+ }
+@@ -898,15 +898,6 @@ void media_object::open(const std::strin
+ // Activate multithreaded decoding. This must be done before opening the codec; see
+ // http://lists.gnu.org/archive/html/bino-list/2011-08/msg00019.html
+ codec_ctx->thread_count = video_decoding_threads();
+- // Set CODEC_FLAG_EMU_EDGE in the same situations in which ffplay sets it.
+- // I don't know what exactly this does, but it is necessary to fix the problem
+- // described in this thread: http://lists.nongnu.org/archive/html/bino-list/2012-02/msg00039.html
+- int lowres = 0;
+-#ifdef FF_API_LOWRES
+- lowres = codec_ctx->lowres;
+-#endif
+- if (lowres || (codec && (codec->capabilities & CODEC_CAP_DR1)))
+- codec_ctx->flags |= CODEC_FLAG_EMU_EDGE;
+ }
+ // Find and open the codec. AV_CODEC_ID_TEXT is a special case: it has no decoder since it is unencoded raw data.
+ if (codec_ctx->codec_id != AV_CODEC_ID_TEXT && (!codec || (e = avcodec_open2(codec_ctx, codec, NULL)) < 0))
+@@ -944,8 +935,8 @@ void media_object::open(const std::strin
+ _ffmpeg->video_frames.push_back(av_frame_alloc());
+ _ffmpeg->video_buffered_frames.push_back(av_frame_alloc());
+ #endif
+- enum PixelFormat frame_fmt = (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32
+- ? PIX_FMT_BGRA : _ffmpeg->video_codec_ctxs[j]->pix_fmt);
++ enum AVPixelFormat frame_fmt = (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32
++ ? AV_PIX_FMT_BGRA : _ffmpeg->video_codec_ctxs[j]->pix_fmt);
+ int frame_bufsize = (avpicture_get_size(frame_fmt,
+ _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height));
+ _ffmpeg->video_buffers.push_back(static_cast<uint8_t *>(av_malloc(frame_bufsize)));
+@@ -958,7 +949,7 @@ void media_object::open(const std::strin
+ if (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32)
+ {
+ // Initialize things needed for software pixel format conversion
+- int sws_bufsize = avpicture_get_size(PIX_FMT_BGRA,
++ int sws_bufsize = avpicture_get_size(AV_PIX_FMT_BGRA,
+ _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
+ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 28, 1)
+ _ffmpeg->video_sws_frames.push_back(avcodec_alloc_frame());
+@@ -971,11 +962,11 @@ void media_object::open(const std::strin
+ throw exc(HERE + ": " + strerror(ENOMEM));
+ }
+ avpicture_fill(reinterpret_cast<AVPicture *>(_ffmpeg->video_sws_frames[j]), _ffmpeg->video_sws_buffers[j],
+- PIX_FMT_BGRA, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
++ AV_PIX_FMT_BGRA, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
+ // Call sws_getCachedContext(NULL, ...) instead of sws_getContext(...) just to avoid a deprecation warning.
+ _ffmpeg->video_sws_ctxs.push_back(sws_getCachedContext(NULL,
+ _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, _ffmpeg->video_codec_ctxs[j]->pix_fmt,
+- _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, PIX_FMT_BGRA,
++ _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, AV_PIX_FMT_BGRA,
+ SWS_POINT, NULL, NULL, NULL));
+ if (!_ffmpeg->video_sws_ctxs[j])
+ {
+@@ -1529,7 +1520,7 @@ read_frame:
+ // We need to buffer the data because FFmpeg will clubber it when decoding the next frame.
+ av_picture_copy(reinterpret_cast<AVPicture *>(_ffmpeg->video_buffered_frames[_video_stream]),
+ reinterpret_cast<AVPicture *>(_ffmpeg->video_frames[_video_stream]),
+- static_cast<enum PixelFormat>(_ffmpeg->video_codec_ctxs[_video_stream]->pix_fmt),
++ static_cast<enum AVPixelFormat>(_ffmpeg->video_codec_ctxs[_video_stream]->pix_fmt),
+ _ffmpeg->video_codec_ctxs[_video_stream]->width,
+ _ffmpeg->video_codec_ctxs[_video_stream]->height);
+ src_frame = _ffmpeg->video_buffered_frames[_video_stream];
next reply other threads:[~2016-12-05 12:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-05 12:11 Alexis Ballier [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-07-25 23:23 [gentoo-commits] repo/gentoo:master commit in: media-video/bino/files/, media-video/bino/ Sam James
2022-09-02 1:07 Sam James
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1480939882.a3b9e2c859ba23d5f868fd6b4d6ac89eeb47c04c.aballier@gentoo \
--to=aballier@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox