Hi Michael,

Maybe it's not because of this, but did you try raising the data segment
size limit for your user? ulimit -a should help.

Best,
Andrei Vrincianu


On Tue, Mar 25, 2014 at 3:35 PM, Michael Lackner <
michael.lack...@unileoben.ac.at> wrote:

> Greetings!
>
> This is my first question here, please be gentle! ;)
>
> So, as the subject line says, I am currently attempting to compile,
> install and run
> either the libav or ffmpeg media codec suite and then x264 on OpenBSD 5.4,
> where x264
> is then linked against either libav or ffmpeg. All of this on the
> x86_64/AMD64
> architecture. x264 itself is a H.264/AVC video trans-/encoder.
>
> So far so good.
>
> The first big problem was the lack of a new enough GNU assembler
> ("as"/"gas"), as x264
> features SSSE3 inline assembly, that gas from binutils 2.15 cannot build.
> So I went ahead
> and compiled myself my own gas from binutils 2.24, which supposedly worked
> fine.
>
> But the real bummer is what follows, and this error even shows up, if I
> disable all
> assembly optimizations in libav/ffmpeg as well as x264 (then it even
> compiles on a stock
> 5.4 without my new gas 2.24, but won't run).
>
> So, I start my video transcoding, and I get this (leaving out the [info]
> lines):
>
>
> "x264 [error]: malloc of size 8856384 failed
> x264 [error]: x264_encoder_encode failed
> aborted at input frame 13, output frame 0"
>
>
> I suspect x264 and not the libav/ffmpeg it was linked against, because 13
> input frames
> were seemingly decoded by libav/ffmpeg, but not a single output frame was
> encoded by x264.
>
> Using older versions of x264/libav (up to 1 year old I tried) results in
> the same problem,
> only the malloc() size number is different. Like "31736" instead of the
> "8856384" above.
>
> Just in case you'd wanna know, this is a sample command line like the one
> I called:
>
>
> "x264 --preset veryslow --tune film --b-adapt 2 --b-pyramid normal -r 3 -f
> -2:0 --bitrate 10000 --aq-mode 1 -p 1 --slow-firstpass --stats
> framestats.stats -t 2 --no-fast-pskip --cqm flat input.264 -o
> pass1output.264"
>
>
> I tried compiling this with and without assembly, and with both GCC 4.2.1
> as well as GCC
> 4.8.1. The error is always the same.
>
> To learn more, I thought I'd take a look at the x264 port of OpenBSD 5.4,
> but found this
> in its Makefile, disabling all linking against both libav and ffmpeg as
> well as disabling
> all assembly (likely due to the binutils/gas issue):
>
>
> CONFIGURE_ARGS+=--disable-asm \
> --disable-ffms \
> --disable-gpac \
> --disable-lavf \
> --disable-swscale \
> --enable-static \
> --prefix=${PREFIX}
>
>
> The ffms thing disables linking against ffmpeg, the lavf+swscale stuff
> disables linking
> against libav. asm is self-explanatory.
>
> So the x264 port (as well as the precompiled package) are completely
> crippled. Not only is
> the assembly missing, costing tons of performance, but you can't even feed
> anything but
> raw video to it! What I need is the capability to feed stuff like
> H.264/AVC, MPEG2, VC-1
> videostreams etc. to x264, so I need libav or ffmpeg.
>
> Now, the main issue is the malloc() failure here. My home-brewn gas
> shouldn't be the
> problem, because it happens even when compiling from pure C/C++.
>
> My assumption would be, that maybe OpenBSDs libc implementation of
> malloc() behaves in
> ways that x264 can't handle properly?! I've tried looking at the x264
> source coude, but
> this stuff is just way beyond me, I don't understand any of the code
> really.
>
> I have so far managed to do this on NetBSD, FreeBSD/PC-BSD, MidnightBSD,
> Dragonfly BSD,
> OpenSolaris, Linux, Windows (CygWin and MinGW/MSYS), MacOS X and even
> Haiku OS with
> varying degrees of modifications to the build scripts and in one case a
> header file.
>
> It drives me crazy I can't figure this out on OpenBSD! ;) I've been trying
> this for
> months already!
>
> Does anybody have any idea on how I could proceed? I am no developer.. So
> yeah. If anybody
> would want to take a look at the actual source code, the latest x264
> version is available
> here:
>
>
> ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
>
>
> libav and ffmpeg can be obtained here (I prefer libav, but that's more a
> taste thing),
> one of them needs to be built first, as x264 needs to be linked against
> either of the two:
>
>
> http://git.libav.org/?p=libav.git;a=snapshot;h=HEAD;sf=tgz
> http://www.ffmpeg.org/releases/ffmpeg-2.2.tar.bz2
>
>
> The x264 trouble seems to originate in one of either "x264.c",
> "encoder/encoder.c" or
> maybe "common/common.c".
>
> Sorry for this very lengthy post, but I've tried and tried and tried and
> failed every
> time. When I finally got past the gas problem, I was sooo happy to get it
> built, only to
> hit this issue at runtime.
>
> I need help here, so if anyone has any idea on how to solve this, it'd be
> greatly
> appreciated!
>
> Not sure if it would make sense to contact the x264 port maintainer, as
> that person seems
> to have decided not to try and get it to work "properly" or maybe he hit
> the same brick
> wall I did and couldn't get past it? Is the issue maybe really not
> solvable at all?
>
> If so, I'd like to know and understand why at least.
>
> Well, thanks a lot for any help you might be able to provide, and for
> reading my wall of
> text!
>
> --
> Michael Lackner
> Lehrstuhl für Informationstechnologie (CiT)
> Montanuniversität Leoben
> Tel.: +43 (0)3842/402-1505 | Mail: michael.lack...@unileoben.ac.at
> Fax.: +43 (0)3842/402-1502 | Web: http://institute.unileoben.ac.
> at/infotech

Reply via email to