Slides

1,698 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,698
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
52
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • sudo ifdown usb0 ; sudo ifup usb0 ; ifconfig usb0 ifconfig usb0 192.168.10.1
  • Use of the word “introduction” since the subject is broad to cover it on 90 minutes
  • More details on the Linux graphic software stack in next slides
  • More details on the Linux graphic software stack in next slides
  • gst-launch audiotestsrc freq=1000 num-buffers=100 ! alsasink gst-launch filesrc location=bbb.flac ! flacdec ! alsasink gst-launch filesrc location=bbb.mp3 ! mp3parse ! ffdec_mp3 ! alsasink # see capture sources cset numid=18,iface=MIXER,name='Capture Source' # set to aux in amixer cset numid=18,iface=MIXER,name='Capture Source' 2 export PKG_CONFIG_PATH=/usr/lib/pkgconfig gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) audioplayer.c -o audioplayer ./audioplayer bbb.ogg
  • List all plug-ins gst-inspect List video plug-ins gst-inspect -a | grep -i 'class.*video' List filesrc plug-in element properties gst-inspect filesrc
  • List all plug-ins gst-inspect List video plug-ins gst-inspect -a | grep -i 'class.*video' List filesrc plug-in element properties gst-inspect filesrc
  • gst-launch audiotestsrc freq=1000 num-buffers=100 ! alsasink gst-launch filesrc location=bbb.flac ! flacdec ! alsasink gst-launch filesrc location=bbb.mp3 ! mp3parse ! ffdec_mp3 ! alsasink # see capture sources cset numid=18,iface=MIXER,name='Capture Source' # set to aux in amixer cset numid=18,iface=MIXER,name='Capture Source' 2 export PKG_CONFIG_PATH=/usr/lib/pkgconfig gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) audioplayer.c -o audioplayer ./audioplayer bbb.ogg
  • List all plug-ins gst-inspect List video plug-ins gst-inspect -a | grep -i 'class.*video' List filesrc plug-in element properties gst-inspect filesrc
  • List all plug-ins gst-inspect List video plug-ins gst-inspect -a | grep -i 'class.*video' List filesrc plug-in element properties gst-inspect filesrc
  • Slides

    1. 1. Embedded Streaming Media with GStreamer and BeagleBoard ESC-321 Presented by Todd Fischer todd.fischer@ridgerun.com
    2. 2. Agenda • Introduction to BeagleBoard multimedia architecture features. • GStreamer concepts • OMAP GStreamer hands on exercises • DMAI and GStreamer • OpenMAX and GStreamer • Questions
    3. 3. Introduction • Primary objective for this class is to introduce audience to GStreamer on OMAP3 with hands on exercises • This doesn’t class won't cover extensively the APIs available and assumes basic knowledge on C programming, Linux and computer graphics.
    4. 4. BeagleBoard and OMAP3 architecture • Provides architecture with several multimedia features: • Cortex A8 with Neon • C64x DSP • Video accelerators • How to utilize the hardware features with the software stack?
    5. 5. BeagleBoard and OMAP3 architecture • Provides architecture with several multimedia features: • Cortex A8 with Neon • C64x DSP • Video accelerators • How to utilize the hardware features with the software stack?
    6. 6. BeagleBoard and OMAP3 architecture • Provides architecture with several multimedia features: • Cortex A8 with Neon • C64x DSP • Video accelerators • How to utilize the hardware features with the software stack?
    7. 7. GStreamer • Streaming media framework – audio and video • Close to 200 plug-ins available • Higher level than just input / filters / output  Networking, audio/video mixed streams, auto data handling • Various options utilizing hardware accelerators
    8. 8. GStreamer Overview • Elements • Sources, filters, sinks • Bins and Pipelines • Containers, pipeline is the overall bin • Pads • Element source / sink connection points • Caps • Capabilities organized by stream type with a set of properties
    9. 9. GStreamer Overview • Elements •Plugin • Sources, filters, sinks •Collection of elements • Bins and Pipelines • Containers, pipeline is the overall bin • Pads • Element source / sink connection points • Caps • Capabilities organized by stream type with a set of properties
    10. 10. Simple MP3 Player • Create dynamically using gst-launch • Source element reads from a file • Filter element converts MP3 to PWM • Sink element passes to ALSA output gst-launch filesrc location=a.mp3 ! mad ! alsasink
    11. 11. Hands On Exercise 0 • Start up Windowing environment with two terminals •cd gst •. src Period character to source the file e
    12. 12. Hands On Exercise 0 • Play audio file • a2 • Actual command • gst-launch filesrc • location=bbb.flac ! • flacdec ! alsasink
    13. 13. Simple Audio Player Source Code • Create pipeline, source, filter, sink • Set element properties • Build into pipeline • Connect src and sink pads • Setup pipeline event handler • End of stream • Set pipeline state to play • Run
    14. 14. Simple PA System • Create dynamically using gst-launch • Source element ALSS audio in • No filters • Sink element passes to ALSA output gst-launch alsasrc num-buffers=100 ! alsasink
    15. 15. Keeping Plug-ins Organized • Each known plug-in is added to registry • Most aspects of plug-in are tracked in the registry • Registry support run-in pipeline creation and dynamic filter selection • Use gst-inspect to list plug-ins gst-inspect | less gst-inspect filesrc
    16. 16. Hands On Exercise 1 • Using gst-inspect, list • All plug-ins • All video plug-ins • Element properties for filesrc plug-in
    17. 17. Hands On Exercise 2 • GStreamer video pipelines • gst-launch videotestsrc ! ffmpegcolorspace ! fbdevsink
    18. 18. Performance Data Passing • Stream held in buffers with data, timestamp, other info • When possible, buffer memory allocated by sink pad • Use hardware when data copy is necessary
    19. 19. Performance Data Transformation • Cortex A8 compiler optimization • NEON • Single Instruction Multiple Data • C64 • Video accelerator • DMA and other data movers
    20. 20. Davinci Multimedia Application Interface
    21. 21. DMAI and GStreamer • Davinci Multimedia Application Interface • Exposes OMAP/Davinci hardware using high level of abstraction • Stream audio / video • Graphics display • Hardware optimized frame/data copy
    22. 22. OMAP3 Codec Engine • Isolates users for audio/video codecs from those implementing the codecs • Codec can run in several places without calling application being aware • Cortex A8, NEON, C64, hardware accelerator • Uses DSPLink and DSPBios conventions to support DSP based algorithms dynamically
    23. 23. Video Phone • Vision – video phone application can create audio and video GStreamer pipelines for capture / rendering • DMAI, Codec engine, DSPLink, C64 algorithms perform heavy lifting • OMAP3 hardware capabilities utilized • Video phone application focused on call management, not streaming data manipulation
    24. 24. OpenMAX and GStreamer • Addresses codecs using hardware accelerators • GStreamer integration via gst-openmax • All OpenMax codecs available as GStreamer plug-ins • Initial focus on high performance codecs
    25. 25. OpenMAX and OMAP3 • ARM Inc has Cortex-A8 / NEON DL implementation • Texas Instruments has AAC and MPEG4 IL / DL support
    26. 26. GStreamer in 3 Layers

    ×