Recherche avancée

Médias (1)

Mot : - Tags -/sintel

Autres articles (41)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

Sur d’autres sites (4924)

  • Our latest improvement to QA : Screenshot Testing

    2 octobre 2013, par benaka — Development

    Introduction to QA in Piwik

    Like any piece of good software, Piwik comes with a comprehensive QA suite that includes unit and integration tests. The unit tests make sure core components of Piwik work properly. The integration tests make sure Piwik’s tracking and report aggregation and APIs work properly.

    To complete our QA suite, we’ve recently added a new type of tests : Screenshot tests, that we use to make sure Piwik’s controller and JavaScript code works properly.

    This blog post will explain how they work and describe our experiences setting them up ; we hope to show you an example of innovative QA practices in an active open source project.

    Screenshot Tests

    As the name implies, our screenshot tests (1) first capture a screenshot of a URL, then (2) compare the result with an expected image. This lets us test the code in Piwik’s controllers and Piwik’s JavaScript simply by specifying a URL.

    Contrast this with conventional UI tests that test for page content changes. Such tests require writing large amounts of test code that, at most, check for changes in HTML. Our tests, on the otherhand, will be able to show regressions in CSS and JavaScript rendering logic with a bare minimum of testing code.

    Capturing Screenshots

    Screenshots are captured using a 3rd party tool. We tried several tools before settling on PhantomJS. PhantomJS executes a JavaScript file with an environment that allows it to create WebKit powered web views. When capturing a screenshot, we supply PhantomJS with a script that :

    • opens a web page view,
    • loads a URL,
    • waits for all AJAX requests to be completed,
    • waits for all images to be loaded
    • waits for all JavaScript to be run.

    Then it renders the completed page to an PNG file.

    • To see how we use PhantomJS see capture.js.
    • To see how we wait for AJAX requests to complete and images to load see override.js.

    Comparing Screenshots

    Once a screenshot is generated we test for UI regressions by comparing it with an expected image. There is no sort of fuzzy matching involved. We just check that the images consist of the same bytes.

    If a screenshot test fails we use ImageMagick’s compare command line tool to generate an image diff :

    Showing differences QA tests screenshots pixel by pixel comparison

    In this example above, there was a change that caused the Search box to be hidden in the datatable. This resulted in the whole Data table report being shifted up a few pixels. The differences are visible in red color which gives rapid feedback to the developers what has changed in the last commit.

    Screenshot Tests on Travis

    We experienced trouble generating identical screenshots on different machines, so our tests were not initially automated by Travis. Once we surpassed this hurdle, we created a new github repo to store our UI tests and screenshots and then enabled the travis build for it. We also made sure that every time a commit is pushed to the Piwik repo, our travis build will push a commit to the UI test repo to run the UI tests.

    We decided to create a new repository so the main repository wouldn’t be burdened with the large screenshot files (which git would not handle very well). We also made sure the travis build would upload all the generated screenshots to a server so debugging failures would be easier.

    Problems we experienced

    Getting generated screenshots to render identically on separate machines was quite a challenge. It took months to figure out how to get it right. Here’s what we learned :

    Fonts will render identically on different machines, but different machines can pick the wrong fonts. When we first tried getting these tests to run on Travis, we noticed small differences in the way fonts were rendered on different machines. We thought this was an insurmountable problem that would occur due to the libraries installed on these machines. It turns out, the machines were just picking the wrong fonts. After installing certain fonts during our Travis build, everything started working.

    Different versions of GD can generate slightly different images. GD is used in Piwik to, among other things, generate sparkline images. Different versions of GD will result in slightly different images. They look the same to the naked eye, but some pixels will have slightly different colors. This is, unfortunately, a problem we couldn’t solve. We couldn’t make sure that everyone who runs the tests uses the same version of GD, so instead we disabled sparklines for UI testing.

    What we learned about existing screenshot capturing tools

    We tried several screenshot capturing tools before finding one that would work adequately. Here’s what we learned about them :

    • CutyCapt This is the first screenshot capturing tool we tried. CutyCapt is a C++ program that uses QtWebKit to load and take a screenshot of a page. It can’t be used to capture multiple screenshots in one run and it can’t be used to wait for all AJAX/Images/JavaScript to complete/load (at least not currently).

    • PhantomJS This is the solution we eventually chose. PhantomJS is a headless scriptable browser that currently uses WebKit as its rendering engine.

      For the most part, PhantomJS is the best solution we found. It reliably renders screenshots, allows JavaScript to be injected into pages it loads, and since it essentially just runs JavaScript code that you provide, it can be made to do whatever you want.

    • SlimerJS SlimerJS is a clone of PhantomJS that uses Gecko as the rendering engine. It is meant to function similarly to PhantomJS. Unfortunately, due to some limitations hard-coded in Mozilla’s software, we couldn’t use it.

      For one, SlimerJS is not headless. There is, apparently, no way to do that when embedding Mozilla. You can, however, run it through xvfb, however the fact that it has to create a window means some odd things can happen. When using SlimerJS, we would sometimes end up with images where tooltips would display as if the mouse was hovering over an element. This inconsistency meant we couldn’t use it for our tests.

    One tool we didn’t try was Selenium Webdriver. Although Selenium is traditionally used to create tests that check for HTML content, it can be used to generate screenshots. (Note : PhantomJS supports using a remote WebDriver.)

    Our Future Plans for Screenshot Testing

    At the moment we render a couple dozen screenshots. We test how our PHP code, JavaScript code and CSS makes Piwik’s UI look, but we don’t test how it behaves. This is our next step.

    We want to create Screenshot Unit Tests for each UI control Piwik uses (for example, the Data Table View or the Site Selector). These tests would use the Widgetize plugin to load a control by itself, then execute JavaScript that simulates events and user behavior, and finally take a screenshot. This way we can test how our code handles clicks and hovers and all sorts of other behavior.

    Screenshots Tests will make Piwik more stable and keep us agile and able to release early and often. Thank you for your support & Spreading the word about Piwik !

  • Piwik 1.12, New Features, API Improvements, Stability — The Last Piwik 1.X Release

    30 mai 2013, par Piwik team — Development

    We are very excited to announce the immediate availability of Piwik v1.12 !

    Piwik v1.12 is a major new release with four big new features, seven smaller new features, several API improvements and all together 82 tickets fixed. This is also the last major 1.X release, which means after this release we will be working on releasing Piwik 2.0. This also means that you should upgrade to PHP 5.3 or higher if you haven’t already, since Piwik 2.0 will only support PHP 5.3 and above.

    Finally, this release contains two breaking changes to the API. If you use the Piwik API click here or scroll down to see if you’re affected.

    Table of Contents :

    New Big Feature – Beta Release Channel

    beta_channel_settings

    For those of you who want to help test Piwik 2.0-beta releases as soon as they come up, we’ve made it easier to use our beta releases. Navigate to the Settings > General Settings page and click the The latest beta release radio button. You will then be able to upgrade to beta releases.

    This isn’t truly a major feature, but we think it’s just as important because it will allow us to create more beta releases and thus catch more bugs before we make a final release. This means more releases and more stability for you.

    New Big Feature – Segment Editor

    Custom Segment Editor with Custom Variable segmentation

    The Segment Editor is a long-awaited new feature that allows you to view, save and edit your segments.

    Piwik has supported segmentation (filtering visits and reports by arbitrary criteria, like browser family) for quite some time now, but it has never been possible to visually create and modify them. Nor could they be saved for later recall.

    Thanks to the eighty individuals and company who funded this feature, it is now possible to :

    • visually segment your visitors, instead of creating URLs.
    • save segments and easily switch between them, instead of remembering URLs.
    • get suggestions for segments that might be helpful to view.
    • learn more in the Segmentating Analytics reports user documentation..

    New Big Feature – Page Speed Reports

    You can now see how long it took your webserver to generate and send pages over HTTP through the new Avg. Generation Time metric.

    This metric can be viewed on both the Pages and Page Titles reports :

    avg_generation_time_page_urls

    And the average page generation time for all the pages in your website/webapp is displayed on the visitors overview :

    avg_generation_time_overview

    You can use this new information to benchmark your webapp and web server.

    New Big Feature – Device Detection Reports

    Piwik 1.12 also includes a new plugin that provides reports on the device types (tablet, desktop, smartphone, etc.), device brands (Apple, Google, Samsung, etc.) and device models (iPad, Nexus 7, etc.) your visitors use to access your website :

    device_reports

    The new plugin also enhances Operating system detections (detecting sub versions of Linux, Windows, and more).

    Note : This plugin is not enabled by default, but will be in Piwik 2.0. If you want to view these reports now, you can activate the plugin in the Installed Plugins admin page. Navigate to Visitors > Devices to see the new reports. You may also use the new (beta) ‘Device type’.

    The new plugin was developed with the support of Clearcode.cc our technology partner

    Other improvements

    Majestic SEO Metrics

    seo_stats_with_majestic

    We’ve added two new SEO metrics to the SEO widget, both of which are calculated by MajesticSEO.com. These metrics will tell you the number of external backlinks (the number of links to your site from other sites) and the number of referrer domains (the number of domains that link to your site).

    We thank the team at Majestic for their support and hard work in bringing you these metrics to your Piwik dashboards !

    Real-time Visitor Count Dashboard Widget

    Real time visitor counter

    There is now a simple new widget you can use to see the number of visitors, visits and actions that occurred in the last couple minutes. We call it the Real Time Visitor Counter !

    New segment parameter : siteSearchKeyword.

    There is now a new segment parameter you can use to segment your visits : siteSearchKeyword. This parameter will let you select visits that had site searches with a specific keyword.

    Ignore URL letter case when importing log files.

    We’ve added a new option to the log import script, –force-lowercase-path. When used, the importer will change URL paths to lowercase before tracking them. This way http://domain.com/MY/BLOG will be treated the same as http://domain.com/my/blog.

    Updated ISP Names

    pretty_provider_names

    We’ve also modified the Providers report so prettier and more up-to-date names of ISPs are displayed.

    Customize the background/text/axis color of graphs.

    custom_image_graph_colors

    It is now possible to change the background color, text color and/or axis color of the graph images generated by the ImageGraph plugin. To access this functionality, use the following URL query parameters when generating an image :

    • backgroundColor
    • textColor
    • axisColor

    For example :

    http://demo.piwik.org/index.php?module=API&method=ImageGraph.get&idSite=7&apiModule=UserSettings&apiAction=getBrowser&token_auth=anonymous&period=day&date=2013-03-21,2013-04-19&language=en&width=779&height=150&fontSize=9&showMetricTitle=0&aliasedGraph=1&legendAppendMetric=0&backgroundColor=efefef&gridColor=dcdcdc&colors=cb2026

    Send your users to a custom URL after they logout.

    If you manage a Piwik installation with many users and you want to send them to a custom page or website after they log out of Piwik, you can now specify the URL to redirect users after they log out.

    API Changes and Improvements

    BREAKING CHANGE – renamed segment parameters.

    The following segment parameters have been renamed :

    • continent renamed to : continentCode
    • browserName renamed to : browserCode
    • operatingSystem renamed to : operatingSystemCode
    • lat renamed to : latitude
    • long renamed to : longitude
    • region renamed to : regionCode
    • country renamed to : countryCode
    • continent renamed to : continentCode

    If you use one of the old segment parameter names, Piwik will throw an exception, so you should notice when you’re using an old name.

    BREAKING CHANGE – changes to the input & output of the Live.getLastVisitsDetails method.

    The following changes were made to the Live.getLastVisitsDetails API method :

    • The method no longer uses the maxIdVisit query parameter. It has been replaced by the filter_offset parameter.
    • Site search keywords are now displayed in a <siteSearchKeyword> element. They were formerly in <pageTitle> elements.
    • Custom variables with page scope now have ‘Page’ in their element names when displayed. For example, <customVariablePageName1>, <customVariablePageName2>, etc.

    Filter results of MultiSites.getAll by website name.

    It is now possible to filter the results of MultiSites.getAll by website name. To do this, set the pattern query parameter to the desired regex pattern.

    Get suggested values to use for a segment parameter.

    The new API method API.getSuggestedValuesForSegment can now be used to get suggested values for a segment parameter. This method will return a list of the most seen values (in the last 60 days) for a certain segment parameter. So for browserCode, this would return the codes for the browsers most visitors used in the last 60 days.

    Use extra tracking query parameters with the JS tracker (such as ‘lat’ & ‘long’).

    We’ve added a new method to the JavaScript tracker named appendToTrackingUrl. You can use this method to add extra query parameters to a tracking request, like so :

    _paq.push(['appendToTrackingUrl', 'lat=X&amp;long=Y']);

    What we’re working on

    As we said above, Piwik v1.12 is the last in the 1.X series of releases. This means we are now officially working on Piwik 2.0.

    Piwik 2.0 will be a big release, to be sure, but it’s going to bring you more than just a couple new features and a bag of bug fixes. For Piwik 2.0 we will be revisiting the user needs and the ideals that originally prompted us to create Piwik in order to build our vision of the future of web analytics.

    Piwik 2.0 won’t just be a bigger, better web app, but a new platform for observing and analyzing the things that matter to you.

    Participate in Piwik

    Are you a talented developer or an experienced User Interface designer ? Or maybe you like to write documentation or are a marketing guru ?

    If you have some free time and if you want to contribute to one of the most awesome open source projects around, please get in touch with the Piwik team, or read this page to learn more…

    Summary

    For the full list of changes in Piwik 1.12 check out the Changelog.

    Thank you to the core developers, all the beta testers and users, our official supporters, the translators & everyone who reported bugs or feature requests. Also thank you to softwares we use, and the libraries we use.

    If you are a company and would like to help an important project like Piwik grow, please get in touch, it means a lot to us. You can also participate in the project

    –> if you like what you read, please tell your friends and colleagues or write on your website, blog, forums, stackoverflow, etc. <–

    Peace. Enjoy !

  • Building FFMpeg 1.0.1 for Android gives me an error with make install

    23 décembre 2013, par Fabien Henon

    I'm trying to build FFMpeg 1.0.1 for Android.

    I followed this tutorial : http://www.packtpub.com/sites/default/files/downloads/Developing_Multimedia_Applications_with_NDK.pdf (part Porting the ffmpeg library to Android with NDK).

    Thus, in my ffmpeg folder I have a script build_android.sh and here is the content :

    #!/bin/bash
    NDK=/Users/me/android-ndk
    SYSROOT=$NDK/platforms/android-8/arch-arm/
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64
    function build_one
    {
    ./configure \
    --prefix=$PREFIX \
    --disable-shared \
    --enable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-avdevice \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=linux \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    }
    CPU=arm
    PREFIX=$(pwd)/android/$CPU
    ADDI_CFLAGS="-marm"
    build_one

    That was working fine mith version 2.1 of ffmpeg but with version 1.0.1 and other versions it does not work.

    I have the following error :

    ...
    CC  libavutil/random_seed.o
    CC  libavutil/rational.o
    CC  libavutil/rc4.o
    CC  libavutil/samplefmt.o
    CC  libavutil/sha.o
    CC  libavutil/time.o
    CC  libavutil/timecode.o
    CC  libavutil/tree.o
    CC  libavutil/utils.o
    CC  libavutil/xtea.o
    AR  libavutil/libavutil.a
    INSTALL libavfilter/libavfilter.a
    ./install: line 2: syntax error near unexpected token `)&#39;
    ./install: line 2: `1) Type &#39;./configure&#39; to create the configuration. A list of configure&#39;
    make: *** [install-libavfilter-static] Error 2

    I'm using NDK 9r and Mac OSX.

    So the configure command works fine, the make commmand too, but the make install is not working and is giving me the error.

    Can you help me with this issue ?

    For you information, ./install is (in my opinion) the INSTALL file which has this content :

    1) Type &#39;./configure&#39; to create the configuration. A list of configure
    options is printed by running &#39;configure --help&#39;.

    &#39;configure&#39; can be launched from a directory different from the FFmpeg
    sources to build the objects out of tree. To do this, use an absolute
    path when launching &#39;configure&#39;, e.g. &#39;/ffmpegdir/ffmpeg/configure&#39;.

    2) Then type &#39;make&#39; to build FFmpeg. GNU Make 3.81 or later is required.

    3) Type &#39;make install&#39; to install all binaries and libraries you built.

    NOTICE

    - Non system dependencies (e.g. libx264, libvpx) are disabled by default.

    I don't know why make install tries to execute this file. Here is the content of the Makefile :

    MAIN_MAKEFILE=1
    include config.mak

    vpath %.c    $(SRC_PATH)
    vpath %.cpp  $(SRC_PATH)
    vpath %.h    $(SRC_PATH)
    vpath %.S    $(SRC_PATH)
    vpath %.asm  $(SRC_PATH)
    vpath %.v    $(SRC_PATH)
    vpath %.texi $(SRC_PATH)
    vpath %/fate_config.sh.template $(SRC_PATH)

    PROGS-$(CONFIG_FFMPEG)   += ffmpeg
    PROGS-$(CONFIG_FFPLAY)   += ffplay
    PROGS-$(CONFIG_FFPROBE)  += ffprobe
    PROGS-$(CONFIG_FFSERVER) += ffserver

    PROGS      := $(PROGS-yes:%=%$(PROGSSUF)$(EXESUF))
    INSTPROGS   = $(PROGS-yes:%=%$(PROGSSUF)$(EXESUF))
    OBJS        = cmdutils.o
    OBJS-ffmpeg = ffmpeg_opt.o ffmpeg_filter.o
    TESTTOOLS   = audiogen videogen rotozoom tiny_psnr base64
    HOSTPROGS  := $(TESTTOOLS:%=tests/%) doc/print_options
    TOOLS       = qt-faststart trasher
    TOOLS-$(CONFIG_ZLIB) += cws2fws

    BASENAMES   = ffmpeg ffplay ffprobe ffserver
    ALLPROGS    = $(BASENAMES:%=%$(PROGSSUF)$(EXESUF))
    ALLPROGS_G  = $(BASENAMES:%=%$(PROGSSUF)_g$(EXESUF))
    ALLMANPAGES = $(BASENAMES:%=%.1)

    FFLIBS-$(CONFIG_AVDEVICE) += avdevice
    FFLIBS-$(CONFIG_AVFILTER) += avfilter
    FFLIBS-$(CONFIG_AVFORMAT) += avformat
    FFLIBS-$(CONFIG_AVRESAMPLE) += avresample
    FFLIBS-$(CONFIG_AVCODEC)  += avcodec
    FFLIBS-$(CONFIG_POSTPROC) += postproc
    FFLIBS-$(CONFIG_SWRESAMPLE)+= swresample
    FFLIBS-$(CONFIG_SWSCALE)  += swscale

    FFLIBS := avutil

    DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd
    EXAMPLES_FILES := $(wildcard $(SRC_PATH)/doc/examples/*.c) $(SRC_PATH)/doc/examples/Makefile

    SKIPHEADERS = cmdutils_common_opts.h

    include $(SRC_PATH)/common.mak

    FF_EXTRALIBS := $(FFEXTRALIBS)
    FF_DEP_LIBS  := $(DEP_LIBS)

    all: $(PROGS)

    $(PROGS): %$(EXESUF): %_g$(EXESUF)
       $(CP) $&lt; $@
       $(STRIP) $@

    $(TOOLS): %$(EXESUF): %.o
       $(LD) $(LDFLAGS) $(LD_O) $&lt; $(ELIBS)

    tools/cws2fws$(EXESUF): ELIBS = $(ZLIB)

    config.h: .config
    .config: $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c))
       @-tput bold 2>/dev/null
       @-printf &#39;\nWARNING: $(?F) newer than config.h, rerun configure\n\n&#39;
       @-tput sgr0 2>/dev/null

    SUBDIR_VARS := CLEANFILES EXAMPLES FFLIBS HOSTPROGS TESTPROGS TOOLS      \
                  ARCH_HEADERS BUILT_HEADERS SKIPHEADERS                    \
                  ARMV5TE-OBJS ARMV6-OBJS ARMVFP-OBJS NEON-OBJS             \
                  MMI-OBJS ALTIVEC-OBJS VIS-OBJS                            \
                  MMX-OBJS YASM-OBJS                                        \
                  MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSPR1-OBJS MIPS32R2-OBJS  \
                  OBJS HOSTOBJS TESTOBJS

    define RESET
    $(1) :=
    $(1)-yes :=
    endef

    define DOSUBDIR
    $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
    SUBDIR := $(1)/
    include $(SRC_PATH)/$(1)/Makefile
    -include $(SRC_PATH)/$(1)/$(ARCH)/Makefile
    include $(SRC_PATH)/library.mak
    endef

    $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))

    define DOPROG
    OBJS-$(1) += $(1).o
    $(1)$(PROGSSUF)_g$(EXESUF): $(OBJS-$(1))
    $$(OBJS-$(1)): CFLAGS  += $(CFLAGS-$(1))
    $(1)$(PROGSSUF)_g$(EXESUF): LDFLAGS += $(LDFLAGS-$(1))
    $(1)$(PROGSSUF)_g$(EXESUF): FF_EXTRALIBS += $(LIBS-$(1))
    -include $$(OBJS-$(1):.o=.d)
    endef

    $(foreach P,$(PROGS-yes),$(eval $(call DOPROG,$(P))))

    %$(PROGSSUF)_g$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS)
       $(LD) $(LDFLAGS) $(LD_O) $(OBJS-$*) cmdutils.o $(FF_EXTRALIBS)

    OBJDIRS += tools

    -include $(wildcard tools/*.d)

    VERSION_SH  = $(SRC_PATH)/version.sh
    GIT_LOG     = $(SRC_PATH)/.git/logs/HEAD

    .version: $(wildcard $(GIT_LOG)) $(VERSION_SH) config.mak
    .version: M=@

    version.h .version:
       $(M)$(VERSION_SH) $(SRC_PATH) version.h $(EXTRA_VERSION)
       $(Q)touch .version

    # force version.sh to run whenever version might have changed
    -include .version

    ifdef PROGS
    install: install-progs install-data
    endif

    install: install-libs install-headers

    install-libs: install-libs-yes

    install-progs-yes:
    install-progs-$(CONFIG_SHARED): install-libs

    install-progs: install-progs-yes $(PROGS)
       $(Q)mkdir -p "$(BINDIR)"
       $(INSTALL) -c -m 755 $(INSTPROGS) "$(BINDIR)"

    install-data: $(DATA_FILES) $(EXAMPLES_FILES)
       $(Q)mkdir -p "$(DATADIR)/examples"
       $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)"
       $(INSTALL) -m 644 $(EXAMPLES_FILES) "$(DATADIR)/examples"

    uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data

    uninstall-progs:
       $(RM) $(addprefix "$(BINDIR)/", $(ALLPROGS))

    uninstall-data:
       $(RM) -r "$(DATADIR)"

    clean::
       $(RM) $(ALLPROGS) $(ALLPROGS_G)
       $(RM) $(CLEANSUFFIXES)
       $(RM) $(TOOLS)
       $(RM) $(CLEANSUFFIXES:%=tools/%)
       $(RM) coverage.info
       $(RM) -r coverage-html

    distclean::
       $(RM) $(DISTCLEANSUFFIXES)
       $(RM) config.* .version version.h libavutil/avconfig.h libavcodec/codec_names.h

    config:
       $(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)

    # Without the sed genthml thinks "libavutil" and "./libavutil" are two different things
    coverage.info: $(wildcard *.gcda *.gcno */*.gcda */*.gcno */*/*.gcda */*/*.gcno)
       $(Q)lcov -c -d . -b . | sed -e &#39;s#/./#/#g&#39; > $@

    coverage-html: coverage.info
       $(Q)mkdir -p $@
       $(Q)genhtml -o $@ $&lt;
       $(Q)touch $@

    check: all alltools examples testprogs fate

    include $(SRC_PATH)/doc/Makefile
    include $(SRC_PATH)/tests/Makefile

    $(sort $(OBJDIRS)):
       $(Q)mkdir -p $@

    # Dummy rule to stop make trying to rebuild removed or renamed headers
    %.h:
       @:

    # Disable suffix rules.  Most of the builtin rules are suffix rules,
    # so this saves some time on slow systems.
    .SUFFIXES:

    .PHONY: all all-yes alltools check *clean config install*
    .PHONY: testprogs uninstall*