Armadilloフォーラム

ATDE5でGStreamerをコンパイルしたい

tsuchiya

2014年6月3日 10時14分

土屋です。
いつもお世話になっております。

別件で質問させていただいている画面ローテーションに関連しているのですが、内容的にずれるかなと思い別の質問にさせていただきます。
画面ローテーションするのにドライバで回転できれば一番なのですが、ドライバのソースを見てても転送箇所が分からなかったので、暫定で GStreamer のvideoflipを実験しました。
結果はfbdevsink に接続できるものなら OK なのですが acmfbdevsink だとエラーになってしまいました。

ソースのacmfbdevsink.cを見たところ gst_acm_fbdevsink_render() で1122行目から for()分でデータ転送しているところと思しき所があったので、ここを改造して実験しようと思いました。

しかしコンパイル方法が分からず頓挫しております。
やったことは下記です。すべて atde5上です。

1. 御社サイトから gst-plugins-at-acm_1.0.0.tar.gz を wget で取得
2. 適当な場所に展開
3. ./autogen.sh を実行
  下記エラーになります。
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
src/Makefile.am:6: Libtool library used but `LIBTOOL' is undefined
src/Makefile.am:6: The usual way to define `LIBTOOL' is to add `LT_INIT'
src/Makefile.am:6: to `configure.ac' and run `aclocal' and `autoconf' again.
src/Makefile.am:6: If `LT_INIT' is in `configure.ac', make sure
src/Makefile.am:6: its definition is in aclocal's search path.
src/Makefile.am:172: `CPPFLAGS' is a user variable, you should not override it;
src/Makefile.am:172: use `AM_CPPFLAGS' instead.
tests/Makefile.am:8: compiling `acmaacdec.c' with per-target flags requires `AM_PROG_CC_C_O' in `configure.ac'
autoreconf: automake failed with exit status: 1
autogen.sh failed

4. ここで試しに ./configure を実行すると下記エラーでした。
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
./configure: line 3322: syntax error near unexpected token `2.2.6'
./configure: line 3322: `LT_PREREQ(2.2.6)'

情報等ご教授お願いいたします。

コメント

竹之下です。

普段はArmadillo上でホストコンパイルしていますので、クロスコンパイル対応が今一つなのですが、
下記手順でビルドできます。

$ sudo apt-get install libtool
$ wget http://download.atmark-techno.com/armadillo-840/cross-dev/source/gst-plugins-at-acm_1.0.0.tar.gz
$ tar xzvf gst-plugins-at-acm_1.0.0.tar.gz
$ cd gst-plugins-at-acm_1.0.0/
$ autoreconf -vfi
$ PKG_CONFIG_LIBDIR=/usr/arm-linux-gnueabihf/lib/pkgconfig ./configure --build=$(./config.guess) --host=arm-linux-gnueabihf

src/Makefile 内の GST_CFLAGS に -I/usr/arm-linux-gnueabihf/include/gstreamer-1.0 を追記

$ make

tests の ビルドで失敗しますが、 src/.libs/ 以下に .so ファイルが作成されています。

何とも中途半端ですが、ご参考まで。

竹之下様

お世話になっております。土屋です。

おかげさまで、無事コンパイルでき180度回転したのですが・・・
DMA無しでは遅すぎて Gstreamer から遅すぎと怒られてしまいました。

WARNING: from element /GstPipeline:pipeline0/GstAcmFBDevSink:acmfbdevsink0: A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2683): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstAcmFBDevSink:acmfbdevsink0:
There may be a timestamping problem, or this computer is too slow.

memcpy などの最適化ってすごいんですね。
とりあえずacmfbdevsinkに関してはあきらめます。