diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-10-08 21:36:14 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-10-08 21:46:34 +0200 |
commit | 52dc18d414f4aa2c5a210edfb82cc1a99942ca3b (patch) | |
tree | c2aedd51f56ee49222c76f44b238c16102132db1 | |
parent | ac627b3d38d370027406c93c2dcaac0b1712a7d4 (diff) | |
parent | 7e522859fc463a14875f78957bb57d2f33607d19 (diff) | |
download | ffmpeg-52dc18d414f4aa2c5a210edfb82cc1a99942ca3b.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
x86: vc1: call ff_vc1dsp_init_x86() under if (ARCH_X86)
x86: cavs: call ff_cavsdsp_init_x86() under if (ARCH_X86)
x86: call most of the x86 dsp init functions under if (ARCH_X86)
doc: support the new website layout
doc: remove a warning from filters.texi
doc: initial nut documentation
segment: drop global headers setting
lavu: fix typo in Makefile
Conflicts:
doc/Makefile
doc/filters.texi
doc/t2h.init
libavcodec/fmtconvert.c
libavcodec/proresdsp.c
libavcodec/x86/Makefile
libavcodec/x86/vc1dsp_mmx.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
38 files changed, 1635 insertions, 463 deletions
diff --git a/doc/Makefile b/doc/Makefile index e594c44722..41b0173e07 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -6,6 +6,7 @@ HTMLPAGES = $(PROGS-yes:%=doc/%.html) \ doc/fate.html \ doc/general.html \ doc/git-howto.html \ + doc/nut.html \ doc/platform.html \ doc/syntax.html \ diff --git a/doc/doxy/doxy_stylesheet.css b/doc/doxy/doxy_stylesheet.css index ff1e2147d3..63238a2d5c 100644 --- a/doc/doxy/doxy_stylesheet.css +++ b/doc/doxy/doxy_stylesheet.css @@ -1,31 +1,1137 @@ -/* The standard CSS for doxygen */ +/*! + * Bootstrap v2.1.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, +a:current { + outline: 0; +} +img { + /* Responsive images (ensure images don't scale beyond their parents) */ -/* @group Heading Levels */ + max-width: 100%; + /* Part 1: Set a maxium relative to the parent */ + + width: auto\9; + /* IE7-8 need help adjusting responsive images */ + + height: auto; + /* Part 2: Scale the height according to the width, otherwise you get stretching */ + + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} +body { + margin: 0; + font-family: sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +.container { + width: 940px; +} +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} +.container:before, +.container:after { + display: table; + content: ""; + line-height: 0; +} +.container:after { + clear: both; +} +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} +small { + font-size: 85%; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +cite { + font-style: normal; +} +.text-warning { + color: #c09853; +} +.text-error { + color: #b94a48; +} +.text-info { + color: #3a87ad; +} +.text-success { + color: #468847; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 1; + color: inherit; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} h1 { - font-size: 150%; + font-size: 30px; + line-height: 40px; +} +h2 { + font-size: 20px; + line-height: 40px; +} +h3 { + font-size: 18px; + line-height: 40px; +} +h4 { + font-size: 18px; + line-height: 20px; +} +h5 { + font-size: 14px; + line-height: 20px; +} +h6 { + font-size: 12px; + line-height: 20px; +} +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +li { + line-height: 20px; +} +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} +dl { + margin-bottom: 20px; +} +dt, +dd { + line-height: 20px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 10px; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} +blockquote:before, +blockquote:after { + content: ""; +} +.fragment, +code, +pre { + padding: 0 3px 2px; + font-family: monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.fragment, +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} +.label, +.badge { + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label-important, +.badge-important { + background-color: #b94a48; +} +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} +.label-warning, +.badge-warning { + background-color: #f89406; +} +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} +.label-success, +.badge-success { + background-color: #468847; +} +.label-success[href], +.badge-success[href] { + background-color: #356635; +} +.label-info, +.badge-info { + background-color: #3a87ad; +} +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} +.label-inverse, +.badge-inverse { + background-color: #333333; +} +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +table [class*=span], +.row-fluid table [class*=span] { + display: table-cell; + float: none; + margin-left: 0; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +legend small { + font-size: 15px; + color: #999999; +} +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} +input, +button, +select, +textarea { + font-family: sans-serif; +} +label { + display: block; + margin-bottom: 5px; +} + +.tablist { + margin-left: 0; + margin-bottom: 20px; + list-style: none; +} +.tablist > li > a { + display: block; +} +.tablist > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} +.tablist > .pull-right { + float: right; +} +.tablist-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} +.tablist li + .tablist-header { + margin-top: 9px; +} +.tablist-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} +.tablist-list > li > a, +.tablist-list .tablist-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.tablist-list > li > a { + padding: 3px 15px; +} +.tablist-list > .current > a, +.tablist-list > .current > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} +.tablist-list [class^="icon-"] { + margin-right: 2px; +} +.tablist-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} +.tablist-tabs, +.tablist { + *zoom: 1; +} +.tablist-tabs:before, +.tablist:before, +.tablist-tabs:after, +.tablist:after { + display: table; + content: ""; + line-height: 0; +} +.tablist-tabs:after, +.tablist:after { + clear: both; +} +.tablist-tabs > li, +.tablist > li { + float: left; +} +.tablist-tabs > li > a, +.tablist > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} +.tablist-tabs { + border-bottom: 1px solid #ddd; +} +.tablist-tabs > li { + margin-bottom: -1px; +} +.tablist-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.tablist-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.tablist-tabs > .current > a, +.tablist-tabs > .current > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.tablist > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.tablist > .current > a, +.tablist > .current > a:hover { + color: #ffffff; + background-color: #0088cc; +} +.tablist-stacked > li { + float: none; +} +.tablist-stacked > li > a { + margin-right: 0; +} +.tablist-tabs.tablist-stacked { + border-bottom: 0; +} +.tablist-tabs.tablist-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.tablist-tabs.tablist-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} +.tablist-tabs.tablist-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.tablist-tabs.tablist-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} +.tablist.tablist-stacked > li > a { + margin-bottom: 3px; +} +.tablist.tablist-stacked > li:last-child > a { + margin-bottom: 1px; +} +.tablist-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.tablist .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.tablist .dropdown-toggle .caret { + border-top-color: #0088cc; + border-bottom-color: #0088cc; + margin-top: 6px; +} +.tablist .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} +/* move down carets for tabs */ +.tablist-tabs .dropdown-toggle .caret { + margin-top: 8px; +} +.tablist .current .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} +.tablist-tabs .current .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.tablist > .dropdown.current > a:hover { + cursor: pointer; +} +.tablist-tabs .open .dropdown-toggle, +.tablist .open .dropdown-toggle, +.tablist > li.dropdown.open.current > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.tablist li.dropdown.open .caret, +.tablist li.dropdown.open.current .caret, +.tablist li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} +.tabs-stacked .open > a:hover { + border-color: #999999; +} +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} +.tab-content > .current, +.pill-content > .current { + display: block; +} +.tabs-below > .tablist-tabs { + border-top: 1px solid #ddd; +} +.tabs-below > .tablist-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below > .tablist-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.tabs-below > .tablist-tabs > li > a:hover { + border-bottom-color: transparent; + border-top-color: #ddd; +} +.tabs-below > .tablist-tabs > .current > a, +.tabs-below > .tablist-tabs > .current > a:hover { + border-color: transparent #ddd #ddd #ddd; +} +.tabs-left > .tablist-tabs > li, +.tabs-right > .tablist-tabs > li { + float: none; +} +.tabs-left > .tablist-tabs > li > a, +.tabs-right > .tablist-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +.tabs-left > .tablist-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left > .tablist-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.tabs-left > .tablist-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +.tabs-left > .tablist-tabs .current > a, +.tabs-left > .tablist-tabs .current > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +.tabs-right > .tablist-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right > .tablist-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.tabs-right > .tablist-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} +.tabs-right > .tablist-tabs .current > a, +.tabs-right > .tablist-tabs .current > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} +.tablist > .disabled > a { + color: #999999; +} +.tablist > .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} +.tablistbar { + overflow: visible; + margin-bottom: 20px; + color: #ffffff; + *position: relative; + *z-index: 2; +} +.tablistbar-inner { + min-height: 40px; + padding-left: 20px; + padding-right: 20px; + background-color: #034c03; + background-image: -moz-linear-gradient(top, #024002, #045f04); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#024002), to(#045f04)); + background-image: -webkit-linear-gradient(top, #024002, #045f04); + background-image: -o-linear-gradient(top, #024002, #045f04); + background-image: linear-gradient(to bottom, #024002, #045f04); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff024002', endColorstr='#ff045f04', GradientType=0); + border: 1px solid #022402; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + *zoom: 1; +} +.tablistbar-inner:before, +.tablistbar-inner:after { + display: table; + content: ""; + line-height: 0; +} +.tablistbar-inner:after { + clear: both; +} +.tablistbar .container { + width: auto; +} +.tablist-collapse.collapse { + height: auto; +} +.tablistbar .brand { + float: left; + display: block; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #ffffff; + text-shadow: 0 1px 0 #024002; +} +.tablistbar .brand:hover { + text-decoration: none; +} +.tablistbar-text { + margin-bottom: 0; + line-height: 40px; +} +.tablistbar-link { + color: #ffffff; +} +.tablistbar-link:hover { + color: #333333; +} +.tablistbar .tablist { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.tablistbar .tablist.pull-right { + float: right; + margin-right: 0; +} +.tablistbar .tablist > li { + float: left; +} +.tablistbar .tablist > li > a { + float: none; + padding: 10px 15px 10px; + color: #ffffff; + text-decoration: none; + text-shadow: 0 1px 0 #024002; +} +.tablistbar .tablist .dropdown-toggle .caret { + margin-top: 8px; +} +.tablistbar .tablist > li > a:focus, +.tablistbar .tablist > li > a:hover { + background-color: transparent; + color: white; + text-decoration: none; +} +.tablistbar .tablist > .current > a, +.tablistbar .tablist > .current > a:hover, +.tablistbar .tablist > .current > a:focus { + color: #555555; + text-decoration: none; + background-color: #034703; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} +.tablistbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #023402; + background-image: -moz-linear-gradient(top, #012701, #034703); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#012701), to(#034703)); + background-image: -webkit-linear-gradient(top, #012701, #034703); + background-image: -o-linear-gradient(top, #012701, #034703); + background-image: linear-gradient(to bottom, #012701, #034703); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff012701', endColorstr='#ff034703', GradientType=0); + border-color: #034703 #034703 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #034703; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} +.tablistbar .tablist > li > .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.tablistbar .tablist > li > .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.tablistbar .tablist li.dropdown.open > .dropdown-toggle, +.tablistbar .tablist li.dropdown.current > .dropdown-toggle, +.tablistbar .tablist li.dropdown.open.current > .dropdown-toggle { + background-color: #034703; + color: #555555; +} +.tablistbar .tablist li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.tablistbar .tablist li.dropdown.open > .dropdown-toggle .caret, +.tablistbar .tablist li.dropdown.current > .dropdown-toggle .caret, +.tablistbar .tablist li.dropdown.open.current > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.tablistbar .pull-right > li > .dropdown-menu, +.tablistbar .tablist > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} +.tablistbar .pull-right > li > .dropdown-menu:before, +.tablistbar .tablist > li > .dropdown-menu.pull-right:before { + left: auto; + right: 12px; +} +.tablistbar .pull-right > li > .dropdown-menu:after, +.tablistbar .tablist > li > .dropdown-menu.pull-right:after { + left: auto; + right: 13px; +} +.tablistbar .pull-right > li > .dropdown-menu .dropdown-menu, +.tablistbar .tablist > li > .dropdown-menu.pull-right .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.breadcrumb li { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb .divider { + padding: 0 5px; + color: #ccc; +} +.breadcrumb .current { + color: #999999; +} +.pagination-right { + text-align: right; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} +.collapse.in { + height: auto; +} +.hidden { + display: none; + visibility: hidden; +} +.visible-phone { + display: none !important; +} +.visible-tablet { + display: none !important; +} +.hidden-desktop { + display: none !important; +} +.visible-desktop { + display: inherit !important; +} +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} +@media (max-width: 767px) { + body { + padding-left: 20px; + padding-right: 20px; + } + .container { + width: auto; + } + .row, + .thumbnails { + margin-left: 0; + } +} +@media (max-width: 480px) { + .tablist-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } +} +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + content: ""; + line-height: 0; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container { + width: 724px; + } +} +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + content: ""; + line-height: 0; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container { + width: 1070px; + } +} +@media (max-width: 979px) { + body { + padding-top: 0; + } +} +@media (min-width: 980px) { + .tablist-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} +.tablistbar .brand { + padding: 5px; + margin-left: 0; +} +.tablistbar .brand img { + width: 30px; + vertical-align: middle; } +h1 small { + font-size: 18px; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.page-header small { + line-height: 0.8; + font-weight: normal; + color: #999999; + display:block; + vertical-align: middle; +} + +.page-header h1, h1:first-child { + font-size: 40px; + padding-bottom: 5px; +} + +.page-header h1 { + border-bottom: 1px solid #999999; + padding-bottom: 9px; +} + +.page-header img { + height: 80px; + padding-bottom: 5px; +} + +.page-header small { + line-height: 1.1; + font-size: 18px; +} + +h2, +h3, +h4, +div.ah, .title { - font-weight: bold; - margin: 10px 2px; - background-color: #7BB37B; - border: 1px solid #6A996A; - color: #151515; - font-size: 1.2em; - padding-bottom: 0.2em; - padding-left: 0.4em; - padding-top: 0.2em; + border-color: #D6E9C6; + color: #468847; + border-style: solid; + border-width: 0 0 1px; + padding-left: 0.5em; } -h2 { - font-size: 120%; + +.google { + color: white; } -h3 { - font-size: 100%; +.breadcrumb { + font-size: 11px; + padding-top: 2px; + padding-bottom: 2px; +} + +h1 a, +h2 a, +h3 a, +h4 a { + color: inherit; +} + +.tablistbar-inner a { + font-weight: bold; +} + +.list-2panes:before, +.list-2panes:after { + display: table; + content: ""; + line-height: 0; +} + +.list-2panes:after { + clear:both; +} + +.list-2panes li { + width: 470px; + width: 470px; + float: left; + margin-left: 30px; + min-height: 1px; } +/* The standard CSS for doxygen */ + +/* @group Heading Levels */ + dt { font-weight: bold; @@ -70,18 +1176,18 @@ h3.version { text-align: center; } -div.qindex, div.navtab{ +div.qindex, div.tablisttab{ background-color: #EBF6EB; border: 1px solid #A3D7A3; text-align: center; } -div.qindex, div.navpath { +div.qindex, div.tablistpath { width: 100%; line-height: 140%; } -div.navtab { +div.tablisttab { margin-right: 15px; } @@ -153,24 +1259,6 @@ pre.fragment { line-height: 125%; } -div.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); -} - div.groupHeader { margin-left: 16px; margin-top: 12px; @@ -189,21 +1277,10 @@ div.contents { } td.indexkey { - background-color: #EBF6EB; - font-weight: bold; - border: 1px solid #C4E5C4; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; + white-space: nowrap; + vertical-align: top; } -td.indexvalue { - background-color: #EBF6EB; - border: 1px solid #C4E5C4; - padding: 2px 10px; - margin: 2px 0px; -} tr.memlist { background-color: #EEF7EE; @@ -696,7 +1773,7 @@ table.fieldtable { font-size: 13px; } -.navpath ul +.tablistpath ul { font-size: 11px; background-image:url('tab_b.png'); @@ -710,7 +1787,7 @@ table.fieldtable { padding:0px; } -.navpath li +.tablistpath li { list-style-type:none; float:left; @@ -722,7 +1799,7 @@ table.fieldtable { color:#367C36; } -.navpath li.navelem a +.tablistpath li.tablistelem a { height:32px; display:block; @@ -730,12 +1807,12 @@ table.fieldtable { outline: none; } -.navpath li.navelem a:hover +.tablistpath li.tablistelem a:hover { color:#68BD68; } -.navpath li.footer +.tablistpath li.footer { list-style-type:none; float:right; @@ -937,161 +2014,6 @@ dl.citelist dd { } } -/* tabs */ - -.tabs, .tabs2, .tabs3 { - z-index: 101; -} - -.tablist { - margin: auto; - display: table; -} - -.tablist li { - float: left; - display: table-cell; - list-style: none; - margin:0 4px; -} - -.tablist a { - display: block; - padding: 0 0.3em; - color: #285D28; - text-decoration: none; - outline: none; -} - -.tabs3 .tablist a { - padding-left: 10px; -} - - -/* libav.org stylesheet */ - -a { - color: #2D6198; -} - -a:visited { - color: #884488; -} - -h1 a, h2 a, h3 a { - text-decoration: inherit; - color: inherit; -} - -#body { - margin: 0 1em; -} - -body { - background-color: #313131; - margin: 0; -} - -.center { - margin-left: auto; - margin-right: auto; - text-align: center; -} - -#container { - background-color: white; - color: #202020; - margin-left: 1em; - margin-right: 1em; -} - -h1 { - background-color: #7BB37B; - border: 1px solid #6A996A; - color: #151515; - font-size: 1.2em; - padding-bottom: 0.2em; - padding-left: 0.4em; - padding-top: 0.2em; -} - -h2 { - color: #313131; - font-size: 1.2em; -} - -h3 { - color: #313131; - font-size: 0.8em; - margin-bottom: -8px; -} - -img { - border: 0; -} - -.tabs { - margin-top: 12px; - border-top: 1px solid #5C665C; -} - -.tabs, .tabs2, .tabs3, .tabs4 { - background-color: #738073; - border-bottom: 1px solid #5C665C; - border-left: 1px solid #5C665C; - border-right: 1px solid #5C665C; - position: relative; - text-align: center; -} - -.tabs a, -.tabs2 a, -.tabs3 a, -.tabs4 a { - color: white; - padding: 0.3em; - text-decoration: none; -} - - -.tabs ul, -.tabs2 ul, -.tabs3 ul, -.tabs4 ul { - padding: 0; -} - -.tabs li.current a, -.tabs2 li.current a, -.tabs3 li.current a, -.tabs4 li.current a { - background-color: #414141; - color: white; - text-decoration: none; -} - -.tabs a:hover, -.tabs2 a:hover, -.tabs3 a:hover, -.tabs4 a:hover { - background-color: #313131 !important; - color: white; - text-decoration: none; -} - -p { - margin-left: 1em; - margin-right: 1em; -} - -table { - margin-left: 2em; -} - -pre { - margin-left: 2em; -} - #proj_desc { font-size: 1.2em; } diff --git a/doc/doxy/footer.html b/doc/doxy/footer.html index 721735164a..101e6fe70b 100644 --- a/doc/doxy/footer.html +++ b/doc/doxy/footer.html @@ -1,10 +1,9 @@ - </div> - - <div id="footer"> - Generated on $datetime for $projectname by <a href="http://www.doxygen.org/index.html">doxygen</a> $doxygenversion - </div> + <footer class="footer pagination-right"> + <span class="label label-info"> + Generated on $datetime for $projectname by <a href="http://www.doxygen.org/index.html">doxygen</a> $doxygenversion + </span> + </footer> </div> - </body> </html> diff --git a/doc/doxy/header.html b/doc/doxy/header.html index 9e57c98e42..312990cdbc 100644 --- a/doc/doxy/header.html +++ b/doc/doxy/header.html @@ -1,14 +1,16 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<!DOCTYPE html> +<html> <head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME--> <!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME--> <link href="$relpath$doxy_stylesheet.css" rel="stylesheet" type="text/css" /> +<!--Header replace --> + </head> -<div id="container"> +<div class="container"> -<div id="body"> - <div> +<!--Header replace --> +<div class="menu"> diff --git a/doc/filters.texi b/doc/filters.texi index f7f9ee70b1..725c7b5d84 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -2446,14 +2446,10 @@ corresponding pixel component values. The @var{lut} filter requires either YUV or RGB pixel formats in input, and accepts the options: @table @option -@item c0 -first pixel component -@item c1 -second pixel component -@item c2 -third pixel component -@item c3 -fourth pixel component, corresponds to the alpha component +@item @var{c0} (first pixel component) +@item @var{c1} (second pixel component) +@item @var{c2} (third pixel component) +@item @var{c3} (fourth pixel component, corresponds to the alpha component) @end table The exact component associated to each option depends on the format in @@ -2462,27 +2458,19 @@ input. The @var{lutrgb} filter requires RGB pixel formats in input, and accepts the options: @table @option -@item r -red component -@item g -green component -@item b -blue component -@item a -alpha component +@item @var{r} (red component) +@item @var{g} (green component) +@item @var{b} (blue component) +@item @var{a} (alpha component) @end table The @var{lutyuv} filter requires YUV pixel formats in input, and accepts the options: @table @option -@item y -Y/luminance component -@item u -U/Cb component -@item v -V/Cr component -@item a -alpha component +@item @var{y} (Y/luminance component) +@item @var{u} (U/Cb component) +@item @var{v} (V/Cr component) +@item @var{a} (alpha component) @end table The expressions can contain the following constants and functions: diff --git a/doc/nut.texi b/doc/nut.texi new file mode 100644 index 0000000000..dafbb392e7 --- /dev/null +++ b/doc/nut.texi @@ -0,0 +1,128 @@ +\input texinfo @c -*- texinfo -*- + +@settitle NUT + +@titlepage +@center @titlefont{NUT} +@end titlepage + +@top + +@contents + +@chapter Description +NUT is a low overhead generic container format. It stores audio, video, +subtitle and user-defined streams in a simple, yet efficient, way. + +It was created by a group of FFmpeg and MPlayer developers in 2003 +and was finalized in 2008. + +@chapter Container-specific codec tags + +@section Generic raw YUVA formats + +Since many exotic planar YUVA pixel formats are not considered by +the AVI/QuickTime FourCC lists, the following scheme is adopted for +representing them. + +The first two bytes can contain the values: +Y1 = only Y +Y2 = Y+A +Y3 = YUV +Y4 = YUVA + +The third byte represents the width and height chroma subsampling +values for the UV planes, that is the amount to shift the luma +width/height right to find the chroma width/height. + +The fourth byte is the number of bits used (8, 16, ...). + +If the order of bytes is inverted, that means that each component has +to be read big-endian. + +@section Raw Audio + +@multitable @columnfractions .4 .4 +@item ALAW @tab A-LAW +@item ULAW @tab MU-LAW +@item P<type><interleaving><bits> @tab little-endian PCM +@item <bits><interleaving><type>P @tab big-endian PCM +@end multitable + +<type> is S for signed integer, U for unsigned integer, F for IEEE float +<interleaving> is D for default, as a historical artefact. +<bits> is 8/16/24/32 + +@example +PFD[32] would for example be signed 32 bit little-endian IEEE float +@end example + +@section Subtitles + +@multitable @columnfractions .4 .4 +@item UTF8 @tab Raw UTF-8 +@item SSA[0] @tab SubStation Alpha +@item DVDS @tab DVD subtitles +@item DVBS @tab DVB subtitles +@end multitable + +@section Codecs + +@multitable @columnfractions .4 .4 +@item 3IV1 @tab non-compliant MPEG-4 generated by old 3ivx +@item ASV1 @tab Asus Video +@item ASV2 @tab Asus Video 2 +@item CVID @tab Cinepak +@item CYUV @tab Creative YUV +@item DIVX @tab non-compliant MPEG-4 generated by old DivX +@item DUCK @tab Truemotion 1 +@item FFV1 @tab FFmpeg video 1 +@item FFVH @tab FFmpeg Huffyuv +@item H261 @tab ITU H.261 +@item H262 @tab ITU H.262 +@item H263 @tab ITU H.263 +@item H264 @tab ITU H.264 +@item HFYU @tab Huffyuv +@item I263 @tab Intel H.263 +@item IV31 @tab Indeo 3.1 +@item IV32 @tab Indeo 3.2 +@item IV50 @tab Indeo 5.0 +@item LJPG @tab ITU JPEG (lossless) +@item MJLS @tab ITU JPEG-LS +@item MJPG @tab ITU JPEG +@item MPG4 @tab MS MPEG-4v1 (not ISO MPEG-4) +@item MP42 @tab MS MPEG-4v2 +@item MP43 @tab MS MPEG-4v3 +@item MP4V @tab ISO MPEG-4 Part 2 Video (from old encoders) +@item mpg1 @tab ISO MPEG-1 Video +@item mpg2 @tab ISO MPEG-2 Video +@item MRLE @tab MS RLE +@item MSVC @tab MS Video 1 +@item RT21 @tab Indeo 2.1 +@item RV10 @tab RealVideo 1.0 +@item RV20 @tab RealVideo 2.0 +@item RV30 @tab RealVideo 3.0 +@item RV40 @tab RealVideo 4.0 +@item SNOW @tab FFmpeg Snow +@item SVQ1 @tab Sorenson Video 1 +@item SVQ3 @tab Sorenson Video 3 +@item theo @tab Xiph Theora +@item TM20 @tab Truemotion 2.0 +@item UMP4 @tab non-compliant MPEG-4 generated by UB Video MPEG-4 +@item VCR1 @tab ATI VCR1 +@item VP30 @tab VP 3.0 +@item VP31 @tab VP 3.1 +@item VP50 @tab VP 5.0 +@item VP60 @tab VP 6.0 +@item VP61 @tab VP 6.1 +@item VP62 @tab VP 6.2 +@item VP70 @tab VP 7.0 +@item WMV1 @tab MS WMV7 +@item WMV2 @tab MS WMV8 +@item WMV3 @tab MS WMV9 +@item WV1F @tab non-compliant MPEG-4 generated by ? +@item WVC1 @tab VC-1 +@item XVID @tab non-compliant MPEG-4 generated by old Xvid +@item XVIX @tab non-compliant MPEG-4 generated by old Xvid with interlacing bug +@end multitable + diff --git a/doc/t2h.init b/doc/t2h.init index 1eb6658a6b..40e77f85d9 100644 --- a/doc/t2h.init +++ b/doc/t2h.init @@ -6,73 +6,135 @@ sub FFmpeg_end_section($$) $EXTRA_HEAD = '<link rel="icon" href="favicon.png" type="image/png" /> -<link rel="stylesheet" type="text/css" href="default.css" /> '; -$CSS_LINES = <<EOT; +$CSS_LINES = $ENV{"FFMPEG_CSS"} || <<EOT; <style type="text/css"> <!-- -a.summary-letter { text-decoration: none } -a { color: #2D6198; } -a:visited { color: #884488; } -h1 a, h2 a, h3 a { text-decoration: inherit; color: inherit; } -p { margin-left: 1em; margin-right: 1em; } -table { margin-left: 2em; } -pre { margin-left: 2em; } -#footer { text-align: center; } -#body { margin-left: 1em; margin-right: 1em; } -body { background-color: #313131; margin: 0; } - -#container { - background-color: white; - color: #202020; - margin-left: 1em; - margin-right: 1em; +.container { + margin-right: auto; + margin-left: auto; + width: 1070px; +} +body { + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +p { + margin: 0 0 10px; +} +h2, +h3, +h4 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 1; + border-color: #D6E9C6; + color: #468847; + border-style: solid; + border-width: 0 0 1px; + padding-left: 0.5em; } +h1 a, +h2 a, +h3 a, +h4 a { + color: inherit; +} h1 { - background-color: #7BB37B; - border: 1px solid #6A996A; - color: #151515; - font-size: 1.2em; - padding-bottom: 0.2em; - padding-left: 0.4em; - padding-top: 0.2em; + font-size: 30px; + line-height: 40px; } - h2 { - color: #313131; - font-size: 1.2em; + font-size: 20px; + line-height: 40px; } - h3 { - color: #313131; - font-size: 0.8em; - margin-bottom: -8px; + font-size: 18px; + line-height: 40px; +} +code, +pre { + padding: 0 3px 2px; + font-family: monospace; + font-size: 12px; + color: #333333; + border-radius: 3px; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; } -.note { - margin: 1em; - border: 1px solid #bbc9d8; - background-color: #dde1e1; +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + border-radius: 4px; + color: #c09853; } -.important { - margin: 1em; - border: 1px solid #d26767; - background-color: #f8e1e1; +.alert-danger, +.alert-error { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; } +ul.toc { + list-style-type: none; +} --> </style> EOT -my $FFMPEG_NAVBAR = $ENV{"FFMPEG_NAVBAR"} || ''; - -$AFTER_BODY_OPEN = -'<div id="container">' . -"\n$FFMPEG_NAVBAR\n" . -'<div id="body">'; +my $TEMPLATE_HEADER = $ENV{"FFMPEG_HEADER"} || <<EOT; +<link rel="icon" href="favicon.png" type="image/png" /> +</head> +<body> +<div class="container"> +EOT $PRE_BODY_CLOSE = '</div></div>'; @@ -83,9 +145,10 @@ $print_page_foot = \&FFmpeg_print_page_foot; sub FFmpeg_print_page_foot($$) { my $fh = shift; - print $fh '<div id="footer">' . "\n"; - T2H_DEFAULT_print_page_foot($fh); - print $fh "</div>\n"; + my $program_string = T2H_DEFAULT_program_string(); + print $fh '<footer class="footer pagination-right">' . "\n"; + print $fh '<span class="label label-info">' . $program_string; + print $fh "</span></footer></div>\n"; } $float = \&FFmpeg_float; @@ -107,11 +170,11 @@ sub FFmpeg_float($$$$) if ($caption =~ /NOTE/) { - $class = "note"; + $class = "alert alert-info"; } elsif ($caption =~ /IMPORTANT/) { - $class = "important"; + $class = "alert alert-warning"; } return '<div class="float ' . $class . '">' . "$label\n" . $text . '</div>'; @@ -134,7 +197,7 @@ sub FFmpeg_print_page_head($$) $longtitle = "FFmpeg documentation : " . $longtitle; print $fh <<EOT; -$DOCTYPE +<!DOCTYPE html> <html> $Texi2HTML::THISDOC{'copying'}<!-- Created on $Texi2HTML::THISDOC{today} by $Texi2HTML::THISDOC{program} --> <!-- @@ -150,11 +213,7 @@ $description <meta name="Generator" content="$Texi2HTML::THISDOC{program}"> $encoding $CSS_LINES -$EXTRA_HEAD -</head> - -<body $BODYTEXT> -$AFTER_BODY_OPEN +$TEMPLATE_HEADER EOT } diff --git a/libavcodec/ac3dsp.c b/libavcodec/ac3dsp.c index 4e1e4bd709..49866eb767 100644 --- a/libavcodec/ac3dsp.c +++ b/libavcodec/ac3dsp.c @@ -256,6 +256,6 @@ av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact) if (ARCH_ARM) ff_ac3dsp_init_arm(c, bit_exact); - if (HAVE_MMX) + if (ARCH_X86) ff_ac3dsp_init_x86(c, bit_exact); } diff --git a/libavcodec/cavsdsp.c b/libavcodec/cavsdsp.c index 7eb8eca4d0..a9b136e2a3 100644 --- a/libavcodec/cavsdsp.c +++ b/libavcodec/cavsdsp.c @@ -546,5 +546,6 @@ av_cold void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx) { c->cavs_idct8_add = cavs_idct8_add_c; c->idct_perm = FF_NO_IDCT_PERM; - if (HAVE_MMX) ff_cavsdsp_init_mmx(c, avctx); + if (ARCH_X86) + ff_cavsdsp_init_x86(c, avctx); } diff --git a/libavcodec/cavsdsp.h b/libavcodec/cavsdsp.h index b281133ff1..f6e3e18e83 100644 --- a/libavcodec/cavsdsp.h +++ b/libavcodec/cavsdsp.h @@ -37,6 +37,6 @@ typedef struct CAVSDSPContext { } CAVSDSPContext; void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx); -void ff_cavsdsp_init_mmx(CAVSDSPContext* c, AVCodecContext *avctx); +void ff_cavsdsp_init_x86(CAVSDSPContext* c, AVCodecContext *avctx); #endif /* AVCODEC_CAVSDSP_H */ diff --git a/libavcodec/dct.c b/libavcodec/dct.c index 2782bd96f4..e2ac0a856e 100644 --- a/libavcodec/dct.c +++ b/libavcodec/dct.c @@ -209,8 +209,8 @@ av_cold int ff_dct_init(DCTContext *s, int nbits, enum DCTTransformType inverse) } s->dct32 = ff_dct32_float; - if (HAVE_MMX) - ff_dct_init_mmx(s); + if (ARCH_X86) + ff_dct_init_x86(s); return 0; } diff --git a/libavcodec/dct.h b/libavcodec/dct.h index bb17d75d0c..8995f10a80 100644 --- a/libavcodec/dct.h +++ b/libavcodec/dct.h @@ -47,6 +47,6 @@ struct DCTContext { int ff_dct_init(DCTContext *s, int nbits, enum DCTTransformType type); void ff_dct_end (DCTContext *s); -void ff_dct_init_mmx(DCTContext *s); +void ff_dct_init_x86(DCTContext *s); #endif /* AVCODEC_DCT_H */ diff --git a/libavcodec/fft.c b/libavcodec/fft.c index e5bdcbd7ab..00c434a905 100644 --- a/libavcodec/fft.c +++ b/libavcodec/fft.c @@ -160,7 +160,7 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) #if CONFIG_FFT_FLOAT if (ARCH_ARM) ff_fft_init_arm(s); if (HAVE_ALTIVEC) ff_fft_init_altivec(s); - if (HAVE_MMX) ff_fft_init_mmx(s); + if (ARCH_X86) ff_fft_init_x86(s); if (CONFIG_MDCT) s->mdct_calcw = s->mdct_calc; if (HAVE_MIPSFPU) ff_fft_init_mips(s); #else diff --git a/libavcodec/fft.h b/libavcodec/fft.h index 15e5a121d2..9d92b2c2d2 100644 --- a/libavcodec/fft.h +++ b/libavcodec/fft.h @@ -135,7 +135,7 @@ int ff_fft_init(FFTContext *s, int nbits, int inverse); #if CONFIG_FFT_FLOAT void ff_fft_init_altivec(FFTContext *s); -void ff_fft_init_mmx(FFTContext *s); +void ff_fft_init_x86(FFTContext *s); void ff_fft_init_arm(FFTContext *s); void ff_fft_init_mips(FFTContext *s); #else diff --git a/libavcodec/fmtconvert.c b/libavcodec/fmtconvert.c index 372f2a36ce..79e9645837 100644 --- a/libavcodec/fmtconvert.c +++ b/libavcodec/fmtconvert.c @@ -85,7 +85,7 @@ av_cold void ff_fmt_convert_init(FmtConvertContext *c, AVCodecContext *avctx) if (ARCH_ARM) ff_fmt_convert_init_arm(c, avctx); if (HAVE_ALTIVEC) ff_fmt_convert_init_altivec(c, avctx); - if (HAVE_MMX) ff_fmt_convert_init_x86(c, avctx); + if (ARCH_X86) ff_fmt_convert_init_x86(c, avctx); if (HAVE_MIPSFPU) ff_fmt_convert_init_mips(c); } diff --git a/libavcodec/h264dsp.c b/libavcodec/h264dsp.c index ce6545ba8e..69d0536981 100644 --- a/libavcodec/h264dsp.c +++ b/libavcodec/h264dsp.c @@ -130,5 +130,5 @@ void ff_h264dsp_init(H264DSPContext *c, const int bit_depth, const int chroma_fo if (ARCH_ARM) ff_h264dsp_init_arm(c, bit_depth, chroma_format_idc); if (HAVE_ALTIVEC) ff_h264dsp_init_ppc(c, bit_depth, chroma_format_idc); - if (HAVE_MMX) ff_h264dsp_init_x86(c, bit_depth, chroma_format_idc); + if (ARCH_X86) ff_h264dsp_init_x86(c, bit_depth, chroma_format_idc); } diff --git a/libavcodec/h264pred.c b/libavcodec/h264pred.c index 2d8b9a4b83..5619efd109 100644 --- a/libavcodec/h264pred.c +++ b/libavcodec/h264pred.c @@ -549,5 +549,5 @@ void ff_h264_pred_init(H264PredContext *h, int codec_id, const int bit_depth, co } if (ARCH_ARM) ff_h264_pred_init_arm(h, codec_id, bit_depth, chroma_format_idc); - if (HAVE_MMX) ff_h264_pred_init_x86(h, codec_id, bit_depth, chroma_format_idc); + if (ARCH_X86) ff_h264_pred_init_x86(h, codec_id, bit_depth, chroma_format_idc); } diff --git a/libavcodec/lpc.c b/libavcodec/lpc.c index ac8984a583..c8d24c03f3 100644 --- a/libavcodec/lpc.c +++ b/libavcodec/lpc.c @@ -262,7 +262,7 @@ av_cold int ff_lpc_init(LPCContext *s, int blocksize, int max_order, s->lpc_apply_welch_window = lpc_apply_welch_window_c; s->lpc_compute_autocorr = lpc_compute_autocorr_c; - if (HAVE_MMX) + if (ARCH_X86) ff_lpc_init_x86(s); return 0; diff --git a/libavcodec/mpegaudiodsp.c b/libavcodec/mpegaudiodsp.c index 82a3652d9f..aadc747814 100644 --- a/libavcodec/mpegaudiodsp.c +++ b/libavcodec/mpegaudiodsp.c @@ -41,7 +41,7 @@ void ff_mpadsp_init(MPADSPContext *s) s->imdct36_blocks_fixed = ff_imdct36_blocks_fixed; if (ARCH_ARM) ff_mpadsp_init_arm(s); - if (HAVE_MMX) ff_mpadsp_init_mmx(s); + if (ARCH_X86) ff_mpadsp_init_x86(s); if (HAVE_ALTIVEC) ff_mpadsp_init_altivec(s); if (HAVE_MIPSFPU) ff_mpadsp_init_mipsfpu(s); if (HAVE_MIPSDSPR1) ff_mpadsp_init_mipsdspr1(s); diff --git a/libavcodec/mpegaudiodsp.h b/libavcodec/mpegaudiodsp.h index aae8ac0cb5..623d2dfffb 100644 --- a/libavcodec/mpegaudiodsp.h +++ b/libavcodec/mpegaudiodsp.h @@ -56,7 +56,7 @@ void ff_mpa_synth_filter_float(MPADSPContext *s, float *sb_samples); void ff_mpadsp_init_arm(MPADSPContext *s); -void ff_mpadsp_init_mmx(MPADSPContext *s); +void ff_mpadsp_init_x86(MPADSPContext *s); void ff_mpadsp_init_altivec(MPADSPContext *s); void ff_mpadsp_init_mipsfpu(MPADSPContext *s); void ff_mpadsp_init_mipsdspr1(MPADSPContext *s); diff --git a/libavcodec/pngdsp.c b/libavcodec/pngdsp.c index 75ec996ca1..1ee8b57bc9 100644 --- a/libavcodec/pngdsp.c +++ b/libavcodec/pngdsp.c @@ -44,5 +44,5 @@ void ff_pngdsp_init(PNGDSPContext *dsp) dsp->add_bytes_l2 = add_bytes_l2_c; dsp->add_paeth_prediction = ff_add_png_paeth_prediction; - if (HAVE_MMX) ff_pngdsp_init_x86(dsp); + if (ARCH_X86) ff_pngdsp_init_x86(dsp); } diff --git a/libavcodec/proresdsp.c b/libavcodec/proresdsp.c index 867e4030e9..9e063b0974 100644 --- a/libavcodec/proresdsp.c +++ b/libavcodec/proresdsp.c @@ -75,7 +75,7 @@ void ff_proresdsp_init(ProresDSPContext *dsp, AVCodecContext *avctx) dsp->idct_put = prores_idct_put_c; dsp->idct_permutation_type = FF_NO_IDCT_PERM; - if (HAVE_MMX) ff_proresdsp_x86_init(dsp, avctx); + if (ARCH_X86) ff_proresdsp_x86_init(dsp, avctx); ff_init_scantable_permutation(dsp->idct_permutation, dsp->idct_permutation_type); diff --git a/libavcodec/rv34dsp.c b/libavcodec/rv34dsp.c index ac14ed9ab1..25e8c3d83d 100644 --- a/libavcodec/rv34dsp.c +++ b/libavcodec/rv34dsp.c @@ -137,6 +137,6 @@ av_cold void ff_rv34dsp_init(RV34DSPContext *c, DSPContext* dsp) { if (HAVE_NEON) ff_rv34dsp_init_neon(c, dsp); - if (HAVE_MMX) + if (ARCH_X86) ff_rv34dsp_init_x86(c, dsp); } diff --git a/libavcodec/rv40dsp.c b/libavcodec/rv40dsp.c index 66f53263f2..2799f1ae25 100644 --- a/libavcodec/rv40dsp.c +++ b/libavcodec/rv40dsp.c @@ -604,7 +604,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c, DSPContext* dsp) { c->rv40_loop_filter_strength[0] = rv40_h_loop_filter_strength; c->rv40_loop_filter_strength[1] = rv40_v_loop_filter_strength; - if (HAVE_MMX) + if (ARCH_X86) ff_rv40dsp_init_x86(c, dsp); if (HAVE_NEON) ff_rv40dsp_init_neon(c, dsp); diff --git a/libavcodec/sbrdsp.c b/libavcodec/sbrdsp.c index 8c88fb3329..781ec83fe8 100644 --- a/libavcodec/sbrdsp.c +++ b/libavcodec/sbrdsp.c @@ -243,6 +243,6 @@ av_cold void ff_sbrdsp_init(SBRDSPContext *s) if (ARCH_ARM) ff_sbrdsp_init_arm(s); - if (HAVE_MMX) + if (ARCH_X86) ff_sbrdsp_init_x86(s); } diff --git a/libavcodec/vc1dsp.c b/libavcodec/vc1dsp.c index c2b7eff278..a874509ca9 100644 --- a/libavcodec/vc1dsp.c +++ b/libavcodec/vc1dsp.c @@ -850,6 +850,6 @@ av_cold void ff_vc1dsp_init(VC1DSPContext* dsp) { if (HAVE_ALTIVEC) ff_vc1dsp_init_altivec(dsp); - if (HAVE_MMX) - ff_vc1dsp_init_mmx(dsp); + if (ARCH_X86) + ff_vc1dsp_init_x86(dsp); } diff --git a/libavcodec/vc1dsp.h b/libavcodec/vc1dsp.h index d96853aa16..877581861f 100644 --- a/libavcodec/vc1dsp.h +++ b/libavcodec/vc1dsp.h @@ -74,6 +74,6 @@ typedef struct VC1DSPContext { void ff_vc1dsp_init(VC1DSPContext* c); void ff_vc1dsp_init_altivec(VC1DSPContext* c); -void ff_vc1dsp_init_mmx(VC1DSPContext* dsp); +void ff_vc1dsp_init_x86(VC1DSPContext* dsp); #endif /* AVCODEC_VC1DSP_H */ diff --git a/libavcodec/vp56dsp.c b/libavcodec/vp56dsp.c index 339c3d210c..a72c48e1e7 100644 --- a/libavcodec/vp56dsp.c +++ b/libavcodec/vp56dsp.c @@ -90,5 +90,5 @@ void ff_vp56dsp_init(VP56DSPContext *s, enum AVCodecID codec) } if (ARCH_ARM) ff_vp56dsp_init_arm(s, codec); - if (HAVE_MMX) ff_vp56dsp_init_x86(s, codec); + if (ARCH_X86) ff_vp56dsp_init_x86(s, codec); } diff --git a/libavcodec/vp8dsp.c b/libavcodec/vp8dsp.c index bacd10e25c..a53643cd26 100644 --- a/libavcodec/vp8dsp.c +++ b/libavcodec/vp8dsp.c @@ -521,7 +521,7 @@ av_cold void ff_vp8dsp_init(VP8DSPContext *dsp) VP8_BILINEAR_MC_FUNC(1, 8); VP8_BILINEAR_MC_FUNC(2, 4); - if (HAVE_MMX) + if (ARCH_X86) ff_vp8dsp_init_x86(dsp); if (HAVE_ALTIVEC) ff_vp8dsp_init_altivec(dsp); diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile index 39d27271ec..4ddd06d678 100644 --- a/libavcodec/x86/Makefile +++ b/libavcodec/x86/Makefile @@ -1,42 +1,43 @@ +OBJS += x86/fmtconvert_init.o + +OBJS-$(CONFIG_AAC_DECODER) += x86/sbrdsp_init.o +OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp_init.o +OBJS-$(CONFIG_CAVS_DECODER) += x86/cavsdsp.o OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc.o +OBJS-$(CONFIG_FFT) += x86/fft_init.o +OBJS-$(CONFIG_GPL) += x86/idct_mmx.o +OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o +OBJS-$(CONFIG_H264PRED) += x86/h264_intrapred_init.o +OBJS-$(CONFIG_LPC) += x86/lpc.o OBJS-$(CONFIG_MLP_DECODER) += x86/mlpdsp.o +OBJS-$(CONFIG_MPEGAUDIODSP) += x86/mpegaudiodec.o OBJS-$(CONFIG_MPEGVIDEO) += x86/mpegvideo.o OBJS-$(CONFIG_MPEGVIDEOENC) += x86/mpegvideoenc.o +OBJS-$(CONFIG_PNG_DECODER) += x86/pngdsp_init.o +OBJS-$(CONFIG_PRORES_LGPL_DECODER) += x86/proresdsp_init.o +OBJS-$(CONFIG_RV30_DECODER) += x86/rv34dsp_init.o +OBJS-$(CONFIG_RV40_DECODER) += x86/rv34dsp_init.o \ + x86/rv40dsp_init.o +OBJS-$(CONFIG_V210_DECODER) += x86/v210-init.o OBJS-$(CONFIG_TRUEHD_DECODER) += x86/mlpdsp.o +OBJS-$(CONFIG_VC1_DECODER) += x86/vc1dsp_init.o OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp_init.o +OBJS-$(CONFIG_VP5_DECODER) += x86/vp56dsp_init.o +OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp_init.o +OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp_init.o OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o MMX-OBJS += x86/dsputil_mmx.o \ x86/fdct.o \ - x86/fmtconvert_init.o \ x86/idct_mmx_xvid.o \ x86/idct_sse2_xvid.o \ x86/simple_idct.o \ -MMX-OBJS-$(CONFIG_AAC_DECODER) += x86/sbrdsp_init.o -MMX-OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp_init.o -MMX-OBJS-$(CONFIG_CAVS_DECODER) += x86/cavsdsp.o MMX-OBJS-$(CONFIG_DWT) += x86/snowdsp.o \ x86/dwt.o MMX-OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc_mmx.o \ x86/motion_est.o -MMX-OBJS-$(CONFIG_FFT) += x86/fft_init.o -MMX-OBJS-$(CONFIG_GPL) += x86/idct_mmx.o -MMX-OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o -MMX-OBJS-$(CONFIG_H264PRED) += x86/h264_intrapred_init.o -MMX-OBJS-$(CONFIG_LPC) += x86/lpc.o -MMX-OBJS-$(CONFIG_MPEGAUDIODSP) += x86/mpegaudiodec.o -MMX-OBJS-$(CONFIG_PNG_DECODER) += x86/pngdsp_init.o -MMX-OBJS-$(CONFIG_PRORES_DECODER) += x86/proresdsp_init.o -MMX-OBJS-$(CONFIG_PRORES_LGPL_DECODER) += x86/proresdsp_init.o -MMX-OBJS-$(CONFIG_RV30_DECODER) += x86/rv34dsp_init.o -MMX-OBJS-$(CONFIG_RV40_DECODER) += x86/rv34dsp_init.o \ - x86/rv40dsp_init.o -MMX-OBJS-$(CONFIG_V210_DECODER) += x86/v210-init.o MMX-OBJS-$(CONFIG_VC1_DECODER) += x86/vc1dsp_mmx.o -MMX-OBJS-$(CONFIG_VP5_DECODER) += x86/vp56dsp_init.o -MMX-OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp_init.o -MMX-OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp_init.o YASM-OBJS-$(CONFIG_AAC_DECODER) += x86/sbrdsp.o YASM-OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp.o diff --git a/libavcodec/x86/cavsdsp.c b/libavcodec/x86/cavsdsp.c index 03a8b87ec3..9643b81af3 100644 --- a/libavcodec/x86/cavsdsp.c +++ b/libavcodec/x86/cavsdsp.c @@ -25,11 +25,13 @@ #include "libavutil/common.h" #include "libavutil/cpu.h" #include "libavutil/x86/asm.h" +#include "libavutil/x86/cpu.h" #include "libavcodec/dsputil.h" #include "libavcodec/cavsdsp.h" #include "dsputil_mmx.h" +#include "config.h" -#if HAVE_INLINE_ASM +#if (HAVE_MMXEXT_INLINE || HAVE_AMD3DNOW_INLINE) /* in/out: mma=mma+mmb, mmb=mmb-mma */ #define SUMSUB_BA( a, b ) \ @@ -433,15 +435,12 @@ static void ff_ ## OPNAME ## cavs_qpel ## SIZE ## _mc03_ ## MMX(uint8_t *dst, ui "pavgb " #temp ", " #a " \n\t"\ "mov" #size " " #a ", " #b " \n\t" -QPEL_CAVS(put_, PUT_OP, 3dnow) -QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow) +#endif /* (HAVE_MMXEXT_INLINE || HAVE_AMD3DNOW_INLINE) */ + +#if HAVE_MMXEXT_INLINE QPEL_CAVS(put_, PUT_OP, mmx2) QPEL_CAVS(avg_, AVG_MMX2_OP, mmx2) -CAVS_MC(put_, 8, 3dnow) -CAVS_MC(put_, 16,3dnow) -CAVS_MC(avg_, 8, 3dnow) -CAVS_MC(avg_, 16,3dnow) CAVS_MC(put_, 8, mmx2) CAVS_MC(put_, 16,mmx2) CAVS_MC(avg_, 8, mmx2) @@ -463,6 +462,16 @@ static void ff_cavsdsp_init_mmx2(CAVSDSPContext* c, AVCodecContext *avctx) { c->cavs_idct8_add = cavs_idct8_add_mmx; c->idct_perm = FF_TRANSPOSE_IDCT_PERM; } +#endif /* HAVE_MMXEXT_INLINE */ + +#if HAVE_AMD3DNOW_INLINE +QPEL_CAVS(put_, PUT_OP, 3dnow) +QPEL_CAVS(avg_, AVG_3DNOW_OP, 3dnow) + +CAVS_MC(put_, 8, 3dnow) +CAVS_MC(put_, 16,3dnow) +CAVS_MC(avg_, 8, 3dnow) +CAVS_MC(avg_, 16,3dnow) static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx) { #define dspfunc(PFX, IDX, NUM) \ @@ -480,15 +489,16 @@ static void ff_cavsdsp_init_3dnow(CAVSDSPContext* c, AVCodecContext *avctx) { c->cavs_idct8_add = cavs_idct8_add_mmx; c->idct_perm = FF_TRANSPOSE_IDCT_PERM; } +#endif /* HAVE_AMD3DNOW_INLINE */ -#endif /* HAVE_INLINE_ASM */ - -void ff_cavsdsp_init_mmx(CAVSDSPContext *c, AVCodecContext *avctx) +av_cold void ff_cavsdsp_init_x86(CAVSDSPContext *c, AVCodecContext *avctx) { int mm_flags = av_get_cpu_flags(); -#if HAVE_INLINE_ASM +#if HAVE_MMXEXT_INLINE if (mm_flags & AV_CPU_FLAG_MMXEXT) ff_cavsdsp_init_mmx2(c, avctx); +#endif /* HAVE_MMXEXT_INLINE */ +#if HAVE_AMD3DNOW_INLINE if (mm_flags & AV_CPU_FLAG_3DNOW) ff_cavsdsp_init_3dnow(c, avctx); -#endif /* HAVE_INLINE_ASM */ +#endif /* HAVE_AMD3DNOW_INLINE */ } diff --git a/libavcodec/x86/fft_init.c b/libavcodec/x86/fft_init.c index d7a31d4efa..a9d95799ba 100644 --- a/libavcodec/x86/fft_init.c +++ b/libavcodec/x86/fft_init.c @@ -22,7 +22,7 @@ #include "libavcodec/dct.h" #include "fft.h" -av_cold void ff_fft_init_mmx(FFTContext *s) +av_cold void ff_fft_init_x86(FFTContext *s) { int has_vectors = av_get_cpu_flags(); #if ARCH_X86_32 @@ -56,7 +56,7 @@ av_cold void ff_fft_init_mmx(FFTContext *s) } #if CONFIG_DCT -av_cold void ff_dct_init_mmx(DCTContext *s) +av_cold void ff_dct_init_x86(DCTContext *s) { int has_vectors = av_get_cpu_flags(); if (EXTERNAL_SSE(has_vectors)) diff --git a/libavcodec/x86/mpegaudiodec.c b/libavcodec/x86/mpegaudiodec.c index a8b55aedf0..44cbf9a428 100644 --- a/libavcodec/x86/mpegaudiodec.c +++ b/libavcodec/x86/mpegaudiodec.c @@ -232,7 +232,7 @@ DECL_IMDCT_BLOCKS(avx,avx) #endif #endif /* HAVE_YASM */ -void ff_mpadsp_init_mmx(MPADSPContext *s) +void ff_mpadsp_init_x86(MPADSPContext *s) { int mm_flags = av_get_cpu_flags(); diff --git a/libavcodec/x86/rv40dsp_init.c b/libavcodec/x86/rv40dsp_init.c index 966e3f22f5..902ae19075 100644 --- a/libavcodec/x86/rv40dsp_init.c +++ b/libavcodec/x86/rv40dsp_init.c @@ -195,12 +195,12 @@ void ff_rv40dsp_init_x86(RV34DSPContext *c, DSPContext *dsp) if (EXTERNAL_MMX(mm_flags)) { c->put_chroma_pixels_tab[0] = ff_put_rv40_chroma_mc8_mmx; c->put_chroma_pixels_tab[1] = ff_put_rv40_chroma_mc4_mmx; -#if HAVE_INLINE_ASM +#if HAVE_MMX_INLINE c->put_pixels_tab[0][15] = ff_put_rv40_qpel16_mc33_mmx; c->put_pixels_tab[1][15] = ff_put_rv40_qpel8_mc33_mmx; c->avg_pixels_tab[0][15] = ff_avg_rv40_qpel16_mc33_mmx; c->avg_pixels_tab[1][15] = ff_avg_rv40_qpel8_mc33_mmx; -#endif /* HAVE_INLINE_ASM */ +#endif /* HAVE_MMX_INLINE */ #if ARCH_X86_32 QPEL_MC_SET(put_, _mmx) #endif diff --git a/libavcodec/x86/vc1dsp.h b/libavcodec/x86/vc1dsp.h new file mode 100644 index 0000000000..fdd4de1813 --- /dev/null +++ b/libavcodec/x86/vc1dsp.h @@ -0,0 +1,29 @@ +/* + * VC-1 and WMV3 decoder - X86 DSP init functions + * + * This file is part of FFmpeg. + * + * 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 + * Lesser General Public License for more details. + * + * 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 + */ + +#ifndef AVCODEC_X86_VC1DSP_H +#define AVCODEC_X86_VC1DSP_H + +#include "libavcodec/vc1dsp.h" + +void ff_vc1dsp_init_mmx(VC1DSPContext *dsp); +void ff_vc1dsp_init_mmxext(VC1DSPContext *dsp); + +#endif /* AVCODEC_X86_VC1DSP_H */ diff --git a/libavcodec/x86/vc1dsp_init.c b/libavcodec/x86/vc1dsp_init.c new file mode 100644 index 0000000000..d2548fc348 --- /dev/null +++ b/libavcodec/x86/vc1dsp_init.c @@ -0,0 +1,123 @@ +/* + * VC-1 and WMV3 - DSP functions MMX-optimized + * Copyright (c) 2007 Christophe GISQUET <christophe.gisquet@free.fr> + * + * 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. + */ + +#include "libavutil/cpu.h" +#include "libavutil/x86/cpu.h" +#include "libavcodec/vc1dsp.h" +#include "vc1dsp.h" +#include "config.h" + +#define LOOP_FILTER(EXT) \ +void ff_vc1_v_loop_filter4_ ## EXT(uint8_t *src, int stride, int pq); \ +void ff_vc1_h_loop_filter4_ ## EXT(uint8_t *src, int stride, int pq); \ +void ff_vc1_v_loop_filter8_ ## EXT(uint8_t *src, int stride, int pq); \ +void ff_vc1_h_loop_filter8_ ## EXT(uint8_t *src, int stride, int pq); \ +\ +static void vc1_v_loop_filter16_ ## EXT(uint8_t *src, int stride, int pq) \ +{ \ + ff_vc1_v_loop_filter8_ ## EXT(src, stride, pq); \ + ff_vc1_v_loop_filter8_ ## EXT(src+8, stride, pq); \ +} \ +\ +static void vc1_h_loop_filter16_ ## EXT(uint8_t *src, int stride, int pq) \ +{ \ + ff_vc1_h_loop_filter8_ ## EXT(src, stride, pq); \ + ff_vc1_h_loop_filter8_ ## EXT(src+8*stride, stride, pq); \ +} + +#if HAVE_YASM +LOOP_FILTER(mmx2) +LOOP_FILTER(sse2) +LOOP_FILTER(ssse3) + +void ff_vc1_h_loop_filter8_sse4(uint8_t *src, int stride, int pq); + +static void vc1_h_loop_filter16_sse4(uint8_t *src, int stride, int pq) +{ + ff_vc1_h_loop_filter8_sse4(src, stride, pq); + ff_vc1_h_loop_filter8_sse4(src+8*stride, stride, pq); +} +#endif /* HAVE_YASM */ + +void ff_put_vc1_chroma_mc8_mmx_nornd (uint8_t *dst, uint8_t *src, + int stride, int h, int x, int y); +void ff_avg_vc1_chroma_mc8_mmx2_nornd (uint8_t *dst, uint8_t *src, + int stride, int h, int x, int y); +void ff_avg_vc1_chroma_mc8_3dnow_nornd(uint8_t *dst, uint8_t *src, + int stride, int h, int x, int y); +void ff_put_vc1_chroma_mc8_ssse3_nornd(uint8_t *dst, uint8_t *src, + int stride, int h, int x, int y); +void ff_avg_vc1_chroma_mc8_ssse3_nornd(uint8_t *dst, uint8_t *src, + int stride, int h, int x, int y); + + +av_cold void ff_vc1dsp_init_x86(VC1DSPContext *dsp) +{ + int mm_flags = av_get_cpu_flags(); + + if (INLINE_MMX(mm_flags)) + ff_vc1dsp_init_mmx(dsp); + + if (INLINE_MMXEXT(mm_flags)) + ff_vc1dsp_init_mmxext(dsp); + +#define ASSIGN_LF(EXT) \ + dsp->vc1_v_loop_filter4 = ff_vc1_v_loop_filter4_ ## EXT; \ + dsp->vc1_h_loop_filter4 = ff_vc1_h_loop_filter4_ ## EXT; \ + dsp->vc1_v_loop_filter8 = ff_vc1_v_loop_filter8_ ## EXT; \ + dsp->vc1_h_loop_filter8 = ff_vc1_h_loop_filter8_ ## EXT; \ + dsp->vc1_v_loop_filter16 = vc1_v_loop_filter16_ ## EXT; \ + dsp->vc1_h_loop_filter16 = vc1_h_loop_filter16_ ## EXT + +#if HAVE_YASM + if (mm_flags & AV_CPU_FLAG_MMX) { + dsp->put_no_rnd_vc1_chroma_pixels_tab[0]= ff_put_vc1_chroma_mc8_mmx_nornd; + } + + if (mm_flags & AV_CPU_FLAG_MMXEXT) { + ASSIGN_LF(mmx2); + dsp->avg_no_rnd_vc1_chroma_pixels_tab[0]= ff_avg_vc1_chroma_mc8_mmx2_nornd; + } else if (mm_flags & AV_CPU_FLAG_3DNOW) { + dsp->avg_no_rnd_vc1_chroma_pixels_tab[0]= ff_avg_vc1_chroma_mc8_3dnow_nornd; + } + + if (mm_flags & AV_CPU_FLAG_SSE2) { + dsp->vc1_v_loop_filter8 = ff_vc1_v_loop_filter8_sse2; + dsp->vc1_h_loop_filter8 = ff_vc1_h_loop_filter8_sse2; + dsp->vc1_v_loop_filter16 = vc1_v_loop_filter16_sse2; + dsp->vc1_h_loop_filter16 = vc1_h_loop_filter16_sse2; + } + if (mm_flags & AV_CPU_FLAG_SSSE3) { + ASSIGN_LF(ssse3); + dsp->put_no_rnd_vc1_chroma_pixels_tab[0]= ff_put_vc1_chroma_mc8_ssse3_nornd; + dsp->avg_no_rnd_vc1_chroma_pixels_tab[0]= ff_avg_vc1_chroma_mc8_ssse3_nornd; + } + if (mm_flags & AV_CPU_FLAG_SSE4) { + dsp->vc1_h_loop_filter8 = ff_vc1_h_loop_filter8_sse4; + dsp->vc1_h_loop_filter16 = vc1_h_loop_filter16_sse4; + } +#endif /* HAVE_YASM */ +} diff --git a/libavcodec/x86/vc1dsp_mmx.c b/libavcodec/x86/vc1dsp_mmx.c index 66251d0b15..adf89b2f0c 100644 --- a/libavcodec/x86/vc1dsp_mmx.c +++ b/libavcodec/x86/vc1dsp_mmx.c @@ -27,9 +27,11 @@ #include "libavutil/cpu.h" #include "libavutil/mem.h" #include "libavutil/x86/asm.h" +#include "libavutil/x86/cpu.h" #include "libavcodec/dsputil.h" #include "dsputil_mmx.h" #include "libavcodec/vc1dsp.h" +#include "vc1dsp.h" #if HAVE_INLINE_ASM @@ -685,57 +687,8 @@ static void vc1_inv_trans_8x8_dc_mmx2(uint8_t *dest, int linesize, DCTELEM *bloc ); } -#endif /* HAVE_INLINE_ASM */ - -#define LOOP_FILTER(EXT) \ -void ff_vc1_v_loop_filter4_ ## EXT(uint8_t *src, int stride, int pq); \ -void ff_vc1_h_loop_filter4_ ## EXT(uint8_t *src, int stride, int pq); \ -void ff_vc1_v_loop_filter8_ ## EXT(uint8_t *src, int stride, int pq); \ -void ff_vc1_h_loop_filter8_ ## EXT(uint8_t *src, int stride, int pq); \ -\ -static void vc1_v_loop_filter16_ ## EXT(uint8_t *src, int stride, int pq) \ -{ \ - ff_vc1_v_loop_filter8_ ## EXT(src, stride, pq); \ - ff_vc1_v_loop_filter8_ ## EXT(src+8, stride, pq); \ -} \ -\ -static void vc1_h_loop_filter16_ ## EXT(uint8_t *src, int stride, int pq) \ -{ \ - ff_vc1_h_loop_filter8_ ## EXT(src, stride, pq); \ - ff_vc1_h_loop_filter8_ ## EXT(src+8*stride, stride, pq); \ -} - -#if HAVE_YASM -LOOP_FILTER(mmx2) -LOOP_FILTER(sse2) -LOOP_FILTER(ssse3) - -void ff_vc1_h_loop_filter8_sse4(uint8_t *src, int stride, int pq); - -static void vc1_h_loop_filter16_sse4(uint8_t *src, int stride, int pq) -{ - ff_vc1_h_loop_filter8_sse4(src, stride, pq); - ff_vc1_h_loop_filter8_sse4(src+8*stride, stride, pq); -} -#endif /* HAVE_YASM */ - -void ff_put_vc1_chroma_mc8_mmx_nornd (uint8_t *dst, uint8_t *src, - int stride, int h, int x, int y); -void ff_avg_vc1_chroma_mc8_mmx2_nornd (uint8_t *dst, uint8_t *src, - int stride, int h, int x, int y); -void ff_avg_vc1_chroma_mc8_3dnow_nornd(uint8_t *dst, uint8_t *src, - int stride, int h, int x, int y); -void ff_put_vc1_chroma_mc8_ssse3_nornd(uint8_t *dst, uint8_t *src, - int stride, int h, int x, int y); -void ff_avg_vc1_chroma_mc8_ssse3_nornd(uint8_t *dst, uint8_t *src, - int stride, int h, int x, int y); - -void ff_vc1dsp_init_mmx(VC1DSPContext *dsp) +av_cold void ff_vc1dsp_init_mmx(VC1DSPContext *dsp) { - int mm_flags = av_get_cpu_flags(); - -#if HAVE_INLINE_ASM - if (mm_flags & AV_CPU_FLAG_MMX) { dsp->put_vc1_mspel_pixels_tab[ 0] = ff_put_vc1_mspel_mc00_mmx; dsp->put_vc1_mspel_pixels_tab[ 4] = put_vc1_mspel_mc01_mmx; dsp->put_vc1_mspel_pixels_tab[ 8] = put_vc1_mspel_mc02_mmx; @@ -755,12 +708,10 @@ void ff_vc1dsp_init_mmx(VC1DSPContext *dsp) dsp->put_vc1_mspel_pixels_tab[ 7] = put_vc1_mspel_mc31_mmx; dsp->put_vc1_mspel_pixels_tab[11] = put_vc1_mspel_mc32_mmx; dsp->put_vc1_mspel_pixels_tab[15] = put_vc1_mspel_mc33_mmx; +} - if (HAVE_YASM) - dsp->put_no_rnd_vc1_chroma_pixels_tab[0]= ff_put_vc1_chroma_mc8_mmx_nornd; - } - - if (mm_flags & AV_CPU_FLAG_MMXEXT) { +av_cold void ff_vc1dsp_init_mmxext(VC1DSPContext *dsp) +{ dsp->avg_vc1_mspel_pixels_tab[ 0] = ff_avg_vc1_mspel_mc00_mmx2; dsp->avg_vc1_mspel_pixels_tab[ 4] = avg_vc1_mspel_mc01_mmx2; dsp->avg_vc1_mspel_pixels_tab[ 8] = avg_vc1_mspel_mc02_mmx2; @@ -785,47 +736,5 @@ void ff_vc1dsp_init_mmx(VC1DSPContext *dsp) dsp->vc1_inv_trans_4x8_dc = vc1_inv_trans_4x8_dc_mmx2; dsp->vc1_inv_trans_8x4_dc = vc1_inv_trans_8x4_dc_mmx2; dsp->vc1_inv_trans_4x4_dc = vc1_inv_trans_4x4_dc_mmx2; - - if (HAVE_YASM) - dsp->avg_no_rnd_vc1_chroma_pixels_tab[0]= ff_avg_vc1_chroma_mc8_mmx2_nornd; - } else if (HAVE_YASM && mm_flags & AV_CPU_FLAG_3DNOW) { - dsp->avg_no_rnd_vc1_chroma_pixels_tab[0]= ff_avg_vc1_chroma_mc8_3dnow_nornd; - } - - if (HAVE_YASM && mm_flags & AV_CPU_FLAG_SSSE3) { - dsp->put_no_rnd_vc1_chroma_pixels_tab[0]= ff_put_vc1_chroma_mc8_ssse3_nornd; - dsp->avg_no_rnd_vc1_chroma_pixels_tab[0]= ff_avg_vc1_chroma_mc8_ssse3_nornd; - } -#endif /* HAVE_INLINE_ASM */ - -#define ASSIGN_LF(EXT) \ - dsp->vc1_v_loop_filter4 = ff_vc1_v_loop_filter4_ ## EXT; \ - dsp->vc1_h_loop_filter4 = ff_vc1_h_loop_filter4_ ## EXT; \ - dsp->vc1_v_loop_filter8 = ff_vc1_v_loop_filter8_ ## EXT; \ - dsp->vc1_h_loop_filter8 = ff_vc1_h_loop_filter8_ ## EXT; \ - dsp->vc1_v_loop_filter16 = vc1_v_loop_filter16_ ## EXT; \ - dsp->vc1_h_loop_filter16 = vc1_h_loop_filter16_ ## EXT - -#if HAVE_YASM - if (mm_flags & AV_CPU_FLAG_MMX) { - } - - if (mm_flags & AV_CPU_FLAG_MMXEXT) { - ASSIGN_LF(mmx2); - } - - if (mm_flags & AV_CPU_FLAG_SSE2) { - dsp->vc1_v_loop_filter8 = ff_vc1_v_loop_filter8_sse2; - dsp->vc1_h_loop_filter8 = ff_vc1_h_loop_filter8_sse2; - dsp->vc1_v_loop_filter16 = vc1_v_loop_filter16_sse2; - dsp->vc1_h_loop_filter16 = vc1_h_loop_filter16_sse2; - } - if (mm_flags & AV_CPU_FLAG_SSSE3) { - ASSIGN_LF(ssse3); - } - if (mm_flags & AV_CPU_FLAG_SSE4) { - dsp->vc1_h_loop_filter8 = ff_vc1_h_loop_filter8_sse4; - dsp->vc1_h_loop_filter16 = vc1_h_loop_filter16_sse4; - } -#endif /* HAVE_YASM */ } +#endif /* HAVE_INLINE_ASM */ diff --git a/libavformat/segment.c b/libavformat/segment.c index b0f8a856fe..ad9770eb5d 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -547,7 +547,7 @@ AVOutputFormat ff_segment_muxer = { .name = "segment", .long_name = NULL_IF_CONFIG_SMALL("segment"), .priv_data_size = sizeof(SegmentContext), - .flags = AVFMT_GLOBALHEADER | AVFMT_NOFILE, + .flags = AVFMT_NOFILE, .write_header = seg_write_header, .write_packet = seg_write_packet, .write_trailer = seg_write_trailer, |