-
Notifications
You must be signed in to change notification settings - Fork 15
Bellagio OpenMAX IL
License
felipec/libomxil-bellagio
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Bellagio OpenMAX Integration Layer 1.1.1 project Release 0.9.1 This is an Open Source implementation of the OpenMAX Integration Layer (IL) API ver. 1.1.1, specified by the Khronos group (see http://www.khronos.org/openmax). This package includes the libomxil-bellagio shared library together with the following OpenMAX components (built as separate shared objects and loaded at runtime): CORE FUNCTIONALITIES - An IL core - A component loader for static libraries for Linux - A component loader for Symbian - A framework of components and ports base implementations for Bellagio Hierarchy AUDIO - OMX ALSA sink component - OMX ALSA source component - OMX audio decoder based on FFmpeg libraries that supports the following audio formats: o MP3 o Ogg Vorbis o AAC (only RAW AAC format supported) - OMX audio decoder based on mad library that supports the MP3 audio format - OMX audio decoder based on libvorbis that supports the Ogg Vorbis audio format - OMX audio volume control - OMX audio file reader for FFmpeg components - OMX audio mixer component VIDEO - OMX video decoder decoding input MPEG-4 or H.264 format file (in H.264 format, there is no interlacing support) to produce output .yuv file. - OMX video color converter component converting from decoded output .yuv file to produce .rgb file. - OMX video sink component which uses the frame buffer to display the color converter component output .rgb file. - OMX video capture component which captures video frame using a video camera and stores into a file or display using video sink. - OMX Camera component also captures video having 3 ports. Port 0 is used for preview; Port 1 is used for video and image capture; Port 2 is used for video and image thumbnail. - OMX video encoder encoding input YUV format file or video captured using camera component in MPEG-4 video format to produce output .m4v file. IMAGING - An OpenmAX jpeg encoder and decoder PARSER - OMX 3GP parser component. Parses input file/stream for audio and video output, which is then fed to audio and video decoder component for decoding. CLOCK - OMX Clock component. It take audio(default) as input reference clock and provide media clock to video sink and other component. It support fast forward and rewind. SYMBIAN COMPONENTS - Audio mixer - MMF Output stream audio renderer - Volume control component N.B. The 3GP parser can support MPEG-4,H.264 video and MPEG-4,AAC audio. FFmpeg can't encode (Warning, using MS style audio codec tag, the file may be unplayable!) Vorbis audio for a 3GP container and so also not decodable. Because of this Vorbis decoding support has not been included in the 3GP parser. BUILD ===== autoreconf -i ./configure make make install make check If the pkg-config check fails, verify that the environment variable PKG_CONFIG_PATH is set, and it points to the directory(ies) containing the .pc files describing the package to be verified. Usually it can be set as (for a bash): export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:/usr/lib/pkgconfig/ Before attempting to run any test, the OMX components *must* be registered with the command "omxregister-bellagio". /usr/local/bin/omxregister-bellagio That will create a registry file that will contain all the components installed by default in /usr/local/lib/libomxil-bellagio (read the man page). Note: the default location for the installation is TARGET=/usr/local/lib for the library, and the component will be installed in TARGET/bellagio Now, run the tests. TEST ==== The following simple test applications are provided: test/components/audio/omxaudiodectest test/components/audio_effects/omxvolcontroltest test/components/video/omxvideodectest test/components/video/omxvideocapnplay test/components/video/omxvideoenctest test/components/parser/omxparsertest test/components/audio_effects/omxaudiomixertest AUDIO DECODER , MIXER AND SINK COMPONENT USAGE ---------------------------------------------- Usage: omxaudiodectest [-o outfile] [-stmdgh] filename -o outfile: If this option is specified, the decoded stream is written to outfile This option can't be used with '-t' -s single_ogg: Use the single role ogg decoder instead of the default one. Can't be used with -m or .mp3 file -t: The audio decoder is tunneled with the ALSA sink -m: For mp3 decoding use the mad library. Can't be used with -s or .ogg file -d: If no output is specified, and no playback is specified, this flag activated the print of the stream directly on std out -g: Gain of the audio sink[0...100] -h: Displays this help Usage: omxvolcontroltest [-o outfile] [-g gain] filename -o outfile: If this option is specified, the output stream is written to outfile otherwise redirected to std output -g: Gain of PCM data [0...100] -h: Displays this help Usage: omxaudiomixertest [-o outfile] [-gi gain] -t -r 44100 -n 2 filename1 filename2 -o outfile: If this option is specified, the output stream is written to outfile otherwise redirected to std output; Can't be used with -t. -gi : Gain of stream i[0..3] data [0...100] -t : The audio mixer is tunneled with the ALSA sink; Can't be used with -o -r 44100 : Sample Rate [Default 44100] -n 2 : Number of channel [Default 2] -h : Displays this help VIDEO DECODER, COLOR CONVERTER, SINK AND CAPTURE COMPONENT USAGE ------------------------------------------------------- Usage: omxvideodectest -o outfile [-t] [-c] [-h] [-f input_fmt] [-s] input_filename -o outfile: If this option is specified, the output is written to user specified outfile Else, the output is written in the same directory of input file the file name looks like input_filename_app.yuv/rgb depending on input option If the color conv option (-c) is specified then outfile will be .rgb file Else outfile will be in .yuv format N.B.: This option is not needed if you use the sink component -c: Color conv option - input file is decoded and color converted in outfile(.rgb file) -h: Displays this help -f: input format specification in case of color conversion component usage The available input formats are - - OMX_COLOR_Format24bitRGB888 (default format) - OMX_COLOR_Format24bitBGR888 - OMX_COLOR_Format32bitBGRA8888 - OMX_COLOR_Format32bitARGB8888 - OMX_COLOR_Format16bitARGB1555 - OMX_COLOR_Format16bitRGB565 - OMX_COLOR_Format16bitBGR565 -s: Uses the video sink component to display the output of the color converter (.rgb file) -t: Tunneling option - if this option is selected then by default the color converter and video sink components are selected even if those two options are not specified - the components are tunneled between themselves input_filename : user specified input file name - please specify the full path name Usage: omxvideocapnplay -o outputfile [-t] [-c] [-h] [-f input_fmt] [-s] -o outfile: If this option is specified, the output is written to user specified outfile If the color conv option (-c) is specified then outfile will be .rgb file Else outfile will be in .yuv format N.B : This option is not needed if you use the sink component -c: Color conv option - input file is decoded and color converted in outfile (.rgb file) -h: Displays this help -f: input format specification in case of color conversion component usage The available input formats are - - OMX_COLOR_Format24bitRGB888 (default format) - OMX_COLOR_Format24bitBGR888 - OMX_COLOR_Format32bitBGRA8888 - OMX_COLOR_Format32bitARGB8888 - OMX_COLOR_Format16bitARGB1555 - OMX_COLOR_Format16bitRGB565 - OMX_COLOR_Format16bitBGR565 -W 176: Width of the frame [default 176] -H 144: Height of the frame [default 144] -s: Uses the video sink component to display the output of the color converter(.rgb file) -t: Tunneling option - if this option is selected then by default the color converter and video sink components are selected even if those two options are not specified - the components are tunneled between themselves N.B : The input picture resolution can be maximum 640x480 for decoding and displaying Usage: omxparsertest -o outfileVideo.yuv outfileAudio.pcm [-t] [-h] [-d] input_filename.3gp -o outfileVideo.yuv outfileAudio.pcm: If this option is specified, the output is written to user specified outfiles N.B : This option is not needed if you use the sink component -h: Displays this help -d: Uses the video and ALSA sink component to display the video and play the audio output input_filename is the user specified input file name -t: Tunneling option - if this option is selected then by default the color converter, video sink, volume control and ALSA sink components are selected even if these options are not specified - the components are tunneled between themselves Usage: omxvideoenctest -o outfile [-W 320] [-H 240] [-t] [-C] [-h] [-f input_fmt] input_filename -i infile : Input yuv file name -o outfile: If this option is specified, the output is written to user specified outfile. Else, the output is written in the same directory of input file the file name looks like input_filename_app.m4v depending on input option -h: Displays this help -f: output codec format. The available output formats are - - m4v -W width -H Height -C use camera as input source -r frame per second -t use tunnel between video source and encoder FRAME BUFFER SUPPORT -------------------- The video sink component, if used by specifying the -s option mentioned above, the uses machine's available framebuffer /dev/fb0. Users are requested to check if there is framebuffer support in their machine by command "fbset -i". If the output looks like - "open /dev/fb0 - no such file or directory" then there is no frame buffer support. Go to /etc/grub.conf file in your machine, append in the kernel argument the following arguments, separated by spaces: video=vesafb vga=0x305 Save the file, restart the machine, type the "fbset -i" command and you can see there is framebuffer support having following configurations: framebuffer name : VESA VGA Resolution - 1024x768 Pixel Depth - 8 rgba - 8/0,8/0,8/0,8/0 The users having in their machine, framebuffer of different configuration, are also request to change the configuration as mentioned above. EXAMPLE COMMANDS FOR AUDIO APPLICATION -------------------------------------- 1. omxaudiodectest reference_stream.mp3 2. omxaudiodectest -t reference_stream.mp3 3. omxaudiodectest -m reference_stream.mp3 4. omxaudiodectest -m -t reference_stream.mp3 5. omxaudiodectest -m -f reference_stream.mp3 6. omxaudiodectest -m -f -t reference_stream.mp3 7. omxaudiodectest reference_stream.ogg 8. omxaudiodectest -s reference_stream.ogg 9. omxaudiodectest -s -t reference_stream.ogg 10. omxaudiodectest reference_stream.aac 11. omxaudiodectest -t reference_stream.aac 12. omxvolcontroltest -o outfile.pcm -g 70 infile.pcm 13. omxaudiomixertest -o outfile.pcm -g0 70 g1 80 -r 44100 -n 2 filename1.pcm filename2.pcm 14. omxaudiomixertest -t -g0 70 g1 80 -r 44100 -n 2 filename1.pcm filename2.pcm EXAMPLE COMMANDS FOR VIDEO APPLICATION -------------------------------------- 1. omxvideodectest -c -s temp_qcif.m4v 2. omxvideodectest -c -s -f OMX_COLOR_Format16bitRGB565 temp_qcif.m4v 3. omxvideodectest -o out.rgb -c input_cif.264 4. omxvideodectest -o out -c -f OMX_COLOR_Format16bitRGB565 temp_qcif.m4v 5. omxvideodectest -o out.yuv temp_qcif.m4v 6. omxvideodectest -t input_cif.264 7. omxvideodectest -t -f OMX_COLOR_Format16bitRGB565 temp_qcif.m4v 8. omxvideoenctest -o outfile.m4v [-W 320] [-H 240] [-t] [-C] [-h] [-f input_fmt] input_filename.yuv EXAMPLE COMMANDS FOR PARSER APPLICATION --------------------------------------- 1. omxparsertest -o outfileVideo.yuv outfileAudio.pcm reference_stream.3gp 2. omxparsertest -d reference_stream.3gp 3. omxparsertest -t reference_stream.3gp HOW TO ADD A NEW COMPONENT -------------------------- - Add, in the src/components directory, a directory that will contain your component. - Put your source and header files in there. - Add a file named library_entry_point.c if you want to develop a component loaded by the default component loader. This file must contains a function named omx_component_library_Setup. See the other library entry points for reference. - Edit the configure.in file and add new rules according to your needs. In particular, you may want to add some library dependencies that are needed by the src/Makefile.am Also, remember to add the path of your Makefile in the AC_OUTPUT directive. - Edit the src/components/Makefile.am file and add rules for building your component. - Edit the src/Makefile.am file and add rules for building your component. - Create a src/components/yourcomponentdirectory/Makefile.am file. - If you have some test programs, put their sources into the 'test' directory. Edit the test/Makefile.am file to add rules for building them. In order to add the new directories to the build tree, the autotools must be used (the version supported is automake-1.9). The command to be executed with this distribution is: "autoreconf -i" - Check correct building of your tests with: make check - To build RPM: make dist sudo cp libomxil-bellagio-0.3.5.tar.gz /usr/src/redhat/SOURCES/ sudo rpmbuild -ba libomxil-bellagio.spec This version has been tested on: - FC6 2.6.20-1.2933.fc6 (with FFmpeg 0.4.9-0.37.20070503, libmad 0.15.1b, libvorbis 1.1.2-1) - UBUNTU 2.6.17-11-generic To Develop FFMpeg based AMR-NB/WB Component we used a tar ball from(This is may be replaced with a stable ffmpeg release in future). Using AMR will make FFMpeg non-free and unredistributable. AMR NB/WB(libamrnb,libamrwb) - http://rpmfind.net/linux/rpm2html/search.php?query=amr FFmpeg (libavcodec,libavformat,libavutils,libswscale etc) - http://www.filewatcher.com/m/ffmpeg-0.4.9-p20080326.tar.bz2.2505113.0.0.html FFmpegConfigure Option Used:- ./configure --arch=x86_32 --extra-cflags="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables" --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libfaad --enable-libfaac --enable-libgsm --enable-libxvid --enable-libx264 --enable-liba52 --enable-liba52bin --disable-static --enable-shared --enable-gpl --disable-debug --disable-optimizations --disable-stripping --enable-libamr-nb --enable-nonfree --enable-libamr-wb Last modified: Nov 24, 2008.