# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

# This file contains descriptions of FFTOOLS USE-EXPANDED variables.
# Keep it sorted.

aviocat - cat's a URL to another one, useful for dumping streams.
cws2fws - converts cws files (Macromedia Flash, compressed) to fws ones (Macromedia Flash, uncompressed).
ffescape - Escapes an input string, adopting the av_get_token() escaping logic.
ffeval - A simple expression evalutor.
ffhash - Computes a file's digest using libavutil algorithms.
fourcc2pixfmt - Shows the relationships between rawvideo pixel formats and FourCC tags.
graph2dot - A tool to convert a libavfilter graph to a dot file.
ismindex - A tool for creating smooth streaming manifests.
pktdumper - Dumps packets as demuxed by libavformat.
qt-faststart - Rearranges a Quicktime file to facilitate network streaming.
sidxindex - Write an MPD file for fragmented MP4 files with a sidx index at the start of the file.
trasher - Writes burts of random data into a file. Great for testing error robustness/resilience/concealment.
