1. anatoly techtonik
  2. shiboken-AVbin


shiboken-AVbin /

Filename Size Date modified Message
10 B
2.1 KB
74 B
199 B
The Goal: Create Pythonic binding for audio/video API of AVbin library
          documented at http://avbin.github.com/docs/

01: Get AVbin and compile it

lib/AVbin - will contain AVbin source

$ mkdir lib
$ cd lib
$ git clone git://github.com/AVbin/AVbin.git

$ cd AVbin
$ ./build.sh linux-x86-32
# refer to README if your platform is different

02. Locate AVbin headers with API description and libraries with binary code

From README and filesystem inspection, the location is the following:

lib/AVbin/dist/linux-x86-32/libavbin.so.9  - compiled binary library
lib/AVbin/include/avbin.h   - header with API that we need to port to Python

03. Setup shiboken

You can install `shiboken` package on Ubuntu from PySide PPA.  There is always
the latest and greatest version.  For other systems it's probably easier to
compile it from source using https://github.com/PySide/BuildScripts

(sorry, can't say anything for Windows/Mac OS user right now)

$ shiboken --version
shiboken v1.0.10
Copyright (C) 2009-2011 Nokia Corporation and/or its subsidiary(-ies)

04. Inspect what shiboken need to generate the bindings

$ shiboken --help
  generator [options] header-file typesystem-file

Seems like `shiboken` thinks that it is named a `generator`. Anyway, it
requires header-file and typesystem-file to generate the bindings.

05. Create API mapping (mysteriously called 'typesystem')

Basically, you need an XML file that defines how your C++ functions calls and
types are converted to Python. This file is called 'typesystem file'.

$ cat typesystem.xml
<?xml version="1.0"?>

<!-- the name of the module as it will be imported from Python-->
<typesystem package='AVbin'>

$ shiboken lib/AVbin/include/avbin.h typesystem.xml 
Resolving typedefs...                        [OK]
Detecting inconsistencies in typesystem...   [OK]

	Cyclic dependency found! Graph can be found at /tmp/qt_temp.T13977
	No C++ classes found!

Done, 2 warnings (0 known issues)

It is not clear if C++ classes are not found in avbin.h or just don't defined,
so let's dig further.