* qatar/release/0.7: (65 commits) riff: Add mpgv MPEG-2 fourcc Update Changelog matroskadec: fix integer underflow if header length < probe length. ffmpeg: fix operation with --disable-avfilter vf_libopencv: replace opencv/cxtypes.h #include by opencv/cxcore.h build: Create mlib optimization directories during out-of-tree builds. changelog: misc typo and wording fixes (cherry picked from committags/n0.7.2b047941d7d) doc: Remove outdated comments about gcc 2.95 and gcc 3.3 support. (cherry picked from commit5ccbf80963) matroskadec: matroska_read_seek after after EBML_STOP leads to failure. Update RELEASE file update Changelog mt: proper locking around release_buffer calls. vp8/mt: flush worker thread, not application thread context, on seek. docs: Mention the upstream bugzilla url about the dlltool vs MSVC issue docs: Use proper markup for a literal command line option docs: Don't recommend adding --enable-memalign-hack docs: Remove needless configure options oggdec: prevent heap corruption. oggdec: Abort Ogg header parsing when encountering a data packet. Add LGPL license boilerplate to files lacking it. ... Conflicts: Changelog configure doc/developer.texi libavcodec/libvpxenc.c libavcodec/rawdec.c libavfilter/x86/gradfun.c libavformat/Makefile libavformat/isom.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| @@ -2,6 +2,20 @@ Entries are sorted chronologically from oldest to youngest within each release, | |||
| releases are sorted from youngest to oldest. | |||
| version 0.7.1: | |||
| - added various additional FOURCC codec identifiers | |||
| - H.264 4:4:4 fixes | |||
| - build system and compilation fixes | |||
| - Doxygen and general documentation corrections and improvements | |||
| - fixed segfault in ffprobe | |||
| - behavioral fix in av_open_input_stream() | |||
| - Licensing clarification for LGPL'ed vf_gradfun | |||
| - bugfixes while seeking in multithreaded decoding | |||
| - support newer versions of OpenCV | |||
| - ffmpeg: fix operation with --disable-avfilter | |||
| - fixed integer underflow in matroska decoder | |||
| version 0.7: | |||
| - many many things we forgot because we rather write code than changelogs | |||
| @@ -11,22 +25,22 @@ version 0.7: | |||
| - Frame multithreaded decoding | |||
| - E-AC-3 audio encoder | |||
| - ac3enc: add channel coupling support | |||
| - floating-point sample format support to the ac3, eac3, dca, aac, and vorbis decoders. | |||
| - H264/MPEG frame-level multi-threading | |||
| - All av_metadata_* functions renamed to av_dict_* and moved to libavutil | |||
| - floating-point sample format support for (E-)AC-3, DCA, AAC, Vorbis decoders | |||
| - H.264/MPEG frame-level multithreading | |||
| - av_metadata_* functions renamed to av_dict_* and moved to libavutil | |||
| - 4:4:4 H.264 decoding support | |||
| - 10-bit H.264 optimizations for x86 | |||
| - lut, lutrgb, and lutyuv filters added | |||
| - buffersink libavfilter sink added | |||
| - Bump libswscale for recently reported ABI break | |||
| - bump libswscale for recently reported ABI break | |||
| version 0.7_beta2: | |||
| - VP8 frame-multithreading | |||
| - VP8 frame-level multithreading | |||
| - NEON optimizations for VP8 | |||
| - Lots of deprecated API cruft removed | |||
| - fft and imdct optimizations for AVX (Sandy Bridge) processors | |||
| - removed a lot of deprecated API cruft | |||
| - FFT and IMDCT optimizations for AVX (Sandy Bridge) processors | |||
| - showinfo filter added | |||
| - DPX image encoder | |||
| - SMPTE 302M AES3 audio decoder | |||
| @@ -88,10 +102,10 @@ version 0.7_beta1: | |||
| - demuxer for receiving raw rtp:// URLs without an SDP description | |||
| - single stream LATM/LOAS decoder | |||
| - setpts filter added | |||
| - Win64 support for optimized asm functions | |||
| - Win64 support for optimized x86 assembly functions | |||
| - MJPEG/AVI1 to JPEG/JFIF bitstream filter | |||
| - ASS subtitle encoder and decoder | |||
| - IEC 61937 encapsulation for E-AC3, TrueHD, DTS-HD (for HDMI passthrough) | |||
| - IEC 61937 encapsulation for E-AC-3, TrueHD, DTS-HD (for HDMI passthrough) | |||
| - overlay filter added | |||
| - rename aspect filter to setdar, and pixelaspect to setsar | |||
| - IEC 61937 demuxer | |||
| @@ -1,4 +1,4 @@ | |||
| # Doxyfile 1.5.6 | |||
| # Doxyfile 1.7.1 | |||
| # This file describes the settings to be used by the documentation system | |||
| # doxygen (www.doxygen.org) for a project | |||
| @@ -31,7 +31,7 @@ PROJECT_NAME = FFmpeg | |||
| # This could be handy for archiving the generated documentation or | |||
| # if some version control system is used. | |||
| PROJECT_NUMBER = | |||
| PROJECT_NUMBER = 0.7.1 | |||
| # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) | |||
| # base path where the generated documentation will be put. | |||
| @@ -54,11 +54,11 @@ CREATE_SUBDIRS = NO | |||
| # information to generate all constant output in the proper language. | |||
| # The default language is English, other supported languages are: | |||
| # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, | |||
| # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, | |||
| # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), | |||
| # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, | |||
| # Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, | |||
| # and Ukrainian. | |||
| # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, | |||
| # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English | |||
| # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, | |||
| # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, | |||
| # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. | |||
| OUTPUT_LANGUAGE = English | |||
| @@ -155,13 +155,6 @@ QT_AUTOBRIEF = NO | |||
| MULTILINE_CPP_IS_BRIEF = NO | |||
| # If the DETAILS_AT_TOP tag is set to YES then Doxygen | |||
| # will output the detailed description near the top, like JavaDoc. | |||
| # If set to NO, the detailed description appears after the member | |||
| # documentation. | |||
| DETAILS_AT_TOP = NO | |||
| # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented | |||
| # member inherits the documentation from any documented member that it | |||
| # re-implements. | |||
| @@ -214,6 +207,18 @@ OPTIMIZE_FOR_FORTRAN = NO | |||
| OPTIMIZE_OUTPUT_VHDL = NO | |||
| # Doxygen selects the parser to use depending on the extension of the files it | |||
| # parses. With this tag you can assign which parser to use for a given extension. | |||
| # Doxygen has a built-in mapping, but you can override or extend it using this | |||
| # tag. The format is ext=language, where ext is a file extension, and language | |||
| # is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, | |||
| # C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make | |||
| # doxygen treat .inc files as Fortran files (default is PHP), and .f files as C | |||
| # (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions | |||
| # you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. | |||
| EXTENSION_MAPPING = | |||
| # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want | |||
| # to include (a tag file for) the STL sources as input, then you should | |||
| # set this tag to YES in order to let doxygen match functions declarations and | |||
| @@ -268,6 +273,22 @@ SUBGROUPING = YES | |||
| TYPEDEF_HIDES_STRUCT = NO | |||
| # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to | |||
| # determine which symbols to keep in memory and which to flush to disk. | |||
| # When the cache is full, less often used symbols will be written to disk. | |||
| # For small to medium size projects (<1000 input files) the default value is | |||
| # probably good enough. For larger projects a too small cache size can cause | |||
| # doxygen to be busy swapping symbols to and from disk most of the time | |||
| # causing a significant performance penality. | |||
| # If the system has enough physical memory increasing the cache will improve the | |||
| # performance by keeping more symbols in memory. Note that the value works on | |||
| # a logarithmic scale so increasing the size by one will rougly double the | |||
| # memory usage. The cache size is given by this formula: | |||
| # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, | |||
| # corresponding to a cache size of 2^16 = 65536 symbols | |||
| SYMBOL_CACHE_SIZE = 0 | |||
| #--------------------------------------------------------------------------- | |||
| # Build related configuration options | |||
| #--------------------------------------------------------------------------- | |||
| @@ -366,6 +387,12 @@ HIDE_SCOPE_NAMES = NO | |||
| SHOW_INCLUDE_FILES = YES | |||
| # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen | |||
| # will list include files with double quotes in the documentation | |||
| # rather than with sharp brackets. | |||
| FORCE_LOCAL_INCLUDES = NO | |||
| # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] | |||
| # is inserted in the documentation for inline members. | |||
| @@ -385,6 +412,16 @@ SORT_MEMBER_DOCS = YES | |||
| SORT_BRIEF_DOCS = NO | |||
| # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen | |||
| # will sort the (brief and detailed) documentation of class members so that | |||
| # constructors and destructors are listed first. If set to NO (the default) | |||
| # the constructors will appear in the respective orders defined by | |||
| # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. | |||
| # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO | |||
| # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. | |||
| SORT_MEMBERS_CTORS_1ST = NO | |||
| # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the | |||
| # hierarchy of group names into alphabetical order. If set to NO (the default) | |||
| # the group names will appear in their defined order. | |||
| @@ -459,7 +496,8 @@ SHOW_DIRECTORIES = NO | |||
| SHOW_FILES = YES | |||
| # Set the SHOW_NAMESPACES tag to NO to disable the generation of the | |||
| # Namespaces page. This will remove the Namespaces entry from the Quick Index | |||
| # Namespaces page. | |||
| # This will remove the Namespaces entry from the Quick Index | |||
| # and from the Folder Tree View (if specified). The default is YES. | |||
| SHOW_NAMESPACES = YES | |||
| @@ -474,6 +512,15 @@ SHOW_NAMESPACES = YES | |||
| FILE_VERSION_FILTER = | |||
| # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed | |||
| # by doxygen. The layout file controls the global structure of the generated | |||
| # output files in an output format independent way. The create the layout file | |||
| # that represents doxygen's defaults, run doxygen with the -l option. | |||
| # You can optionally specify a file name after the option, if omitted | |||
| # DoxygenLayout.xml will be used as the name of the layout file. | |||
| LAYOUT_FILE = | |||
| #--------------------------------------------------------------------------- | |||
| # configuration options related to warning and progress messages | |||
| #--------------------------------------------------------------------------- | |||
| @@ -577,7 +624,8 @@ EXCLUDE_SYMLINKS = NO | |||
| # against the file with absolute path, so to exclude all test directories | |||
| # for example use the pattern */test/* | |||
| EXCLUDE_PATTERNS = *.git *.d | |||
| EXCLUDE_PATTERNS = *.git \ | |||
| *.d | |||
| # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names | |||
| # (namespaces, classes, functions, etc.) that should be excluded from the | |||
| @@ -591,14 +639,15 @@ EXCLUDE_SYMBOLS = | |||
| # directories that contain example code fragments that are included (see | |||
| # the \include command). | |||
| EXAMPLE_PATH = | |||
| EXAMPLE_PATH = libavcodec/ \ | |||
| libavformat/ | |||
| # If the value of the EXAMPLE_PATH tag contains directories, you can use the | |||
| # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp | |||
| # and *.h) to filter out the source-files in the directories. If left | |||
| # blank all files are included. | |||
| EXAMPLE_PATTERNS = | |||
| EXAMPLE_PATTERNS = *-example.c | |||
| # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be | |||
| # searched for input files to be used with the \include or \dontinclude | |||
| @@ -618,14 +667,17 @@ IMAGE_PATH = | |||
| # by executing (via popen()) the command <filter> <input-file>, where <filter> | |||
| # is the value of the INPUT_FILTER tag, and <input-file> is the name of an | |||
| # input file. Doxygen will then use the output that the filter program writes | |||
| # to standard output. If FILTER_PATTERNS is specified, this tag will be | |||
| # to standard output. | |||
| # If FILTER_PATTERNS is specified, this tag will be | |||
| # ignored. | |||
| INPUT_FILTER = | |||
| # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern | |||
| # basis. Doxygen will compare the file name with each pattern and apply the | |||
| # filter if there is a match. The filters are a list of the form: | |||
| # basis. | |||
| # Doxygen will compare the file name with each pattern and apply the | |||
| # filter if there is a match. | |||
| # The filters are a list of the form: | |||
| # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further | |||
| # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER | |||
| # is applied to all files. | |||
| @@ -675,7 +727,8 @@ REFERENCES_RELATION = NO | |||
| # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) | |||
| # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from | |||
| # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will | |||
| # link to the source code. Otherwise they will link to the documentstion. | |||
| # link to the source code. | |||
| # Otherwise they will link to the documentation. | |||
| REFERENCES_LINK_SOURCE = YES | |||
| @@ -758,18 +811,50 @@ HTML_FOOTER = | |||
| HTML_STYLESHEET = | |||
| # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. | |||
| # Doxygen will adjust the colors in the stylesheet and background images | |||
| # according to this color. Hue is specified as an angle on a colorwheel, | |||
| # see http://en.wikipedia.org/wiki/Hue for more information. | |||
| # For instance the value 0 represents red, 60 is yellow, 120 is green, | |||
| # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. | |||
| # The allowed range is 0 to 359. | |||
| HTML_COLORSTYLE_HUE = 220 | |||
| # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of | |||
| # the colors in the HTML output. For a value of 0 the output will use | |||
| # grayscales only. A value of 255 will produce the most vivid colors. | |||
| HTML_COLORSTYLE_SAT = 100 | |||
| # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to | |||
| # the luminance component of the colors in the HTML output. Values below | |||
| # 100 gradually make the output lighter, whereas values above 100 make | |||
| # the output darker. The value divided by 100 is the actual gamma applied, | |||
| # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, | |||
| # and 100 does not change the gamma. | |||
| HTML_COLORSTYLE_GAMMA = 80 | |||
| # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML | |||
| # page will contain the date and time when the page was generated. Setting | |||
| # this to NO can help when comparing the output of multiple runs. | |||
| HTML_TIMESTAMP = YES | |||
| # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, | |||
| # files or namespaces will be aligned in HTML using tables. If set to | |||
| # NO a bullet list will be used. | |||
| HTML_ALIGN_MEMBERS = YES | |||
| # If the GENERATE_HTMLHELP tag is set to YES, additional index files | |||
| # will be generated that can be used as input for tools like the | |||
| # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) | |||
| # of the generated HTML documentation. | |||
| # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML | |||
| # documentation will contain sections that can be hidden and shown after the | |||
| # page has loaded. For this to work a browser that supports | |||
| # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox | |||
| # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). | |||
| GENERATE_HTMLHELP = NO | |||
| HTML_DYNAMIC_SECTIONS = NO | |||
| # If the GENERATE_DOCSET tag is set to YES, additional index files | |||
| # will be generated that can be used as input for Apple's Xcode 3 | |||
| @@ -779,6 +864,8 @@ GENERATE_HTMLHELP = NO | |||
| # directory and running "make install" will install the docset in | |||
| # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find | |||
| # it at startup. | |||
| # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html | |||
| # for more information. | |||
| GENERATE_DOCSET = NO | |||
| @@ -796,13 +883,22 @@ DOCSET_FEEDNAME = "Doxygen generated docs" | |||
| DOCSET_BUNDLE_ID = org.doxygen.Project | |||
| # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML | |||
| # documentation will contain sections that can be hidden and shown after the | |||
| # page has loaded. For this to work a browser that supports | |||
| # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox | |||
| # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). | |||
| # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify | |||
| # the documentation publisher. This should be a reverse domain-name style | |||
| # string, e.g. com.mycompany.MyDocSet.documentation. | |||
| HTML_DYNAMIC_SECTIONS = NO | |||
| DOCSET_PUBLISHER_ID = org.doxygen.Publisher | |||
| # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. | |||
| DOCSET_PUBLISHER_NAME = Publisher | |||
| # If the GENERATE_HTMLHELP tag is set to YES, additional index files | |||
| # will be generated that can be used as input for tools like the | |||
| # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) | |||
| # of the generated HTML documentation. | |||
| GENERATE_HTMLHELP = NO | |||
| # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can | |||
| # be used to specify the file name of the resulting .chm file. You | |||
| @@ -841,6 +937,76 @@ BINARY_TOC = NO | |||
| TOC_EXPAND = NO | |||
| # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and | |||
| # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated | |||
| # that can be used as input for Qt's qhelpgenerator to generate a | |||
| # Qt Compressed Help (.qch) of the generated HTML documentation. | |||
| GENERATE_QHP = NO | |||
| # If the QHG_LOCATION tag is specified, the QCH_FILE tag can | |||
| # be used to specify the file name of the resulting .qch file. | |||
| # The path specified is relative to the HTML output folder. | |||
| QCH_FILE = | |||
| # The QHP_NAMESPACE tag specifies the namespace to use when generating | |||
| # Qt Help Project output. For more information please see | |||
| # http://doc.trolltech.com/qthelpproject.html#namespace | |||
| QHP_NAMESPACE = org.doxygen.Project | |||
| # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating | |||
| # Qt Help Project output. For more information please see | |||
| # http://doc.trolltech.com/qthelpproject.html#virtual-folders | |||
| QHP_VIRTUAL_FOLDER = doc | |||
| # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to | |||
| # add. For more information please see | |||
| # http://doc.trolltech.com/qthelpproject.html#custom-filters | |||
| QHP_CUST_FILTER_NAME = | |||
| # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the | |||
| # custom filter to add. For more information please see | |||
| # <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> | |||
| # Qt Help Project / Custom Filters</a>. | |||
| QHP_CUST_FILTER_ATTRS = | |||
| # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this | |||
| # project's | |||
| # filter section matches. | |||
| # <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> | |||
| # Qt Help Project / Filter Attributes</a>. | |||
| QHP_SECT_FILTER_ATTRS = | |||
| # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can | |||
| # be used to specify the location of Qt's qhelpgenerator. | |||
| # If non-empty doxygen will try to run qhelpgenerator on the generated | |||
| # .qhp file. | |||
| QHG_LOCATION = | |||
| # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files | |||
| # will be generated, which together with the HTML files, form an Eclipse help | |||
| # plugin. To install this plugin and make it available under the help contents | |||
| # menu in Eclipse, the contents of the directory containing the HTML and XML | |||
| # files needs to be copied into the plugins directory of eclipse. The name of | |||
| # the directory within the plugins directory should be the same as | |||
| # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before | |||
| # the help appears. | |||
| GENERATE_ECLIPSEHELP = NO | |||
| # A unique identifier for the eclipse help plugin. When installing the plugin | |||
| # the directory name containing the HTML and XML files should also have | |||
| # this name. | |||
| ECLIPSE_DOC_ID = org.doxygen.Project | |||
| # The DISABLE_INDEX tag can be used to turn on/off the condensed index at | |||
| # top of each HTML page. The value NO (the default) enables the index and | |||
| # the value YES disables it. | |||
| @@ -854,27 +1020,30 @@ ENUM_VALUES_PER_LINE = 4 | |||
| # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index | |||
| # structure should be generated to display hierarchical information. | |||
| # If the tag value is set to FRAME, a side panel will be generated | |||
| # If the tag value is set to YES, a side panel will be generated | |||
| # containing a tree-like index structure (just like the one that | |||
| # is generated for HTML Help). For this to work a browser that supports | |||
| # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, | |||
| # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are | |||
| # probably better off using the HTML help feature. Other possible values | |||
| # for this tag are: HIERARCHIES, which will generate the Groups, Directories, | |||
| # and Class Hiererachy pages using a tree view instead of an ordered list; | |||
| # ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which | |||
| # disables this behavior completely. For backwards compatibility with previous | |||
| # releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE | |||
| # respectively. | |||
| # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). | |||
| # Windows users are probably better off using the HTML help feature. | |||
| GENERATE_TREEVIEW = NO | |||
| # By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, | |||
| # and Class Hierarchy pages using a tree view instead of an ordered list. | |||
| USE_INLINE_TREES = NO | |||
| # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be | |||
| # used to set the initial width (in pixels) of the frame in which the tree | |||
| # is shown. | |||
| TREEVIEW_WIDTH = 250 | |||
| # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open | |||
| # links to external symbols imported via tag files in a separate window. | |||
| EXT_LINKS_IN_WINDOW = NO | |||
| # Use this tag to change the font size of Latex formulas included | |||
| # as images in the HTML documentation. The default is 10. Note that | |||
| # when you change the font size after a successful doxygen run you need | |||
| @@ -883,6 +1052,34 @@ TREEVIEW_WIDTH = 250 | |||
| FORMULA_FONTSIZE = 10 | |||
| # Use the FORMULA_TRANPARENT tag to determine whether or not the images | |||
| # generated for formulas are transparent PNGs. Transparent PNGs are | |||
| # not supported properly for IE 6.0, but are supported on all modern browsers. | |||
| # Note that when changing this option you need to delete any form_*.png files | |||
| # in the HTML output before the changes have effect. | |||
| FORMULA_TRANSPARENT = YES | |||
| # When the SEARCHENGINE tag is enabled doxygen will generate a search box | |||
| # for the HTML output. The underlying search engine uses javascript | |||
| # and DHTML and should work on any modern browser. Note that when using | |||
| # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets | |||
| # (GENERATE_DOCSET) there is already a search function so this one should | |||
| # typically be disabled. For large projects the javascript based search engine | |||
| # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. | |||
| SEARCHENGINE = NO | |||
| # When the SERVER_BASED_SEARCH tag is enabled the search engine will be | |||
| # implemented using a PHP enabled web server instead of at the web client | |||
| # using Javascript. Doxygen will generate the search PHP script and index | |||
| # file to put on the web server. The advantage of the server | |||
| # based approach is that it scales better to large projects and allows | |||
| # full text search. The disadvances is that it is more difficult to setup | |||
| # and does not have live searching capabilities. | |||
| SERVER_BASED_SEARCH = NO | |||
| #--------------------------------------------------------------------------- | |||
| # configuration options related to the LaTeX output | |||
| #--------------------------------------------------------------------------- | |||
| @@ -900,6 +1097,9 @@ LATEX_OUTPUT = latex | |||
| # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be | |||
| # invoked. If left blank `latex' will be used as the default command name. | |||
| # Note that when enabling USE_PDFLATEX this option is only used for | |||
| # generating bitmaps for formulas in the HTML output, but not in the | |||
| # Makefile that is written to the output directory. | |||
| LATEX_CMD_NAME = latex | |||
| @@ -959,6 +1159,13 @@ LATEX_BATCHMODE = NO | |||
| LATEX_HIDE_INDICES = NO | |||
| # If LATEX_SOURCE_CODE is set to YES then doxygen will include | |||
| # source code with syntax highlighting in the LaTeX output. | |||
| # Note that which sources are shown also depends on other settings | |||
| # such as SOURCE_BROWSER. | |||
| LATEX_SOURCE_CODE = NO | |||
| #--------------------------------------------------------------------------- | |||
| # configuration options related to the RTF output | |||
| #--------------------------------------------------------------------------- | |||
| @@ -1095,8 +1302,10 @@ GENERATE_PERLMOD = NO | |||
| PERLMOD_LATEX = NO | |||
| # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be | |||
| # nicely formatted so it can be parsed by a human reader. This is useful | |||
| # if you want to understand what is going on. On the other hand, if this | |||
| # nicely formatted so it can be parsed by a human reader. | |||
| # This is useful | |||
| # if you want to understand what is going on. | |||
| # On the other hand, if this | |||
| # tag is set to NO the size of the Perl module output will be much smaller | |||
| # and Perl will parse it just the same. | |||
| @@ -1158,16 +1367,22 @@ INCLUDE_FILE_PATTERNS = | |||
| # undefined via #undef or recursively expanded use the := operator | |||
| # instead of the = operator. | |||
| PREDEFINED = __attribute__(x)="" "RENAME(x)=x ## _TMPL" "DEF(x)=x ## _TMPL" \ | |||
| HAVE_AV_CONFIG_H HAVE_MMX HAVE_MMX2 HAVE_AMD3DNOW \ | |||
| PREDEFINED = "__attribute__(x)=" \ | |||
| "RENAME(x)=x ## _TMPL" \ | |||
| "DEF(x)=x ## _TMPL" \ | |||
| HAVE_AV_CONFIG_H \ | |||
| HAVE_MMX \ | |||
| HAVE_MMX2 \ | |||
| HAVE_AMD3DNOW \ | |||
| "DECLARE_ALIGNED(a,t,n)=t n" \ | |||
| "offsetof(x,y)=0x42" | |||
| # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then | |||
| # this tag can be used to specify a list of macro names that should be expanded. | |||
| # The macro definition that is found in the sources will be used. | |||
| # Use the PREDEFINED tag if you want to use a different macro definition. | |||
| #EXPAND_AS_DEFINED = FF_COMMON_FRAME | |||
| EXPAND_AS_DEFINED = declare_idct(idct, table, idct_row_head, idct_row, idct_row_tail, idct_row_mid) | |||
| EXPAND_AS_DEFINED = declare_idct | |||
| # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then | |||
| # doxygen's preprocessor will remove all function-like macros that are alone | |||
| @@ -1185,9 +1400,11 @@ SKIP_FUNCTION_MACROS = YES | |||
| # Optionally an initial location of the external documentation | |||
| # can be added for each tagfile. The format of a tag file without | |||
| # this location is as follows: | |||
| # TAGFILES = file1 file2 ... | |||
| # | |||
| # TAGFILES = file1 file2 ... | |||
| # Adding location for the tag files is done as follows: | |||
| # TAGFILES = file1=loc1 "file2 = loc2" ... | |||
| # | |||
| # TAGFILES = file1=loc1 "file2 = loc2" ... | |||
| # where "loc1" and "loc2" can be relative or absolute paths or | |||
| # URLs. If a location is present for each tag, the installdox tool | |||
| # does not have to be run to correct the links. | |||
| @@ -1255,6 +1472,14 @@ HIDE_UNDOC_RELATIONS = YES | |||
| HAVE_DOT = NO | |||
| # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is | |||
| # allowed to run in parallel. When set to 0 (the default) doxygen will | |||
| # base this on the number of processors available in the system. You can set it | |||
| # explicitly to a value larger than 0 to get control over the balance | |||
| # between CPU load and processing speed. | |||
| DOT_NUM_THREADS = 0 | |||
| # By default doxygen will write a font called FreeSans.ttf to the output | |||
| # directory and reference it in all dot files that doxygen generates. This | |||
| # font does not include all possible unicode characters however, so when you need | |||
| @@ -1266,6 +1491,11 @@ HAVE_DOT = NO | |||
| DOT_FONTNAME = FreeSans | |||
| # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. | |||
| # The default size is 10pt. | |||
| DOT_FONTSIZE = 10 | |||
| # By default doxygen will tell dot to use the output directory to look for the | |||
| # FreeSans.ttf font (which doxygen will put there itself). If you specify a | |||
| # different font using DOT_FONTNAME you can set the path where dot | |||
| @@ -1383,10 +1613,10 @@ DOT_GRAPH_MAX_NODES = 50 | |||
| MAX_DOT_GRAPH_DEPTH = 0 | |||
| # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent | |||
| # background. This is enabled by default, which results in a transparent | |||
| # background. Warning: Depending on the platform used, enabling this option | |||
| # may lead to badly anti-aliased labels on the edges of a graph (i.e. they | |||
| # become hard to read). | |||
| # background. This is disabled by default, because dot on Windows does not | |||
| # seem to support this out of the box. Warning: Depending on the platform used, | |||
| # enabling this option may lead to badly anti-aliased labels on the edges of | |||
| # a graph (i.e. they become hard to read). | |||
| DOT_TRANSPARENT = YES | |||
| @@ -1408,12 +1638,3 @@ GENERATE_LEGEND = YES | |||
| # the various graphs. | |||
| DOT_CLEANUP = YES | |||
| #--------------------------------------------------------------------------- | |||
| # Configuration::additions related to the search engine | |||
| #--------------------------------------------------------------------------- | |||
| # The SEARCHENGINE tag specifies whether or not a search engine should be | |||
| # used. If set to NO the values of all tags below this one will be ignored. | |||
| SEARCHENGINE = NO | |||
| @@ -178,7 +178,7 @@ testclean: | |||
| clean:: testclean | |||
| $(RM) $(ALLPROGS) $(ALLPROGS_G) | |||
| $(RM) $(CLEANSUFFIXES) | |||
| $(RM) doc/*.html doc/*.pod doc/*.1 | |||
| $(RM) doc/*.html doc/*.pod doc/*.1 doc/*.d doc/*~ | |||
| $(RM) $(TOOLS) | |||
| $(RM) $(CLEANSUFFIXES:%=tools/%) | |||
| @@ -1 +1 @@ | |||
| 0.7 | |||
| 0.7.1 | |||
| @@ -3064,7 +3064,6 @@ fi | |||
| if enabled small; then | |||
| add_cflags $size_cflags | |||
| optimizations="small" | |||
| elif enabled optimizations; then | |||
| add_cflags $speed_cflags | |||
| else | |||
| @@ -3118,6 +3117,8 @@ elif enabled armcc; then | |||
| add_cflags -W${armcc_opt},--diag_suppress=1207 | |||
| add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition | |||
| add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat | |||
| add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign | |||
| add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign | |||
| elif enabled tms470; then | |||
| add_cflags -pds=824 -pds=837 | |||
| elif enabled pathscale; then | |||
| @@ -3204,6 +3205,7 @@ if enabled sparc; then | |||
| fi | |||
| echo "debug symbols ${debug-no}" | |||
| echo "strip symbols ${stripping-no}" | |||
| echo "optimize for size ${small-no}" | |||
| echo "optimizations ${optimizations-no}" | |||
| echo "static ${static-no}" | |||
| echo "shared ${shared-no}" | |||
| @@ -3270,6 +3272,7 @@ if enabled source_path_used; then | |||
| doc | |||
| libavcodec | |||
| libavcodec/$arch | |||
| libavcodec/mlib | |||
| libavdevice | |||
| libavfilter | |||
| libavfilter/$arch | |||
| @@ -3281,6 +3284,7 @@ if enabled source_path_used; then | |||
| libpostproc | |||
| libswscale | |||
| libswscale/$arch | |||
| libswscale/mlib | |||
| tests | |||
| tools | |||
| " | |||
| @@ -54,10 +54,8 @@ These features are supported by all compilers we care about, so we will not | |||
| accept patches to remove their use unless they absolutely do not impair | |||
| clarity and performance. | |||
| All code must compile with GCC 2.95 and GCC 3.3. Currently, FFmpeg also | |||
| compiles with several other compilers, such as the Compaq ccc compiler | |||
| or Sun Studio 9, and we would like to keep it that way unless it would | |||
| be exceedingly involved. To ensure compatibility, please do not use any | |||
| All code must compile with recent versions of GCC and a number of other | |||
| currently supported compilers. To ensure compatibility, please do not use | |||
| additional C99 features or GCC extensions. Especially watch out for: | |||
| @itemize @bullet | |||
| @item | |||
| @@ -961,7 +961,7 @@ MSVC++-compatible import libraries. | |||
| @item Build FFmpeg with | |||
| @example | |||
| ./configure --enable-shared --enable-memalign-hack | |||
| ./configure --enable-shared | |||
| make | |||
| make install | |||
| @end example | |||
| @@ -998,9 +998,11 @@ extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[]; | |||
| Note that using import libraries created by dlltool requires | |||
| the linker optimization option to be set to | |||
| "References: Keep Unreferenced Data (/OPT:NOREF)", otherwise | |||
| "References: Keep Unreferenced Data (@code{/OPT:NOREF})", otherwise | |||
| the resulting binaries will fail during runtime. This isn't | |||
| required when using import libraries generated by lib.exe. | |||
| This issue is reported upstream at | |||
| @url{http://sourceware.org/bugzilla/show_bug.cgi?id=12633}. | |||
| @subsection Cross compilation for Windows with Linux | |||
| @@ -1036,7 +1038,7 @@ diffutils | |||
| Then run | |||
| @example | |||
| ./configure --enable-static --disable-shared | |||
| ./configure | |||
| @end example | |||
| to make a static build. | |||
| @@ -1083,12 +1085,12 @@ and add some special flags to your configure invocation. | |||
| For a static build run | |||
| @example | |||
| ./configure --target-os=mingw32 --enable-memalign-hack --enable-static --disable-shared --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | |||
| ./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | |||
| @end example | |||
| and for a build with shared libraries | |||
| @example | |||
| ./configure --target-os=mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | |||
| ./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | |||
| @end example | |||
| @bye | |||
| @@ -1859,7 +1859,7 @@ static int output_packet(AVInputStream *ist, int ist_index, | |||
| ret = 0; | |||
| /* encode any samples remaining in fifo */ | |||
| if (fifo_bytes > 0) { | |||
| int osize = av_get_bits_per_sample_fmt(enc->sample_fmt) >> 3; | |||
| int osize = av_get_bytes_per_sample(enc->sample_fmt); | |||
| int fs_tmp = enc->frame_size; | |||
| av_fifo_generic_read(ost->fifo, audio_buf, fifo_bytes, NULL); | |||
| @@ -2303,16 +2303,19 @@ static int transcode(AVFormatContext **output_files, | |||
| fprintf(stderr, "Video pixel format is unknown, stream cannot be encoded\n"); | |||
| ffmpeg_exit(1); | |||
| } | |||
| if (!codec->width || !codec->height) { | |||
| codec->width = icodec->width; | |||
| codec->height = icodec->height; | |||
| } | |||
| ost->video_resample = codec->width != icodec->width || | |||
| codec->height != icodec->height || | |||
| codec->pix_fmt != icodec->pix_fmt; | |||
| if (ost->video_resample) { | |||
| codec->bits_per_raw_sample= frame_bits_per_raw_sample; | |||
| } | |||
| if (!codec->width || !codec->height) { | |||
| codec->width = icodec->width; | |||
| codec->height = icodec->height; | |||
| } | |||
| ost->resample_height = icodec->height; | |||
| ost->resample_width = icodec->width; | |||
| ost->resample_pix_fmt= icodec->pix_fmt; | |||
| @@ -258,7 +258,7 @@ typedef struct { | |||
| DynamicRangeControl che_drc; | |||
| /** | |||
| * @defgroup elements Channel element related data. | |||
| * @name Channel element related data | |||
| * @{ | |||
| */ | |||
| enum ChannelPosition che_pos[4][MAX_ELEM_ID]; /**< channel element channel mapping with the | |||
| @@ -270,14 +270,15 @@ typedef struct { | |||
| /** @} */ | |||
| /** | |||
| * @defgroup temporary aligned temporary buffers (We do not want to have these on the stack.) | |||
| * @name temporary aligned temporary buffers | |||
| * (We do not want to have these on the stack.) | |||
| * @{ | |||
| */ | |||
| DECLARE_ALIGNED(32, float, buf_mdct)[1024]; | |||
| /** @} */ | |||
| /** | |||
| * @defgroup tables Computed / set up during initialization. | |||
| * @name Computed / set up during initialization | |||
| * @{ | |||
| */ | |||
| FFTContext mdct; | |||
| @@ -289,7 +290,7 @@ typedef struct { | |||
| /** @} */ | |||
| /** | |||
| * @defgroup output Members used for output interleaving. | |||
| * @name Members used for output interleaving | |||
| * @{ | |||
| */ | |||
| float *output_data[MAX_CHANNELS]; ///< Points to each element's 'ret' buffer (PCM output). | |||
| @@ -94,7 +94,7 @@ typedef struct AC3BitAllocParameters { | |||
| * Coded AC-3 header values up to the lfeon element, plus derived values. | |||
| */ | |||
| typedef struct { | |||
| /** @defgroup coded Coded elements | |||
| /** @name Coded elements | |||
| * @{ | |||
| */ | |||
| uint16_t sync_word; | |||
| @@ -112,7 +112,7 @@ typedef struct { | |||
| int num_blocks; ///< number of audio blocks | |||
| /** @} */ | |||
| /** @defgroup derived Derived values | |||
| /** @name Derived values | |||
| * @{ | |||
| */ | |||
| uint8_t sr_shift; | |||
| @@ -69,7 +69,7 @@ typedef struct { | |||
| AVCodecContext *avctx; ///< parent context | |||
| GetBitContext gbc; ///< bitstream reader | |||
| ///@defgroup bsi bit stream information | |||
| ///@name Bit stream information | |||
| ///@{ | |||
| int frame_type; ///< frame type (strmtyp) | |||
| int substreamid; ///< substream identification | |||
| @@ -87,7 +87,7 @@ typedef struct { | |||
| int eac3; ///< indicates if current frame is E-AC-3 | |||
| ///@} | |||
| ///@defgroup audfrm frame syntax parameters | |||
| ///@name Frame syntax parameters | |||
| int snr_offset_strategy; ///< SNR offset strategy (snroffststr) | |||
| int block_switch_syntax; ///< block switch syntax enabled (blkswe) | |||
| int dither_flag_syntax; ///< dither flag syntax enabled (dithflage) | |||
| @@ -97,7 +97,7 @@ typedef struct { | |||
| int skip_syntax; ///< skip field syntax enabled (skipflde) | |||
| ///@} | |||
| ///@defgroup cpl standard coupling | |||
| ///@name Standard coupling | |||
| int cpl_in_use[AC3_MAX_BLOCKS]; ///< coupling in use (cplinu) | |||
| int cpl_strategy_exists[AC3_MAX_BLOCKS];///< coupling strategy exists (cplstre) | |||
| int channel_in_cpl[AC3_MAX_CHANNELS]; ///< channel in coupling (chincpl) | |||
| @@ -110,7 +110,7 @@ typedef struct { | |||
| int cpl_coords[AC3_MAX_CHANNELS][AC3_MAX_CPL_BANDS]; ///< coupling coordinates (cplco) | |||
| ///@} | |||
| ///@defgroup spx spectral extension | |||
| ///@name Spectral extension | |||
| ///@{ | |||
| int spx_in_use; ///< spectral extension in use (spxinu) | |||
| uint8_t channel_uses_spx[AC3_MAX_CHANNELS]; ///< channel uses spectral extension (chinspx) | |||
| @@ -126,12 +126,12 @@ typedef struct { | |||
| float spx_signal_blend[AC3_MAX_CHANNELS][SPX_MAX_BANDS];///< spx signal blending factor (sblendfact) | |||
| ///@} | |||
| ///@defgroup aht adaptive hybrid transform | |||
| ///@name Adaptive hybrid transform | |||
| int channel_uses_aht[AC3_MAX_CHANNELS]; ///< channel AHT in use (chahtinu) | |||
| int pre_mantissa[AC3_MAX_CHANNELS][AC3_MAX_COEFS][AC3_MAX_BLOCKS]; ///< pre-IDCT mantissas | |||
| ///@} | |||
| ///@defgroup channel channel | |||
| ///@name Channel | |||
| int fbw_channels; ///< number of full-bandwidth channels | |||
| int channels; ///< number of total channels | |||
| int lfe_ch; ///< index of LFE channel | |||
| @@ -141,27 +141,27 @@ typedef struct { | |||
| int out_channels; ///< number of output channels | |||
| ///@} | |||
| ///@defgroup dynrng dynamic range | |||
| ///@name Dynamic range | |||
| float dynamic_range[2]; ///< dynamic range | |||
| ///@} | |||
| ///@defgroup bandwidth bandwidth | |||
| ///@name Bandwidth | |||
| int start_freq[AC3_MAX_CHANNELS]; ///< start frequency bin (strtmant) | |||
| int end_freq[AC3_MAX_CHANNELS]; ///< end frequency bin (endmant) | |||
| ///@} | |||
| ///@defgroup rematrixing rematrixing | |||
| ///@name Rematrixing | |||
| int num_rematrixing_bands; ///< number of rematrixing bands (nrematbnd) | |||
| int rematrixing_flags[4]; ///< rematrixing flags (rematflg) | |||
| ///@} | |||
| ///@defgroup exponents exponents | |||
| ///@name Exponents | |||
| int num_exp_groups[AC3_MAX_CHANNELS]; ///< Number of exponent groups (nexpgrp) | |||
| int8_t dexps[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< decoded exponents | |||
| int exp_strategy[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS]; ///< exponent strategies (expstr) | |||
| ///@} | |||
| ///@defgroup bitalloc bit allocation | |||
| ///@name Bit allocation | |||
| AC3BitAllocParameters bit_alloc_params; ///< bit allocation parameters | |||
| int first_cpl_leak; ///< first coupling leak state (firstcplleak) | |||
| int snr_offset[AC3_MAX_CHANNELS]; ///< signal-to-noise ratio offsets (snroffst) | |||
| @@ -177,25 +177,25 @@ typedef struct { | |||
| uint8_t dba_values[AC3_MAX_CHANNELS][8]; ///< delta values for each segment | |||
| ///@} | |||
| ///@defgroup dithering zero-mantissa dithering | |||
| ///@name Zero-mantissa dithering | |||
| int dither_flag[AC3_MAX_CHANNELS]; ///< dither flags (dithflg) | |||
| AVLFG dith_state; ///< for dither generation | |||
| ///@} | |||
| ///@defgroup imdct IMDCT | |||
| ///@name IMDCT | |||
| int block_switch[AC3_MAX_CHANNELS]; ///< block switch flags (blksw) | |||
| FFTContext imdct_512; ///< for 512 sample IMDCT | |||
| FFTContext imdct_256; ///< for 256 sample IMDCT | |||
| ///@} | |||
| ///@defgroup opt optimization | |||
| ///@name Optimization | |||
| DSPContext dsp; ///< for optimization | |||
| AC3DSPContext ac3dsp; | |||
| FmtConvertContext fmt_conv; ///< optimized conversion functions | |||
| float mul_bias; ///< scaling for float_to_int16 conversion | |||
| ///@} | |||
| ///@defgroup arrays aligned arrays | |||
| ///@name Aligned arrays | |||
| DECLARE_ALIGNED(16, int, fixed_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< fixed-point transform coefficients | |||
| DECLARE_ALIGNED(32, float, transform_coeffs)[AC3_MAX_CHANNELS][AC3_MAX_COEFS]; ///< transform coefficients | |||
| DECLARE_ALIGNED(32, float, delay)[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]; ///< delay - added to the next block | |||
| @@ -204,7 +204,7 @@ static enum Mode unpack_bitstream(AMRContext *p, const uint8_t *buf, | |||
| } | |||
| /// @defgroup amr_lpc_decoding AMR pitch LPC coefficient decoding functions | |||
| /// @name AMR pitch LPC coefficient decoding functions | |||
| /// @{ | |||
| /** | |||
| @@ -341,7 +341,7 @@ static void lsf2lsp_3(AMRContext *p) | |||
| /// @} | |||
| /// @defgroup amr_pitch_vector_decoding AMR pitch vector decoding functions | |||
| /// @name AMR pitch vector decoding functions | |||
| /// @{ | |||
| /** | |||
| @@ -403,7 +403,7 @@ static void decode_pitch_vector(AMRContext *p, | |||
| /// @} | |||
| /// @defgroup amr_algebraic_code_book AMR algebraic code book (fixed) vector decoding functions | |||
| /// @name AMR algebraic code book (fixed) vector decoding functions | |||
| /// @{ | |||
| /** | |||
| @@ -547,7 +547,7 @@ static void pitch_sharpening(AMRContext *p, int subframe, enum Mode mode, | |||
| /// @} | |||
| /// @defgroup amr_gain_decoding AMR gain decoding functions | |||
| /// @name AMR gain decoding functions | |||
| /// @{ | |||
| /** | |||
| @@ -633,7 +633,7 @@ static void decode_gains(AMRContext *p, const AMRNBSubframe *amr_subframe, | |||
| /// @} | |||
| /// @defgroup amr_pre_processing AMR pre-processing functions | |||
| /// @name AMR preprocessing functions | |||
| /// @{ | |||
| /** | |||
| @@ -751,7 +751,7 @@ static const float *anti_sparseness(AMRContext *p, AMRFixed *fixed_sparse, | |||
| /// @} | |||
| /// @defgroup amr_synthesis AMR synthesis functions | |||
| /// @name AMR synthesis functions | |||
| /// @{ | |||
| /** | |||
| @@ -812,7 +812,7 @@ static int synthesis(AMRContext *p, float *lpc, | |||
| /// @} | |||
| /// @defgroup amr_update AMR update functions | |||
| /// @name AMR update functions | |||
| /// @{ | |||
| /** | |||
| @@ -837,7 +837,7 @@ static void update_state(AMRContext *p) | |||
| /// @} | |||
| /// @defgroup amr_postproc AMR Post processing functions | |||
| /// @name AMR Postprocessing functions | |||
| /// @{ | |||
| /** | |||
| @@ -217,7 +217,7 @@ static av_cold int ape_decode_close(AVCodecContext * avctx) | |||
| } | |||
| /** | |||
| * @defgroup rangecoder APE range decoder | |||
| * @name APE range decoding functions | |||
| * @{ | |||
| */ | |||
| @@ -25,8 +25,7 @@ | |||
| #include "avcodec.h" | |||
| /** | |||
| * Default values for ASS style. | |||
| * @defgroup ass_default | |||
| * @name Default values for ASS style | |||
| * @{ | |||
| */ | |||
| #define ASS_DEFAULT_FONT "Arial" | |||
| @@ -2535,7 +2535,7 @@ typedef struct AVCodecContext { | |||
| #if FF_API_FLAC_GLOBAL_OPTS | |||
| /** | |||
| * @defgroup flac_opts FLAC options | |||
| * @name FLAC options | |||
| * @deprecated Use FLAC encoder private options instead. | |||
| * @{ | |||
| */ | |||
| @@ -2957,7 +2957,7 @@ typedef struct AVCodec { | |||
| const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} | |||
| /** | |||
| * @defgroup framethreading Frame-level threading support functions. | |||
| * @name Frame-level threading support functions | |||
| * @{ | |||
| */ | |||
| /** | |||
| @@ -3915,7 +3915,7 @@ int av_get_bits_per_sample(enum CodecID codec_id); | |||
| #if FF_API_OLD_SAMPLE_FMT | |||
| /** | |||
| * @deprecated Use av_get_bits_per_sample_fmt() instead. | |||
| * @deprecated Use av_get_bytes_per_sample() instead. | |||
| */ | |||
| attribute_deprecated | |||
| int av_get_bits_per_sample_format(enum AVSampleFormat sample_fmt); | |||
| @@ -335,7 +335,7 @@ static av_cold int cook_decode_close(AVCodecContext *avctx) | |||
| * Fill the gain array for the timedomain quantization. | |||
| * | |||
| * @param gb pointer to the GetBitContext | |||
| * @param gaininfo[9] array of gain indexes | |||
| * @param gaininfo array[9] of gain indexes | |||
| */ | |||
| static void decode_gain_info(GetBitContext *gb, int *gaininfo) | |||
| @@ -1682,7 +1682,7 @@ static av_always_inline void hl_decode_mb_predict_luma(H264Context *h, int mb_ty | |||
| uint64_t tr_high; | |||
| if(dir == DIAG_DOWN_LEFT_PRED || dir == VERT_LEFT_PRED){ | |||
| const int topright_avail= (h->topright_samples_available<<i)&0x8000; | |||
| assert(mb_y || linesize <= block_offset[i]); | |||
| assert(s->mb_y || linesize <= block_offset[i]); | |||
| if(!topright_avail){ | |||
| if (pixel_shift) { | |||
| tr_high= ((uint16_t*)ptr)[3 - linesize/2]*0x0001000100010001ULL; | |||
| @@ -2488,7 +2488,8 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ | |||
| s->dropable= h->nal_ref_idc == 0; | |||
| if((s->avctx->flags2 & CODEC_FLAG2_FAST) && !h->nal_ref_idc){ | |||
| /* FIXME: 2tap qpel isn't implemented for high bit depth. */ | |||
| if((s->avctx->flags2 & CODEC_FLAG2_FAST) && !h->nal_ref_idc && !h->pixel_shift){ | |||
| s->me.qpel_put= s->dsp.put_2tap_qpel_pixels_tab; | |||
| s->me.qpel_avg= s->dsp.avg_2tap_qpel_pixels_tab; | |||
| }else{ | |||
| @@ -507,7 +507,7 @@ typedef struct H264Context{ | |||
| int cabac_init_idc; | |||
| /** | |||
| * @defgroup multithreading Members for slice based multithreading | |||
| * @name Members for slice based multithreading | |||
| * @{ | |||
| */ | |||
| struct H264Context *thread_context[MAX_THREADS]; | |||
| @@ -237,7 +237,6 @@ void FUNCC(ff_h264_idct_add8)(uint8_t **dest, const int *block_offset, DCTELEM * | |||
| } | |||
| /** | |||
| * IDCT transforms the 16 dc values and dequantizes them. | |||
| * @param qp quantization parameter | |||
| */ | |||
| void FUNCC(ff_h264_luma_dc_dequant_idct)(DCTELEM *p_output, DCTELEM *p_input, int qmul){ | |||
| #define stride 16 | |||
| @@ -1,3 +1,21 @@ | |||
| /* | |||
| * This file is part of Libav. | |||
| * | |||
| * Libav is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation; either | |||
| * version 2.1 of the License, or (at your option) any later version. | |||
| * | |||
| * Libav is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
| * Lesser General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Lesser General Public | |||
| * License along with Libav; if not, write to the Free Software | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #include "dsputil.h" | |||
| #ifndef BIT_DEPTH | |||
| @@ -30,6 +30,7 @@ | |||
| #include "avcodec.h" | |||
| #include "bytestream.h" | |||
| #include "vorbis.h" | |||
| #include "libavutil/mathematics.h" | |||
| #undef NDEBUG | |||
| #include <assert.h> | |||
| @@ -31,6 +31,7 @@ | |||
| #include "avcodec.h" | |||
| #include "libavutil/base64.h" | |||
| #include "libavutil/opt.h" | |||
| #include "libavutil/mathematics.h" | |||
| /** | |||
| * Portion of struct vpx_codec_cx_pkt from vpx_encoder.h. | |||
| @@ -30,6 +30,7 @@ | |||
| #include "avcodec.h" | |||
| #include "libavutil/cpu.h" | |||
| #include "libavutil/intreadwrite.h" | |||
| #include "libavutil/mathematics.h" | |||
| #include "libxvid_internal.h" | |||
| #if !HAVE_MKSTEMP | |||
| #include <fcntl.h> | |||
| @@ -992,8 +992,8 @@ static av_always_inline int diamond_search(MpegEncContext * s, int *best, int dm | |||
| return var_diamond_search(s, best, dmin, src_index, ref_index, penalty_factor, size, h, flags); | |||
| } | |||
| /*! | |||
| \param P[10][2] a list of candidate mvs to check before starting the | |||
| /** | |||
| @param P a list of candidate mvs to check before starting the | |||
| iterative search. If one of the candidates is close to the optimal mv, then | |||
| it takes fewer iterations. And it increases the chance that we find the | |||
| optimal mv. | |||
| @@ -1,3 +1,21 @@ | |||
| /* | |||
| * This file is part of Libav. | |||
| * | |||
| * Libav is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation; either | |||
| * version 2.1 of the License, or (at your option) any later version. | |||
| * | |||
| * Libav is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
| * Lesser General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU Lesser General Public | |||
| * License along with Libav; if not, write to the Free Software | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| /** | |||
| * @file | |||
| * This header is provided for compatibility only and will be removed | |||
| @@ -408,9 +408,10 @@ static void release_delayed_buffers(PerThreadContext *p) | |||
| FrameThreadContext *fctx = p->parent; | |||
| while (p->num_released_buffers > 0) { | |||
| AVFrame *f = &p->released_buffers[--p->num_released_buffers]; | |||
| AVFrame *f; | |||
| pthread_mutex_lock(&fctx->buffer_mutex); | |||
| f = &p->released_buffers[--p->num_released_buffers]; | |||
| free_progress(f); | |||
| f->thread_opaque = NULL; | |||
| @@ -746,9 +747,12 @@ void ff_thread_flush(AVCodecContext *avctx) | |||
| if (!avctx->thread_opaque) return; | |||
| park_frame_worker_threads(fctx, avctx->thread_count); | |||
| if (fctx->prev_thread) | |||
| update_context_from_thread(fctx->threads->avctx, fctx->prev_thread->avctx, 0); | |||
| if (fctx->prev_thread) { | |||
| if (fctx->prev_thread != &fctx->threads[0]) | |||
| update_context_from_thread(fctx->threads[0].avctx, fctx->prev_thread->avctx, 0); | |||
| if (avctx->codec->flush) | |||
| avctx->codec->flush(fctx->threads[0].avctx); | |||
| } | |||
| fctx->next_decoding = fctx->next_finished = 0; | |||
| fctx->delaying = 1; | |||
| @@ -836,6 +840,7 @@ int ff_thread_get_buffer(AVCodecContext *avctx, AVFrame *f) | |||
| void ff_thread_release_buffer(AVCodecContext *avctx, AVFrame *f) | |||
| { | |||
| PerThreadContext *p = avctx->thread_opaque; | |||
| FrameThreadContext *fctx; | |||
| if (!(avctx->active_thread_type&FF_THREAD_FRAME)) { | |||
| avctx->release_buffer(avctx, f); | |||
| @@ -851,7 +856,10 @@ void ff_thread_release_buffer(AVCodecContext *avctx, AVFrame *f) | |||
| av_log(avctx, AV_LOG_DEBUG, "thread_release_buffer called on pic %p, %d buffers used\n", | |||
| f, f->owner->internal_buffer_count); | |||
| fctx = p->parent; | |||
| pthread_mutex_lock(&fctx->buffer_mutex); | |||
| p->released_buffers[p->num_released_buffers++] = *f; | |||
| pthread_mutex_unlock(&fctx->buffer_mutex); | |||
| memset(f->data, 0, sizeof(f->data)); | |||
| } | |||
| @@ -38,14 +38,14 @@ | |||
| * QCELP unpacked data frame | |||
| */ | |||
| typedef struct { | |||
| /// @defgroup qcelp_codebook_parameters QCELP excitation codebook parameters | |||
| /// @name QCELP excitation codebook parameters | |||
| /// @{ | |||
| uint8_t cbsign[16]; ///!< sign of the codebook gain for each codebook subframe | |||
| uint8_t cbgain[16]; ///!< unsigned codebook gain for each codebook subframe | |||
| uint8_t cindex[16]; ///!< codebook index for each codebook subframe | |||
| /// @} | |||
| /// @defgroup qcelp_pitch_parameters QCELP pitch prediction parameters | |||
| /// @name QCELP pitch prediction parameters | |||
| /// @{ | |||
| uint8_t plag[4]; ///!< pitch lag for each pitch subframe | |||
| uint8_t pfrac[4]; ///!< fractional pitch lag for each pitch subframe | |||
| @@ -62,8 +62,10 @@ static const int rv34_mb_type_to_lavc[12] = { | |||
| static RV34VLC intra_vlcs[NUM_INTRA_TABLES], inter_vlcs[NUM_INTER_TABLES]; | |||
| static int rv34_decode_mv(RV34DecContext *r, int block_type); | |||
| /** | |||
| * @defgroup vlc RV30/40 VLC generating functions | |||
| * @name RV30/40 VLC generating functions | |||
| * @{ | |||
| */ | |||
| @@ -171,7 +173,7 @@ static av_cold void rv34_init_tables(void) | |||
| /** | |||
| * @defgroup transform RV30/40 inverse transform functions | |||
| * @name RV30/40 inverse transform functions | |||
| * @{ | |||
| */ | |||
| @@ -246,7 +248,7 @@ static void rv34_inv_transform_noround(DCTELEM *block){ | |||
| /** | |||
| * @defgroup block RV30/40 4x4 block decoding functions | |||
| * @name RV30/40 4x4 block decoding functions | |||
| * @{ | |||
| */ | |||
| @@ -393,7 +395,7 @@ static inline void rv34_dequant4x4_16x16(DCTELEM *block, int Qdc, int Q) | |||
| /** | |||
| * @defgroup rv3040_bitstream RV30/40 bitstream parsing | |||
| * @name RV30/40 bitstream parsing | |||
| * @{ | |||
| */ | |||
| @@ -432,10 +434,76 @@ static inline int rv34_decode_dquant(GetBitContext *gb, int quant) | |||
| return get_bits(gb, 5); | |||
| } | |||
| /** | |||
| * Decode macroblock header and return CBP in case of success, -1 otherwise. | |||
| */ | |||
| static int rv34_decode_mb_header(RV34DecContext *r, int8_t *intra_types) | |||
| { | |||
| MpegEncContext *s = &r->s; | |||
| GetBitContext *gb = &s->gb; | |||
| int mb_pos = s->mb_x + s->mb_y * s->mb_stride; | |||
| int i, t; | |||
| if(!r->si.type){ | |||
| r->is16 = get_bits1(gb); | |||
| if(!r->is16 && !r->rv30){ | |||
| if(!get_bits1(gb)) | |||
| av_log(s->avctx, AV_LOG_ERROR, "Need DQUANT\n"); | |||
| } | |||
| s->current_picture_ptr->mb_type[mb_pos] = r->is16 ? MB_TYPE_INTRA16x16 : MB_TYPE_INTRA; | |||
| r->block_type = r->is16 ? RV34_MB_TYPE_INTRA16x16 : RV34_MB_TYPE_INTRA; | |||
| }else{ | |||
| r->block_type = r->decode_mb_info(r); | |||
| if(r->block_type == -1) | |||
| return -1; | |||
| s->current_picture_ptr->mb_type[mb_pos] = rv34_mb_type_to_lavc[r->block_type]; | |||
| r->mb_type[mb_pos] = r->block_type; | |||
| if(r->block_type == RV34_MB_SKIP){ | |||
| if(s->pict_type == AV_PICTURE_TYPE_P) | |||
| r->mb_type[mb_pos] = RV34_MB_P_16x16; | |||
| if(s->pict_type == AV_PICTURE_TYPE_B) | |||
| r->mb_type[mb_pos] = RV34_MB_B_DIRECT; | |||
| } | |||
| r->is16 = !!IS_INTRA16x16(s->current_picture_ptr->mb_type[mb_pos]); | |||
| rv34_decode_mv(r, r->block_type); | |||
| if(r->block_type == RV34_MB_SKIP){ | |||
| fill_rectangle(intra_types, 4, 4, r->intra_types_stride, 0, sizeof(intra_types[0])); | |||
| return 0; | |||
| } | |||
| r->chroma_vlc = 1; | |||
| r->luma_vlc = 0; | |||
| } | |||
| if(IS_INTRA(s->current_picture_ptr->mb_type[mb_pos])){ | |||
| if(r->is16){ | |||
| t = get_bits(gb, 2); | |||
| fill_rectangle(intra_types, 4, 4, r->intra_types_stride, t, sizeof(intra_types[0])); | |||
| r->luma_vlc = 2; | |||
| }else{ | |||
| if(r->decode_intra_types(r, gb, intra_types) < 0) | |||
| return -1; | |||
| r->luma_vlc = 1; | |||
| } | |||
| r->chroma_vlc = 0; | |||
| r->cur_vlcs = choose_vlc_set(r->si.quant, r->si.vlc_set, 0); | |||
| }else{ | |||
| for(i = 0; i < 16; i++) | |||
| intra_types[(i & 3) + (i>>2) * r->intra_types_stride] = 0; | |||
| r->cur_vlcs = choose_vlc_set(r->si.quant, r->si.vlc_set, 1); | |||
| if(r->mb_type[mb_pos] == RV34_MB_P_MIX16x16){ | |||
| r->is16 = 1; | |||
| r->chroma_vlc = 1; | |||
| r->luma_vlc = 2; | |||
| r->cur_vlcs = choose_vlc_set(r->si.quant, r->si.vlc_set, 0); | |||
| } | |||
| } | |||
| return rv34_decode_cbp(gb, r->cur_vlcs, r->is16); | |||
| } | |||
| /** @} */ //bitstream functions | |||
| /** | |||
| * @defgroup mv motion vector related code (prediction, reconstruction, motion compensation) | |||
| * @name motion vector related code (prediction, reconstruction, motion compensation) | |||
| * @{ | |||
| */ | |||
| @@ -885,7 +953,7 @@ static int rv34_decode_mv(RV34DecContext *r, int block_type) | |||
| /** @} */ // mv group | |||
| /** | |||
| * @defgroup recons Macroblock reconstruction functions | |||
| * @name Macroblock reconstruction functions | |||
| * @{ | |||
| */ | |||
| /** mapping of RV30/40 intra prediction types to standard H.264 types */ | |||
| @@ -1027,79 +1095,6 @@ static void rv34_output_macroblock(RV34DecContext *r, int8_t *intra_types, int c | |||
| } | |||
| } | |||
| /** @} */ // recons group | |||
| /** | |||
| * @addtogroup bitstream | |||
| * Decode macroblock header and return CBP in case of success, -1 otherwise. | |||
| */ | |||
| static int rv34_decode_mb_header(RV34DecContext *r, int8_t *intra_types) | |||
| { | |||
| MpegEncContext *s = &r->s; | |||
| GetBitContext *gb = &s->gb; | |||
| int mb_pos = s->mb_x + s->mb_y * s->mb_stride; | |||
| int i, t; | |||
| if(!r->si.type){ | |||
| r->is16 = get_bits1(gb); | |||
| if(!r->is16 && !r->rv30){ | |||
| if(!get_bits1(gb)) | |||
| av_log(s->avctx, AV_LOG_ERROR, "Need DQUANT\n"); | |||
| } | |||
| s->current_picture_ptr->mb_type[mb_pos] = r->is16 ? MB_TYPE_INTRA16x16 : MB_TYPE_INTRA; | |||
| r->block_type = r->is16 ? RV34_MB_TYPE_INTRA16x16 : RV34_MB_TYPE_INTRA; | |||
| }else{ | |||
| r->block_type = r->decode_mb_info(r); | |||
| if(r->block_type == -1) | |||
| return -1; | |||
| s->current_picture_ptr->mb_type[mb_pos] = rv34_mb_type_to_lavc[r->block_type]; | |||
| r->mb_type[mb_pos] = r->block_type; | |||
| if(r->block_type == RV34_MB_SKIP){ | |||
| if(s->pict_type == AV_PICTURE_TYPE_P) | |||
| r->mb_type[mb_pos] = RV34_MB_P_16x16; | |||
| if(s->pict_type == AV_PICTURE_TYPE_B) | |||
| r->mb_type[mb_pos] = RV34_MB_B_DIRECT; | |||
| } | |||
| r->is16 = !!IS_INTRA16x16(s->current_picture_ptr->mb_type[mb_pos]); | |||
| rv34_decode_mv(r, r->block_type); | |||
| if(r->block_type == RV34_MB_SKIP){ | |||
| fill_rectangle(intra_types, 4, 4, r->intra_types_stride, 0, sizeof(intra_types[0])); | |||
| return 0; | |||
| } | |||
| r->chroma_vlc = 1; | |||
| r->luma_vlc = 0; | |||
| } | |||
| if(IS_INTRA(s->current_picture_ptr->mb_type[mb_pos])){ | |||
| if(r->is16){ | |||
| t = get_bits(gb, 2); | |||
| fill_rectangle(intra_types, 4, 4, r->intra_types_stride, t, sizeof(intra_types[0])); | |||
| r->luma_vlc = 2; | |||
| }else{ | |||
| if(r->decode_intra_types(r, gb, intra_types) < 0) | |||
| return -1; | |||
| r->luma_vlc = 1; | |||
| } | |||
| r->chroma_vlc = 0; | |||
| r->cur_vlcs = choose_vlc_set(r->si.quant, r->si.vlc_set, 0); | |||
| }else{ | |||
| for(i = 0; i < 16; i++) | |||
| intra_types[(i & 3) + (i>>2) * r->intra_types_stride] = 0; | |||
| r->cur_vlcs = choose_vlc_set(r->si.quant, r->si.vlc_set, 1); | |||
| if(r->mb_type[mb_pos] == RV34_MB_P_MIX16x16){ | |||
| r->is16 = 1; | |||
| r->chroma_vlc = 1; | |||
| r->luma_vlc = 2; | |||
| r->cur_vlcs = choose_vlc_set(r->si.quant, r->si.vlc_set, 0); | |||
| } | |||
| } | |||
| return rv34_decode_cbp(gb, r->cur_vlcs, r->is16); | |||
| } | |||
| /** | |||
| * @addtogroup recons | |||
| * @{ | |||
| */ | |||
| /** | |||
| * mask for retrieving all bits in coded block pattern | |||
| * corresponding to one 8x8 block | |||
| @@ -1109,6 +1104,8 @@ static int rv34_decode_mb_header(RV34DecContext *r, int8_t *intra_types) | |||
| #define U_CBP_MASK 0x0F0000 | |||
| #define V_CBP_MASK 0xF00000 | |||
| /** @} */ // recons group | |||
| static void rv34_apply_differences(RV34DecContext *r, int cbp) | |||
| { | |||
| @@ -65,7 +65,7 @@ static const uint8_t rv40_luma_dc_quant[2][32] = { | |||
| }; | |||
| /** | |||
| * @defgroup loopfilter coefficients used by the RV40 loop filter | |||
| * @name Coefficients used by the RV40 loop filter | |||
| * @{ | |||
| */ | |||
| /** | |||
| @@ -42,7 +42,7 @@ typedef struct { | |||
| uint8_t bs_xover_band; | |||
| /** | |||
| * @defgroup bs_header_extra_1 Variables associated with bs_header_extra_1 | |||
| * @name Variables associated with bs_header_extra_1 | |||
| * @{ | |||
| */ | |||
| uint8_t bs_freq_scale; | |||
| @@ -58,7 +58,7 @@ typedef struct { | |||
| */ | |||
| typedef struct { | |||
| /** | |||
| * @defgroup aac_bitstream Main bitstream data variables | |||
| * @name Main bitstream data variables | |||
| * @{ | |||
| */ | |||
| unsigned bs_frame_class; | |||
| @@ -74,7 +74,7 @@ typedef struct { | |||
| /** @} */ | |||
| /** | |||
| * @defgroup state State variables | |||
| * @name State variables | |||
| * @{ | |||
| */ | |||
| DECLARE_ALIGNED(16, float, synthesis_filterbank_samples)[SBR_SYNTHESIS_BUF_SIZE]; | |||
| @@ -116,7 +116,7 @@ typedef struct { | |||
| SpectrumParameters spectrum_params; | |||
| int bs_amp_res_header; | |||
| /** | |||
| * @defgroup bs_header_extra_2 variables associated with bs_header_extra_2 | |||
| * @name Variables associated with bs_header_extra_2 | |||
| * @{ | |||
| */ | |||
| unsigned bs_limiter_bands; | |||
| @@ -56,8 +56,7 @@ void write_##type##_2d_array(const void *arg, int len, int len2)\ | |||
| } | |||
| /** | |||
| * \defgroup printfuncs Predefined functions for printing tables | |||
| * | |||
| * @name Predefined functions for printing tables | |||
| * \{ | |||
| */ | |||
| void write_int8_t_array (const int8_t *, int); | |||
| @@ -142,6 +142,10 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, int l | |||
| case PIX_FMT_YUV420P10BE: | |||
| case PIX_FMT_YUV422P10LE: | |||
| case PIX_FMT_YUV422P10BE: | |||
| case PIX_FMT_YUV444P9LE: | |||
| case PIX_FMT_YUV444P9BE: | |||
| case PIX_FMT_YUV444P10LE: | |||
| case PIX_FMT_YUV444P10BE: | |||
| w_align= 16; //FIXME check for non mpeg style codecs and use less alignment | |||
| h_align= 16; | |||
| if(s->codec_id == CODEC_ID_MPEG2VIDEO || s->codec_id == CODEC_ID_MJPEG || s->codec_id == CODEC_ID_AMV || s->codec_id == CODEC_ID_THP || s->codec_id == CODEC_ID_H264) | |||
| @@ -1133,7 +1137,7 @@ void avcodec_flush_buffers(AVCodecContext *avctx) | |||
| { | |||
| if(HAVE_PTHREADS && avctx->active_thread_type&FF_THREAD_FRAME) | |||
| ff_thread_flush(avctx); | |||
| if(avctx->codec->flush) | |||
| else if(avctx->codec->flush) | |||
| avctx->codec->flush(avctx); | |||
| } | |||
| @@ -40,7 +40,7 @@ | |||
| /***********************************************************************/ | |||
| /** | |||
| * @defgroup vc1bitplane VC-1 Bitplane decoding | |||
| * @name VC-1 Bitplane decoding | |||
| * @see 8.7, p56 | |||
| * @{ | |||
| */ | |||
| @@ -137,7 +137,7 @@ static int vc1_init_common(VC1Context *v) | |||
| /***********************************************************************/ | |||
| /** | |||
| * @defgroup vc1bitplane VC-1 Bitplane decoding | |||
| * @name VC-1 Bitplane decoding | |||
| * @see 8.7, p56 | |||
| * @{ | |||
| */ | |||
| @@ -774,7 +774,7 @@ static void vc1_mc_4mv_chroma(VC1Context *v) | |||
| /***********************************************************************/ | |||
| /** | |||
| * @defgroup vc1block VC-1 Block-level functions | |||
| * @name VC-1 Block-level functions | |||
| * @see 7.1.4, p91 and 8.1.1.7, p(1)04 | |||
| * @{ | |||
| */ | |||
| @@ -1512,7 +1512,7 @@ static inline int vc1_pred_dc(MpegEncContext *s, int overlap, int pq, int n, | |||
| /** @} */ // Block group | |||
| /** | |||
| * @defgroup vc1_std_mb VC1 Macroblock-level functions in Simple/Main Profiles | |||
| * @name VC1 Macroblock-level functions in Simple/Main Profiles | |||
| * @see 7.1.4, p91 and 8.1.1.7, p(1)04 | |||
| * @{ | |||
| */ | |||
| @@ -641,8 +641,6 @@ void decode_mb_mode(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, uint8_ | |||
| * @param block destination for block coefficients | |||
| * @param probs probabilities to use when reading trees from the bitstream | |||
| * @param i initial coeff index, 0 unless a separate DC block is coded | |||
| * @param zero_nhood the initial prediction context for number of surrounding | |||
| * all-zero blocks (only left/top, so 0-2) | |||
| * @param qmul array holding the dc/ac dequant factor at position 0/1 | |||
| * @return 0 if no coeffs were decoded | |||
| * otherwise, the index of the last coeff decoded plus one | |||
| @@ -701,6 +699,17 @@ skip_eob: | |||
| } | |||
| #endif | |||
| /** | |||
| * @param c arithmetic bitstream reader context | |||
| * @param block destination for block coefficients | |||
| * @param probs probabilities to use when reading trees from the bitstream | |||
| * @param i initial coeff index, 0 unless a separate DC block is coded | |||
| * @param zero_nhood the initial prediction context for number of surrounding | |||
| * all-zero blocks (only left/top, so 0-2) | |||
| * @param qmul array holding the dc/ac dequant factor at position 0/1 | |||
| * @return 0 if no coeffs were decoded | |||
| * otherwise, the index of the last coeff decoded plus one | |||
| */ | |||
| static av_always_inline | |||
| int decode_block_coeffs(VP56RangeCoder *c, DCTELEM block[16], | |||
| uint8_t probs[16][3][NUM_DCT_TOKENS-1], | |||
| @@ -1034,10 +1043,9 @@ static const uint8_t subpel_idx[3][8] = { | |||
| }; | |||
| /** | |||
| * Generic MC function. | |||
| * luma MC function | |||
| * | |||
| * @param s VP8 decoding context | |||
| * @param luma 1 for luma (Y) planes, 0 for chroma (Cb/Cr) planes | |||
| * @param dst target buffer for block data at block position | |||
| * @param src reference picture buffer at origin (0, 0) | |||
| * @param mv motion vector (relative to block position) to get pixel data from | |||
| @@ -1083,6 +1091,23 @@ void vp8_mc_luma(VP8Context *s, uint8_t *dst, AVFrame *ref, const VP56mv *mv, | |||
| } | |||
| } | |||
| /** | |||
| * chroma MC function | |||
| * | |||
| * @param s VP8 decoding context | |||
| * @param dst1 target buffer for block data at block position (U plane) | |||
| * @param dst2 target buffer for block data at block position (V plane) | |||
| * @param ref reference picture buffer at origin (0, 0) | |||
| * @param mv motion vector (relative to block position) to get pixel data from | |||
| * @param x_off horizontal position of block from origin (0, 0) | |||
| * @param y_off vertical position of block from origin (0, 0) | |||
| * @param block_w width of block (16, 8 or 4) | |||
| * @param block_h height of block (always same as block_w) | |||
| * @param width width of src/dst plane data | |||
| * @param height height of src/dst plane data | |||
| * @param linesize size of a single line of plane data, including padding | |||
| * @param mc_func motion compensation function pointers (bilinear or sixtap MC) | |||
| */ | |||
| static av_always_inline | |||
| void vp8_mc_chroma(VP8Context *s, uint8_t *dst1, uint8_t *dst2, AVFrame *ref, | |||
| const VP56mv *mv, int x_off, int y_off, | |||
| @@ -128,9 +128,7 @@ static const struct frame_type_desc { | |||
| */ | |||
| typedef struct { | |||
| /** | |||
| * @defgroup struct_global Global values | |||
| * Global values, specified in the stream header / extradata or used | |||
| * all over. | |||
| * @name Global values specified in the stream header / extradata or used all over. | |||
| * @{ | |||
| */ | |||
| GetBitContext gb; ///< packet bitreader. During decoder init, | |||
| @@ -182,8 +180,9 @@ typedef struct { | |||
| /** | |||
| * @} | |||
| * @defgroup struct_packet Packet values | |||
| * Packet values, specified in the packet header or related to a packet. | |||
| * | |||
| * @name Packet values specified in the packet header or related to a packet. | |||
| * | |||
| * A packet is considered to be a single unit of data provided to this | |||
| * decoder by the demuxer. | |||
| * @{ | |||
| @@ -213,7 +212,8 @@ typedef struct { | |||
| /** | |||
| * @} | |||
| * @defgroup struct_frame Frame and superframe values | |||
| * | |||
| * @name Frame and superframe values | |||
| * Superframe and frame data - these can change from frame to frame, | |||
| * although some of them do in that case serve as a cache / history for | |||
| * the next frame or superframe. | |||
| @@ -256,7 +256,9 @@ typedef struct { | |||
| float synth_history[MAX_LSPS]; ///< see #excitation_history | |||
| /** | |||
| * @} | |||
| * @defgroup post_filter Postfilter values | |||
| * | |||
| * @name Postfilter values | |||
| * | |||
| * Variables used for postfilter implementation, mostly history for | |||
| * smoothing and so on, and context variables for FFT/iFFT. | |||
| * @{ | |||
| @@ -432,7 +434,7 @@ static av_cold int wmavoice_decode_init(AVCodecContext *ctx) | |||
| } | |||
| /** | |||
| * @defgroup postfilter Postfilter functions | |||
| * @name Postfilter functions | |||
| * Postfilter functions (gain control, wiener denoise filter, DC filter, | |||
| * kalman smoothening, plus surrounding code to wrap it) | |||
| * @{ | |||
| @@ -825,7 +827,7 @@ static void dequant_lsps(double *lsps, int num, | |||
| } | |||
| /** | |||
| * @defgroup lsp_dequant LSP dequantization routines | |||
| * @name LSP dequantization routines | |||
| * LSP dequantization routines, for 10/16LSPs and independent/residual coding. | |||
| * @note we assume enough bits are available, caller should check. | |||
| * lsp10i() consumes 24 bits; lsp10r() consumes an additional 24 bits; | |||
| @@ -969,7 +971,7 @@ static void dequant_lsp16r(GetBitContext *gb, | |||
| /** | |||
| * @} | |||
| * @defgroup aw Pitch-adaptive window coding functions | |||
| * @name Pitch-adaptive window coding functions | |||
| * The next few functions are for pitch-adaptive window coding. | |||
| * @{ | |||
| */ | |||
| @@ -1,19 +1,21 @@ | |||
| /* | |||
| * Copyright (C) 2009 Loren Merritt <lorenm@u.washignton.edu> | |||
| * | |||
| * This file is part of FFmpeg. | |||
| * | |||
| * FFmpeg is free software; you can redistribute it and/or modify | |||
| * it under the terms of the GNU General Public License as published by | |||
| * the Free Software Foundation; either version 2 of the License, or | |||
| * (at your option) any later version. | |||
| * FFmpeg is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation; either | |||
| * version 2.1 of the License, or (at your option) any later version. | |||
| * | |||
| * FFmpeg is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
| * Lesser General Public License for more details. | |||
| * | |||
| * You should have received a copy of the GNU General Public License along | |||
| * with FFmpeg; if not, write to the Free Software Foundation, Inc., | |||
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |||
| * You should have received a copy of the GNU Lesser General Public | |||
| * License along with FFmpeg; if not, write to the Free Software | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #include "libavutil/cpu.h" | |||
| @@ -48,63 +48,70 @@ const char *avformat_license(void); | |||
| struct AVFormatContext; | |||
| /* | |||
| * Public Metadata API. | |||
| /** | |||
| * @defgroup metadata_api Public Metadata API | |||
| * @{ | |||
| * The metadata API allows libavformat to export metadata tags to a client | |||
| * application using a sequence of key/value pairs. Like all strings in FFmpeg, | |||
| * metadata must be stored as UTF-8 encoded Unicode. Note that metadata | |||
| * exported by demuxers isn't checked to be valid UTF-8 in most cases. | |||
| * Important concepts to keep in mind: | |||
| * 1. Keys are unique; there can never be 2 tags with the same key. This is | |||
| * - Keys are unique; there can never be 2 tags with the same key. This is | |||
| * also meant semantically, i.e., a demuxer should not knowingly produce | |||
| * several keys that are literally different but semantically identical. | |||
| * E.g., key=Author5, key=Author6. In this example, all authors must be | |||
| * placed in the same tag. | |||
| * 2. Metadata is flat, not hierarchical; there are no subtags. If you | |||
| * - Metadata is flat, not hierarchical; there are no subtags. If you | |||
| * want to store, e.g., the email address of the child of producer Alice | |||
| * and actor Bob, that could have key=alice_and_bobs_childs_email_address. | |||
| * 3. Several modifiers can be applied to the tag name. This is done by | |||
| * - Several modifiers can be applied to the tag name. This is done by | |||
| * appending a dash character ('-') and the modifier name in the order | |||
| * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. | |||
| * a) language -- a tag whose value is localized for a particular language | |||
| * - language -- a tag whose value is localized for a particular language | |||
| * is appended with the ISO 639-2/B 3-letter language code. | |||
| * For example: Author-ger=Michael, Author-eng=Mike | |||
| * The original/default language is in the unqualified "Author" tag. | |||
| * A demuxer should set a default if it sets any translated tag. | |||
| * b) sorting -- a modified version of a tag that should be used for | |||
| * - sorting -- a modified version of a tag that should be used for | |||
| * sorting will have '-sort' appended. E.g. artist="The Beatles", | |||
| * artist-sort="Beatles, The". | |||
| * | |||
| * 4. Demuxers attempt to export metadata in a generic format, however tags | |||
| * - Demuxers attempt to export metadata in a generic format, however tags | |||
| * with no generic equivalents are left as they are stored in the container. | |||
| * Follows a list of generic tag names: | |||
| * | |||
| * album -- name of the set this work belongs to | |||
| * album_artist -- main creator of the set/album, if different from artist. | |||
| * e.g. "Various Artists" for compilation albums. | |||
| * artist -- main creator of the work | |||
| * comment -- any additional description of the file. | |||
| * composer -- who composed the work, if different from artist. | |||
| * copyright -- name of copyright holder. | |||
| * creation_time-- date when the file was created, preferably in ISO 8601. | |||
| * date -- date when the work was created, preferably in ISO 8601. | |||
| * disc -- number of a subset, e.g. disc in a multi-disc collection. | |||
| * encoder -- name/settings of the software/hardware that produced the file. | |||
| * encoded_by -- person/group who created the file. | |||
| * filename -- original name of the file. | |||
| * genre -- <self-evident>. | |||
| * language -- main language in which the work is performed, preferably | |||
| * in ISO 639-2 format. Multiple languages can be specified by | |||
| * separating them with commas. | |||
| * performer -- artist who performed the work, if different from artist. | |||
| * E.g for "Also sprach Zarathustra", artist would be "Richard | |||
| * Strauss" and performer "London Philharmonic Orchestra". | |||
| * publisher -- name of the label/publisher. | |||
| * service_name -- name of the service in broadcasting (channel name). | |||
| * service_provider -- name of the service provider in broadcasting. | |||
| * title -- name of the work. | |||
| * track -- number of this work in the set, can be in form current/total. | |||
| * variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of | |||
| @verbatim | |||
| album -- name of the set this work belongs to | |||
| album_artist -- main creator of the set/album, if different from artist. | |||
| e.g. "Various Artists" for compilation albums. | |||
| artist -- main creator of the work | |||
| comment -- any additional description of the file. | |||
| composer -- who composed the work, if different from artist. | |||
| copyright -- name of copyright holder. | |||
| creation_time-- date when the file was created, preferably in ISO 8601. | |||
| date -- date when the work was created, preferably in ISO 8601. | |||
| disc -- number of a subset, e.g. disc in a multi-disc collection. | |||
| encoder -- name/settings of the software/hardware that produced the file. | |||
| encoded_by -- person/group who created the file. | |||
| filename -- original name of the file. | |||
| genre -- <self-evident>. | |||
| language -- main language in which the work is performed, preferably | |||
| in ISO 639-2 format. Multiple languages can be specified by | |||
| separating them with commas. | |||
| performer -- artist who performed the work, if different from artist. | |||
| E.g for "Also sprach Zarathustra", artist would be "Richard | |||
| Strauss" and performer "London Philharmonic Orchestra". | |||
| publisher -- name of the label/publisher. | |||
| service_name -- name of the service in broadcasting (channel name). | |||
| service_provider -- name of the service provider in broadcasting. | |||
| title -- name of the work. | |||
| track -- number of this work in the set, can be in form current/total. | |||
| variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of | |||
| @endverbatim | |||
| * | |||
| * Look in the examples section for an application example how to use the Metadata API. | |||
| * | |||
| * @} | |||
| */ | |||
| #if FF_API_OLD_METADATA2 | |||
| @@ -145,7 +145,7 @@ typedef struct URLPollEntry { | |||
| attribute_deprecated int url_poll(URLPollEntry *poll_table, int n, int timeout); | |||
| /** | |||
| * @defgroup open_modes URL open modes | |||
| * @name URL open modes | |||
| * The flags argument to url_open and cosins must be one of the following | |||
| * constants, optionally ORed with other flags. | |||
| * @{ | |||
| @@ -176,7 +176,7 @@ extern URLInterruptCB *url_interrupt_cb; | |||
| /** | |||
| * @defgroup old_url_funcs Old url_* functions | |||
| * @deprecated use the buffered API based on AVIOContext instead | |||
| * The following functions are deprecated. Use the buffered API based on #AVIOContext instead. | |||
| * @{ | |||
| */ | |||
| attribute_deprecated int url_open_protocol (URLContext **puc, struct URLProtocol *up, | |||
| @@ -236,7 +236,7 @@ attribute_deprecated AVIOContext *av_alloc_put_byte( | |||
| /** | |||
| * @defgroup old_avio_funcs Old put_/get_*() functions | |||
| * @deprecated use the avio_ -prefixed functions instead. | |||
| * The following functions are deprecated. Use the "avio_"-prefixed functions instead. | |||
| * @{ | |||
| */ | |||
| attribute_deprecated int get_buffer(AVIOContext *s, unsigned char *buf, int size); | |||
| @@ -273,7 +273,7 @@ attribute_deprecated int64_t av_url_read_fseek (AVIOContext *h, int stream_in | |||
| /** | |||
| * @defgroup old_url_f_funcs Old url_f* functions | |||
| * @deprecated use the avio_ -prefixed functions instead. | |||
| * The following functions are deprecated, use the "avio_"-prefixed functions instead. | |||
| * @{ | |||
| */ | |||
| attribute_deprecated int url_fopen( AVIOContext **s, const char *url, int flags); | |||
| @@ -479,7 +479,7 @@ void avio_flush(AVIOContext *s); | |||
| int avio_read(AVIOContext *s, unsigned char *buf, int size); | |||
| /** | |||
| * @defgroup avio_read Functions for reading from AVIOContext. | |||
| * @name Functions for reading from AVIOContext | |||
| * @{ | |||
| * | |||
| * @note return 0 if EOF, so you cannot use it if EOF handling is | |||
| @@ -523,7 +523,7 @@ int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); | |||
| /** | |||
| * @defgroup open_modes URL open modes | |||
| * @name URL open modes | |||
| * The flags argument to avio_open must be one of the following | |||
| * constants, optionally ORed with other flags. | |||
| * @{ | |||
| @@ -155,14 +155,14 @@ void ff_put_v(AVIOContext *bc, uint64_t val); | |||
| /** | |||
| * Read a whole line of text from AVIOContext. Stop reading after reaching | |||
| * either a \n, a \0 or EOF. The returned string is always \0 terminated, | |||
| * either a \\n, a \\0 or EOF. The returned string is always \\0-terminated, | |||
| * and may be truncated if the buffer is too small. | |||
| * | |||
| * @param s the read-only AVIOContext | |||
| * @param buf buffer to store the read line | |||
| * @param maxlen size of the buffer | |||
| * @return the length of the string written in the buffer, not including the | |||
| * final \0 | |||
| * final \\0 | |||
| */ | |||
| int ff_get_line(AVIOContext *s, char *buf, int maxlen); | |||
| @@ -246,7 +246,7 @@ const AVCodecTag codec_movaudio_tags[] = { | |||
| { CODEC_ID_AC3, MKTAG('a', 'c', '-', '3') }, /* ETSI TS 102 366 Annex F */ | |||
| { CODEC_ID_AC3, MKTAG('s', 'a', 'c', '3') }, /* Nero Recode */ | |||
| { CODEC_ID_DTS, MKTAG('d', 't', 's', 'c') }, /* mp4ra.org */ | |||
| { CODEC_ID_DTS, MKTAG('D', 'T', 'S', ' ') }, /* non standard */ | |||
| { CODEC_ID_DTS, MKTAG('D', 'T', 'S', ' ') }, /* non-standard */ | |||
| { CODEC_ID_AMR_NB, MKTAG('s', 'a', 'm', 'r') }, /* AMR-NB 3gp */ | |||
| { CODEC_ID_AMR_WB, MKTAG('s', 'a', 'w', 'b') }, /* AMR-WB 3gp */ | |||
| @@ -928,6 +928,8 @@ static int matroska_probe(AVProbeData *p) | |||
| * Not fully fool-proof, but good enough. */ | |||
| for (i = 0; i < FF_ARRAY_ELEMS(matroska_doctypes); i++) { | |||
| int probelen = strlen(matroska_doctypes[i]); | |||
| if (total < probelen) | |||
| continue; | |||
| for (n = 4+size; n <= 4+size+total-probelen; n++) | |||
| if (!memcmp(p->buf+n, matroska_doctypes[i], probelen)) | |||
| return AVPROBE_SCORE_MAX; | |||
| @@ -1959,6 +1961,7 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, | |||
| if ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) { | |||
| avio_seek(s->pb, st->index_entries[st->nb_index_entries-1].pos, SEEK_SET); | |||
| matroska->current_id = 0; | |||
| while ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) { | |||
| matroska_clear_queue(matroska); | |||
| if (matroska_parse_cluster(matroska) < 0) | |||
| @@ -1987,6 +1990,7 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, | |||
| } | |||
| avio_seek(s->pb, st->index_entries[index_min].pos, SEEK_SET); | |||
| matroska->current_id = 0; | |||
| matroska->skip_to_keyframe = !(flags & AVSEEK_FLAG_ANY); | |||
| matroska->skip_to_timecode = st->index_entries[index].timestamp; | |||
| matroska->done = 0; | |||
| @@ -0,0 +1,56 @@ | |||
| /* | |||
| * Copyright (c) 2011 Reinhard Tartler | |||
| * | |||
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |||
| * of this software and associated documentation files (the "Software"), to deal | |||
| * in the Software without restriction, including without limitation the rights | |||
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
| * copies of the Software, and to permit persons to whom the Software is | |||
| * furnished to do so, subject to the following conditions: | |||
| * | |||
| * The above copyright notice and this permission notice shall be included in | |||
| * all copies or substantial portions of the Software. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | |||
| * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||
| * THE SOFTWARE. | |||
| */ | |||
| /** | |||
| * @file | |||
| * @example libavformat/metadata-example.c | |||
| * Shows how the metadata API can be used in application programs. | |||
| */ | |||
| #include <stdio.h> | |||
| #include <libavformat/avformat.h> | |||
| #include <libavutil/dict.h> | |||
| int main (int argc, char **argv) | |||
| { | |||
| AVFormatContext *fmt_ctx = NULL; | |||
| AVDictionaryEntry *tag = NULL; | |||
| int ret; | |||
| if (argc != 2) { | |||
| printf("usage: %s <input_file>\n" | |||
| "example program to demonstrate the use of the libavformat metadata API.\n" | |||
| "\n", argv[0]); | |||
| return 1; | |||
| } | |||
| av_register_all(); | |||
| if ((ret = avformat_open_input(&fmt_ctx, argv[1], NULL, NULL))) | |||
| return ret; | |||
| while ((tag = av_dict_get(fmt_ctx->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))) | |||
| printf("%s=%s\n", tag->key, tag->value); | |||
| avformat_free_context(fmt_ctx); | |||
| return 0; | |||
| } | |||
| @@ -604,15 +604,15 @@ static int64_t ogg_read_timestamp(AVFormatContext *s, int stream_index, | |||
| int64_t *pos_arg, int64_t pos_limit) | |||
| { | |||
| struct ogg *ogg = s->priv_data; | |||
| struct ogg_stream *os = ogg->streams + stream_index; | |||
| AVIOContext *bc = s->pb; | |||
| int64_t pts = AV_NOPTS_VALUE; | |||
| int i; | |||
| int i = -1; | |||
| avio_seek(bc, *pos_arg, SEEK_SET); | |||
| ogg_reset(ogg); | |||
| while (avio_tell(bc) < pos_limit && !ogg_packet(s, &i, NULL, NULL, pos_arg)) { | |||
| if (i == stream_index) { | |||
| struct ogg_stream *os = ogg->streams + stream_index; | |||
| pts = ogg_calc_pts(s, i, NULL); | |||
| if (os->keyframe_seek && !(os->pflags & AV_PKT_FLAG_KEY)) | |||
| pts = AV_NOPTS_VALUE; | |||
| @@ -638,6 +638,7 @@ static int ogg_read_seek(AVFormatContext *s, int stream_index, | |||
| os->keyframe_seek = 1; | |||
| ret = av_seek_frame_binary(s, stream_index, timestamp, flags); | |||
| os = ogg->streams + stream_index; | |||
| if (ret < 0) | |||
| os->keyframe_seek = 0; | |||
| return ret; | |||
| @@ -130,6 +130,7 @@ const AVCodecTag ff_codec_bmp_tags[] = { | |||
| { CODEC_ID_MPEG2VIDEO, MKTAG('s', 'l', 'i', 'f') }, | |||
| { CODEC_ID_MPEG2VIDEO, MKTAG('E', 'M', '2', 'V') }, | |||
| { CODEC_ID_MPEG2VIDEO, MKTAG('M', '7', '0', '1') }, /* Matrox MPEG2 intra-only */ | |||
| { CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', 'v') }, | |||
| { CODEC_ID_MJPEG, MKTAG('M', 'J', 'P', 'G') }, | |||
| { CODEC_ID_MJPEG, MKTAG('L', 'J', 'P', 'G') }, | |||
| { CODEC_ID_MJPEG, MKTAG('d', 'm', 'b', '1') }, | |||
| @@ -138,7 +138,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *p, | |||
| void ff_rtmp_packet_dump(void *ctx, RTMPPacket *p); | |||
| /** | |||
| * @defgroup amffuncs functions used to work with AMF format (which is also used in .flv) | |||
| * @name Functions used to work with the AMF format (which is also used in .flv) | |||
| * @see amf_* funcs in libavformat/flvdec.c | |||
| * @{ | |||
| */ | |||
| @@ -428,11 +428,6 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, | |||
| } | |||
| } | |||
| /** | |||
| * Parse the sdp description and allocate the rtp streams and the | |||
| * pollfd array used for udp ones. | |||
| */ | |||
| int ff_sdp_parse(AVFormatContext *s, const char *content) | |||
| { | |||
| RTSPState *rt = s->priv_data; | |||
| @@ -1050,9 +1045,6 @@ retry: | |||
| return 0; | |||
| } | |||
| /** | |||
| * @return 0 on success, <0 on error, 1 if protocol is unavailable. | |||
| */ | |||
| int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, | |||
| int lower_transport, const char *real_challenge) | |||
| { | |||
| @@ -1078,7 +1070,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, | |||
| for (j = RTSP_RTP_PORT_MIN, i = 0; i < rt->nb_rtsp_streams; ++i) { | |||
| char transport[2048]; | |||
| /** | |||
| /* | |||
| * WMS serves all UDP data over a single connection, the RTX, which | |||
| * isn't necessarily the first in the SDP but has to be the first | |||
| * to be set up, else the second/third SETUP will fail with a 461. | |||
| @@ -1151,7 +1143,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, | |||
| /* RTP/TCP */ | |||
| else if (lower_transport == RTSP_LOWER_TRANSPORT_TCP) { | |||
| /** For WMS streams, the application streams are only used for | |||
| /* For WMS streams, the application streams are only used for | |||
| * UDP. When trying to set it up for TCP streams, the server | |||
| * will return an error. Therefore, we skip those streams. */ | |||
| if (rt->server_type == RTSP_SERVER_WMS && | |||
| @@ -1482,14 +1474,14 @@ redirect: | |||
| cmd[0] = 0; | |||
| if (rt->server_type == RTSP_SERVER_REAL) | |||
| av_strlcat(cmd, | |||
| /** | |||
| /* | |||
| * The following entries are required for proper | |||
| * streaming from a Realmedia server. They are | |||
| * interdependent in some way although we currently | |||
| * don't quite understand how. Values were copied | |||
| * from mplayer SVN r23589. | |||
| * @param CompanyID is a 16-byte ID in base64 | |||
| * @param ClientChallenge is a 16-byte ID in hex | |||
| * ClientChallenge is a 16-byte ID in hex | |||
| * CompanyID is a 16-byte ID in base64 | |||
| */ | |||
| "ClientChallenge: 9e26d33f2984236010ef6253fb1887f7\r\n" | |||
| "PlayerStarttime: [28/03/2003:22:50:23 00:00]\r\n" | |||
| @@ -505,8 +505,9 @@ int ff_rtsp_setup_input_streams(AVFormatContext *s, RTSPMessageHeader *reply); | |||
| int ff_rtsp_setup_output_streams(AVFormatContext *s, const char *addr); | |||
| /** | |||
| * Parse a SDP description of streams by populating an RTSPState struct | |||
| * within the AVFormatContext. | |||
| * Parse an SDP description of streams by populating an RTSPState struct | |||
| * within the AVFormatContext; also allocate the RTP streams and the | |||
| * pollfd array used for UDP streams. | |||
| */ | |||
| int ff_sdp_parse(AVFormatContext *s, const char *content); | |||
| @@ -525,6 +526,7 @@ int ff_rtsp_fetch_packet(AVFormatContext *s, AVPacket *pkt); | |||
| /** | |||
| * Do the SETUP requests for each stream for the chosen | |||
| * lower transport mode. | |||
| * @return 0 on success, <0 on error, 1 if protocol is unavailable | |||
| */ | |||
| int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, | |||
| int lower_transport, const char *real_challenge); | |||
| @@ -464,10 +464,16 @@ int av_open_input_stream(AVFormatContext **ic_ptr, | |||
| err = AVERROR(ENOMEM); | |||
| goto fail; | |||
| } | |||
| ic->pb = pb; | |||
| if (pb && fmt && fmt->flags & AVFMT_NOFILE) | |||
| av_log(ic, AV_LOG_WARNING, "Custom AVIOContext makes no sense and " | |||
| "will be ignored with AVFMT_NOFILE format.\n"); | |||
| else | |||
| ic->pb = pb; | |||
| err = avformat_open_input(ic_ptr, filename, fmt, &opts); | |||
| err = avformat_open_input(&ic, filename, fmt, &opts); | |||
| ic->pb = ic->pb ? ic->pb : pb; // don't leak custom pb if it wasn't set above | |||
| *ic_ptr = ic; | |||
| fail: | |||
| av_dict_free(&opts); | |||
| return err; | |||
| @@ -110,6 +110,9 @@ static int wv_read_block_header(AVFormatContext *ctx, AVIOContext *pb, int appen | |||
| size = wc->blksize; | |||
| } | |||
| wc->flags = AV_RL32(wc->extra + 4); | |||
| // blocks with zero samples don't contain actual audio information and should be ignored | |||
| if (!AV_RN32(wc->extra)) | |||
| return 0; | |||
| //parse flags | |||
| bpp = ((wc->flags & 3) + 1) << 3; | |||
| chan = 1 + !(wc->flags & WV_MONO); | |||
| @@ -207,8 +210,14 @@ static int wv_read_header(AVFormatContext *s, | |||
| AVStream *st; | |||
| wc->block_parsed = 0; | |||
| if(wv_read_block_header(s, pb, 0) < 0) | |||
| return -1; | |||
| for(;;){ | |||
| if(wv_read_block_header(s, pb, 0) < 0) | |||
| return -1; | |||
| if(!AV_RN32(wc->extra)) | |||
| avio_skip(pb, wc->blksize - 24); | |||
| else | |||
| break; | |||
| } | |||
| /* now we are ready: build format streams */ | |||
| st = av_new_stream(s, 0); | |||
| @@ -18,7 +18,8 @@ | |||
| */ | |||
| /** | |||
| * @file Public dictionary API. | |||
| * @file | |||
| * Public dictionary API. | |||
| */ | |||
| #ifndef AVUTIL_DICT_H | |||
| @@ -22,7 +22,8 @@ | |||
| #include "avutil.h" | |||
| /** | |||
| * @file misc file utilities | |||
| * @file | |||
| * Misc file utilities. | |||
| */ | |||
| /** | |||
| @@ -69,7 +69,7 @@ int av_image_fill_linesizes(int linesizes[4], enum PixelFormat pix_fmt, int widt | |||
| * | |||
| * @param data pointers array to be filled with the pointer for each image plane | |||
| * @param ptr the pointer to a buffer which will contain the image | |||
| * @param linesizes[4] the array containing the linesize for each | |||
| * @param linesizes the array containing the linesize for each | |||
| * plane, should be filled by av_image_fill_linesizes() | |||
| * @return the size in bytes required for the image buffer, a negative | |||
| * error code in case of failure | |||
| @@ -55,7 +55,7 @@ static inline unsigned int av_mlfg_get(AVLFG *c){ | |||
| * Get the next two numbers generated by a Box-Muller Gaussian | |||
| * generator using the random numbers issued by lfg. | |||
| * | |||
| * @param out[2] array where the two generated numbers are placed | |||
| * @param out array where the two generated numbers are placed | |||
| */ | |||
| void av_bmg_get(AVLFG *lfg, double out[2]); | |||
| @@ -24,7 +24,7 @@ | |||
| #include <stdint.h> | |||
| /** \defgroup errflags Error flags returned by av_lzo1x_decode | |||
| /** @name Error flags returned by av_lzo1x_decode | |||
| * \{ */ | |||
| //! end of the input buffer reached before decoding finished | |||
| #define AV_LZO_INPUT_DEPLETED 1 | |||
| @@ -247,7 +247,6 @@ int sws_scale_ordered(struct SwsContext *context, const uint8_t* const src[], | |||
| /** | |||
| * @param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] | |||
| * @param fullRange if 1 then the luma range is 0..255 if 0 it is 16..235 | |||
| * @return -1 if not supported | |||
| */ | |||
| int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], | |||