The place to discuss linux version of MakeMKV
-
hobbes1069
- Posts: 3
- Joined: Sat May 12, 2018 12:18 pm
#1
Post
by hobbes1069 » Sat May 12, 2018 12:20 pm
Had it building fine on Fedora 27 w/ GCC 7 but now I get this:
Code: Select all
libffabi/src/ffabi.c: In function 'ffm_audio_encode_init':
libffabi/src/ffabi.c:520:30: error: 'CODEC_FLAG_GLOBAL_HEADER' undeclared (first use in this function); did you mean 'AV_CODEC_FLAG_GLOBAL_HEADER'?
ctx->avctx->flags |= CODEC_FLAG_GLOBAL_HEADER;
^~~~~~~~~~~~~~~~~~~~~~~~
AV_CODEC_FLAG_GLOBAL_HEADER
libffabi/src/ffabi.c:520:30: note: each undeclared identifier is reported only once for each function it appears in
libffabi/src/ffabi.c: In function 'ffm_audio_encode_get_info':
libffabi/src/ffabi.c:721:28: error: 'CODEC_FLAG_GLOBAL_HEADER' undeclared (first use in this function); did you mean 'AV_CODEC_FLAG_GLOBAL_HEADER'?
if ((ctx->avctx->flags&CODEC_FLAG_GLOBAL_HEADER)!=0)
^~~~~~~~~~~~~~~~~~~~~~~~
AV_CODEC_FLAG_GLOBAL_HEADER
Thanks,
Richard
-
chowbok
- Posts: 18
- Joined: Sun May 13, 2018 2:02 pm
#2
Post
by chowbok » Sun May 13, 2018 2:14 pm
The problem isn't GCC, it's that libavformat just updated and a variable name changed. Here's a diff:
Code: Select all
*** makemkv-oss-1.12.2/libffabi/src/ffabi.c.ORIG 2018-04-27 20:53:47.000000000 -0500
--- makemkv-oss-1.12.2/libffabi/src/ffabi.c 2018-05-13 09:11:26.215809333 -0500
***************
*** 517,523 ****
info->profile : FF_PROFILE_UNKNOWN;
if ((CodecFlags&FFM_CODEC_FLAG_GLOBAL_HEADER)!=0)
! ctx->avctx->flags |= CODEC_FLAG_GLOBAL_HEADER;
if (argp) {
for (i=0;argp[i];i+=2) {
--- 517,523 ----
info->profile : FF_PROFILE_UNKNOWN;
if ((CodecFlags&FFM_CODEC_FLAG_GLOBAL_HEADER)!=0)
! ctx->avctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
if (argp) {
for (i=0;argp[i];i+=2) {
***************
*** 718,724 ****
info->delay = (int32_t)ctx->avctx->delay;
info->flags = 0;
! if ((ctx->avctx->flags&CODEC_FLAG_GLOBAL_HEADER)!=0)
info->flags |= FFM_CODEC_FLAG_GLOBAL_HEADER;
return 0;
--- 718,724 ----
info->delay = (int32_t)ctx->avctx->delay;
info->flags = 0;
! if ((ctx->avctx->flags&AV_CODEC_FLAG_GLOBAL_HEADER)!=0)
info->flags |= FFM_CODEC_FLAG_GLOBAL_HEADER;
return 0;
Apply that and it should compile okay.
-
Zontar
- Posts: 12
- Joined: Mon Nov 03, 2014 7:28 pm
#3
Post
by Zontar » Mon May 14, 2018 1:48 am
The patch allows it to compile, but I get an error "Application failed to initialize" when I try and launch it.
-
Zontar
- Posts: 12
- Joined: Mon Nov 03, 2014 7:28 pm
#4
Post
by Zontar » Tue May 15, 2018 4:28 am
I reinstalled Fedora 28 from scratch. That helped a lot. The series of upgrades left a bunch of cruft that made compiles not work correctly. (Like ldconfig database containing old information that no longer existed.)
-
wdomburg
- Posts: 2
- Joined: Sat May 19, 2018 3:21 am
#5
Post
by wdomburg » Sat May 19, 2018 3:32 am
This looks to be due to an upgrade to ffmpeg 4.0, which versions it's libraries as .58. Fedora 27 was on ffmpeg 3.3, which is .57. Unfortunately there is only a compat library for ffmpeg 2.8, which is .56.*
Not sure there is a simple workaround here until a new makemkv-bin with makemkvconv linked against the new library is released or a compat-ffmpeg33 package is added to the repo. I may just build my own if I have to.
* I'm using the rpmfusion repo. Not sure if there are any alternate repos worth using these days.
-
papastuck
- Posts: 1
- Joined: Sat Jun 16, 2018 8:40 pm
#6
Post
by papastuck » Sat Jun 16, 2018 8:45 pm
The diff from chowbok worked for me on Debian Unstable.
-
alexb0000
- Posts: 1
- Joined: Tue Jun 26, 2018 6:02 am
#7
Post
by alexb0000 » Tue Jun 26, 2018 6:05 am
chowbok wrote:The problem isn't GCC, it's that libavformat just updated and a variable name changed. Here's a diff:
Code: Select all
*** makemkv-oss-1.12.2/libffabi/src/ffabi.c.ORIG 2018-04-27 20:53:47.000000000 -0500
--- makemkv-oss-1.12.2/libffabi/src/ffabi.c 2018-05-13 09:11:26.215809333 -0500
***************
*** 517,523 ****
info->profile : FF_PROFILE_UNKNOWN;
if ((CodecFlags&FFM_CODEC_FLAG_GLOBAL_HEADER)!=0)
! ctx->avctx->flags |= CODEC_FLAG_GLOBAL_HEADER;
if (argp) {
for (i=0;argp[i];i+=2) {
--- 517,523 ----
info->profile : FF_PROFILE_UNKNOWN;
if ((CodecFlags&FFM_CODEC_FLAG_GLOBAL_HEADER)!=0)
! ctx->avctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
if (argp) {
for (i=0;argp[i];i+=2) {
***************
*** 718,724 ****
info->delay = (int32_t)ctx->avctx->delay;
info->flags = 0;
! if ((ctx->avctx->flags&CODEC_FLAG_GLOBAL_HEADER)!=0)
info->flags |= FFM_CODEC_FLAG_GLOBAL_HEADER;
return 0;
--- 718,724 ----
info->delay = (int32_t)ctx->avctx->delay;
info->flags = 0;
! if ((ctx->avctx->flags&AV_CODEC_FLAG_GLOBAL_HEADER)!=0)
info->flags |= FFM_CODEC_FLAG_GLOBAL_HEADER;
return 0;
Apply that and it should compile okay.
This worked for me on Fedora 28, thanks.