Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on

PDF of the presentation held at the VideoLAN Dev Days meeting of 3 September 2011, Paris.
Short introduction to libavfilter, current development status and future developments.

  • Be the first to comment

  • Be the first to like this


  1. 1. ProjectIntroductionIntroduction tolibavfilter Introduction to LibavfilterarchitectureExamplesFuture Stefano SabatiniDevelopmentAppendixes VideoLAN Video LAN Dev Days - 03 September 2011 1 / 15
  2. 2. SummaryProjectIntroduction 1 Project IntroductionIntroduction tolibavfilterarchitecture 2 Introduction to libavfilter architectureExamplesFutureDevelopment 3 ExamplesAppendixes 4 Future Development 5 Appendixes 2 / 15
  3. 3. Objectives - Why?ProjectIntroductionIntroduction tolibavfilterarchitecture provide a media filtering layer to FFmpeg+clientExamples libraries/apps, replace VHOOKFutureDevelopment simplify the design of ff* tools, enhance flexibilityAppendixes extend the testing framework with ad-hoc filters/sources 3 / 15
  4. 4. Libavfilter dependenciesProjectIntroductionIntroduction tolibavfilterarchitectureExamplesFutureDevelopmentAppendixes 4 / 15
  5. 5. High level features focus on performance (avoid unnecessary memcpies /ProjectIntroduction unnecessary conversions)Introduction tolibavfilter support all formats supported by FFmpegarchitectureExamples implement a sophisticated negotiation formatFuture mechanism, minimize the number of pixel/sampleDevelopment format conversionsAppendixes interactive features for processing interactive commands/events allow graphs of filters vs. linear chains allow media sources/sinks allow transmedia filtering 5 / 15
  6. 6. Development statusProjectIntroductionIntroduction tolibavfilterarchitecture video filtering integrated into ffmpeg.c in May 2010,Examples included in latest FFmpeg/Libav formal releasesFuture (0.7/0.8)DevelopmentAppendixes API/ABI still considered unstable audio integration is a work in progress 6 / 15
  7. 7. Filter node anatomyProjectIntroductionIntroduction to A filter contains one or more input/output padslibavfilterarchitecture Each pad is bound to a specific media type, supportsExamples one or more input/output formatsFutureDevelopment input and output pads are tied together by a linkAppendixes filters can be connected together to form a graph a filtergraph is represented through a simple textual description 7 / 15
  8. 8. Filtering modelProjectIntroductionIntroduction tolibavfilter a filter processes buffers, a buffer can contain a videoarchitecture frame or audio samplesExamplesFuture the properties of each buffer (e.g. frame type,Development timestamp, file position) can be accessed andAppendixes manipulated during the filtering process mixed pull/push model 8 / 15
  9. 9. FiltersProjectIntroduction scale - based on libswscaleIntroduction tolibavfilterarchitecture pad, crop, vflip, hflipExamples frei0r / frei0r_src wrapperFutureDevelopment mp wrapper (MPlayer filters)Appendixes more: boxblur, delogo, drawtext, lutyuv, lutrgb, yadif, select, unsharp... currently 60 filters+sources+sinks implemented (check -filters option) 9 / 15
  10. 10. Misc examplesProjectIntroductionIntroduction tolibavfilter ExamplearchitectureExamples color=pink,hflip,nullsinkFutureDevelopment ExampleAppendixes movie=logo.png [logo]; color=bikeshed [color]; [color][logo] overlay [out] 10 / 15
  11. 11. Future development - 1ProjectIntroductionIntroduction tolibavfilterarchitecture audio filtering integration completion (possibly finishedExamples in a few months), sox+ladspa wrappersFutureDevelopment more framework changes - e.g. stricter integration withAppendixes libavcodec for allowing direct rendering 11 / 15
  12. 12. Future development - 2ProjectIntroductionIntroduction tolibavfilterarchitecture transmedia filteringExamplesFuture subtitles filteringDevelopment transmedia+subtitle filtering: speech recognition / voiceAppendixes synthesis / subtitles video rendering 12 / 15
  13. 13. How to contributeProjectIntroductionIntroduction tolibavfilterarchitectureExamples bug reports/feature requestsFuture patches are welcome!DevelopmentAppendixes money/food/postcards/stuff 13 / 15
  14. 14. ResourcesProjectIntroductionIntroduction tolibavfilterarchitecture libavfilter/*.{h,c}FutureDevelopment doc/examples/filtering.cAppendixes ffmpeg-devel mailing-list 14 / 15
  15. 15. Licence of this documentProjectIntroductionIntroduction tolibavfilter Released with Creative Commons licensearchitecture Attribution-NonCommercial-ShareAlike (see: http://Examples 15 / 15