Browse Source

add a few svn properties for *.bat, .sln, *.txt and .vcxproj files

git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@4357 10f7b99b-c216-0410-bff0-8a66a9350f
XhmikosR 6 years ago
parent
commit
1bccdc5e6c

+ 674
- 674
COPYING.txt
File diff suppressed because it is too large
View File


+ 71
- 71
docs/Authors.txt View File

@@ -1,71 +1,71 @@
1
-In order of appearance in the SVN:
2
-
3
-Active: (with SVN commit rights)
4
---------
5
-Casimir666              <casimir666@users.sourceforge.net>      Code, Admin, French
6
-clsid                   <clsid2@users.sourceforge.net>          Code
7
-Vodyannikov Aleksandr   <aleksoid@users.sourceforge.net>        Code
8
-tetsuo55                <tetsuo55@users.sourceforge.net>        Project Manager, Admin
9
-jonasno                 <jonasno@users.sourceforge.net>         Code, Swedish
10
-XhmikosR                <xhmikosr@users.sourceforge.net>        Various stuff
11
-nevcairiel              <nevcairiel@users.sourceforge.net>      Code
12
-xpc1000                 <xpc1000@users.sourceforge.net>         Code
13
-Underground78           <underground78@users.sourceforge.net>   Code, French
14
-v0lt                    <v0lt@users.sourceforge.net>            Code
15
-
16
-
17
-Inactive:
18
-----------
19
-Alexander Wild          <alexwild@users.sourceforge.net>        Code, German
20
-_xxl                    <drevil_xxl@users.sourceforge.net>      FFMpeg
21
-MatMaul                 <matmaul@users.sourceforge.net>         Code
22
-Beliyaal                <beliyaal@users.sourceforge.net>        Code
23
-Martin Panayotov        <mvpsoft@users.sourceforge.net>         Website
24
-Arto Jarvinen           <ar-jar@users.sourceforge.net>          Code
25
-spec-chum               <spec-chum@users.sourceforge.net>       Code
26
-Tomas Sen               <tomasen@users.sourceforge.net>         Code
27
-Attila T. Afra          <attila.afra@gmail.com>                 Code
28
-KindDragon              <kinddragon@users.sourceforge.net>      Code
29
-Di Luo (sansnom05)      <sansnom05@users.sourceforge.net>       Code
30
-
31
-
32
-Translators:
33
--------------
34
-YDY                     <ydy@users.sourceforge.net>             Russian
35
-Bosluk                  <bosluk@users.sourceforge.net>          Turkish
36
-khagaroth               <khagaroth@users.sourceforge.net>       Czech
37
-SquallMX                <squallmx@users.sourceforge.net>        Spanish
38
-Tamas Kleiber           <klei@users.sourceforge.net>            Hungarian
39
-XNeo                    <xneokr@users.sourceforge.net>          Korean
40
-arch__stanton           <arch__stanton@users.sourceforge.net>   Polish
41
-SigiTM                  <sigitm@users.sourceforge.net>          Italian
42
-Ihor Bobalo             <ibobalo@users.sourceforge.net>         Ukrainian
43
-Marian Hikanik          <mhikanik@users.sourceforge.net>        Slovak
44
-Kene Lin                <kenelin@users.sourceforge.net>         Chinese Traditional
45
-Bonami                  <bonami@users.sourceforge.net>          Chinese Simplified
46
-Mister-sh               <mister-sh@users.sourceforge.net>       Belarusian
47
-Roger Felipe            <rfrfrfrf@users.sourceforge.net>        Portuguese - Brazil
48
-Paul Tjepkema           <pietpuk123@users.sourceforge.net>      Dutch
49
-xiulet                  <xiulet@users.sourceforge.net>          Catalan
50
-arestarh                <arestarh1986@users.sourceforge.net>    Ukrainian
51
-Sebastiii               <sebastiii@users.sourceforge.net>       French
52
-roytam1                 <roytam1@users.sourceforge.net>         Japanese, Chinese Traditional, Chinese Simplified
53
-hrant77                 <hrant77@users.sourceforge.net>         Armenian
54
-Markus Gaugg            <prinzeugen@users.sourceforge.net>      German
55
-Superb                                                          Hebrew
56
-
57
-
58
-Contributors: (listed alphabetically)
59
---------------
60
-Alexx999, foxx1337, Haix (Polish), heksesang, judelaw, madshi, mtrz,
61
-nielsm, skaarj1, VSFilterMod team, X-Dron
62
-
63
-
64
-Trac moderators:
65
------------------
66
-namaiki, thevbm
67
-
68
-
69
-Many thanks to everyone who supported development without having svn write access.
70
-
71
-Based on the original version (C) 2002-2006 by Gabest (e-mail unknown)
1
+In order of appearance in the SVN:
2
+
3
+Active: (with SVN commit rights)
4
+--------
5
+Casimir666              <casimir666@users.sourceforge.net>      Code, Admin, French
6
+clsid                   <clsid2@users.sourceforge.net>          Code
7
+Vodyannikov Aleksandr   <aleksoid@users.sourceforge.net>        Code
8
+tetsuo55                <tetsuo55@users.sourceforge.net>        Project Manager, Admin
9
+jonasno                 <jonasno@users.sourceforge.net>         Code, Swedish
10
+XhmikosR                <xhmikosr@users.sourceforge.net>        Various stuff
11
+nevcairiel              <nevcairiel@users.sourceforge.net>      Code
12
+xpc1000                 <xpc1000@users.sourceforge.net>         Code
13
+Underground78           <underground78@users.sourceforge.net>   Code, French
14
+v0lt                    <v0lt@users.sourceforge.net>            Code
15
+
16
+
17
+Inactive:
18
+----------
19
+Alexander Wild          <alexwild@users.sourceforge.net>        Code, German
20
+_xxl                    <drevil_xxl@users.sourceforge.net>      FFMpeg
21
+MatMaul                 <matmaul@users.sourceforge.net>         Code
22
+Beliyaal                <beliyaal@users.sourceforge.net>        Code
23
+Martin Panayotov        <mvpsoft@users.sourceforge.net>         Website
24
+Arto Jarvinen           <ar-jar@users.sourceforge.net>          Code
25
+spec-chum               <spec-chum@users.sourceforge.net>       Code
26
+Tomas Sen               <tomasen@users.sourceforge.net>         Code
27
+Attila T. Afra          <attila.afra@gmail.com>                 Code
28
+KindDragon              <kinddragon@users.sourceforge.net>      Code
29
+Di Luo (sansnom05)      <sansnom05@users.sourceforge.net>       Code
30
+
31
+
32
+Translators:
33
+-------------
34
+YDY                     <ydy@users.sourceforge.net>             Russian
35
+Bosluk                  <bosluk@users.sourceforge.net>          Turkish
36
+khagaroth               <khagaroth@users.sourceforge.net>       Czech
37
+SquallMX                <squallmx@users.sourceforge.net>        Spanish
38
+Tamas Kleiber           <klei@users.sourceforge.net>            Hungarian
39
+XNeo                    <xneokr@users.sourceforge.net>          Korean
40
+arch__stanton           <arch__stanton@users.sourceforge.net>   Polish
41
+SigiTM                  <sigitm@users.sourceforge.net>          Italian
42
+Ihor Bobalo             <ibobalo@users.sourceforge.net>         Ukrainian
43
+Marian Hikanik          <mhikanik@users.sourceforge.net>        Slovak
44
+Kene Lin                <kenelin@users.sourceforge.net>         Chinese Traditional
45
+Bonami                  <bonami@users.sourceforge.net>          Chinese Simplified
46
+Mister-sh               <mister-sh@users.sourceforge.net>       Belarusian
47
+Roger Felipe            <rfrfrfrf@users.sourceforge.net>        Portuguese - Brazil
48
+Paul Tjepkema           <pietpuk123@users.sourceforge.net>      Dutch
49
+xiulet                  <xiulet@users.sourceforge.net>          Catalan
50
+arestarh                <arestarh1986@users.sourceforge.net>    Ukrainian
51
+Sebastiii               <sebastiii@users.sourceforge.net>       French
52
+roytam1                 <roytam1@users.sourceforge.net>         Japanese, Chinese Traditional, Chinese Simplified
53
+hrant77                 <hrant77@users.sourceforge.net>         Armenian
54
+Markus Gaugg            <prinzeugen@users.sourceforge.net>      German
55
+Superb                                                          Hebrew
56
+
57
+
58
+Contributors: (listed alphabetically)
59
+--------------
60
+Alexx999, foxx1337, Haix (Polish), heksesang, judelaw, madshi, mtrz,
61
+nielsm, skaarj1, VSFilterMod team, X-Dron
62
+
63
+
64
+Trac moderators:
65
+-----------------
66
+namaiki, thevbm
67
+
68
+
69
+Many thanks to everyone who supported development without having svn write access.
70
+
71
+Based on the original version (C) 2002-2006 by Gabest (e-mail unknown)

+ 66
- 66
docs/Changelog.txt View File

@@ -1,66 +1,66 @@
1
-This file includes only a short list of the changes between MPC-HC's versions.
2
-For the older changes see:
3
-http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc/trunk/docs/Changelog_old.txt
4
-
5
-Legend:
6
-+ New
7
-* Changed
8
-! Fixed
9
-
10
-
11
-1.6.2.X - Not released yet
12
-==============================
13
-+ Ticket #1792, Show an OSD message and a status message when a favorite is
14
-  created via the keyboard shortcut
15
-+ Ticket #2165, Improve the "Organize Favorites" dialog:
16
-    - the favorites can now be deleted using the delete key or the backspace key
17
-    - the buttons are disabled when they cannot be used
18
-* Ticket #734, A unicode encoding will now be used for the ini file. Old ASCII
19
-  ini files will be automatically converted to unicode. Favorites with unicode
20
-  filenames are now correctly handled when using an ini file
21
-* Ticket #1693, [VSFilter] Remove the feature preventing the screensaver from
22
-  running when VSFilter is active as it is a job for players not for filters
23
-* Ticket #1733/#2029, Include subfolders when opening a folder using the command
24
-  line or via the explorer context menu
25
-* Ticket #2157, Show the [DXVA] indicator even when playback is paused
26
-* Ticket #2163, Improve the "Save As" dialog: the dialog is updated more regularly and
27
-  the units for the sizes and the speed are now automatically adapted to the values
28
-* Reduced the maximum number of packets in the Queue, except for AVI. This will
29
-  reduce the amount of memory consumed by the player
30
-* Improved the "Open directory" dialog: the checkbox will now use only one line
31
-  when possible and the overall dialog will look better when using XP
32
-* Updated ffmpeg
33
-* Updated MediaInfoLib to v0.7.55
34
-* Updated ZenLib to v0.4.26
35
-* Updated SoundTouch to v1.7.0pre r142
36
-* Updated French, Turkish, Czech, Russian, Ukrainian, simplified Chinese, Japanese,
37
-  traditional Chinese, Italian and Polish translations
38
-* Removed GTSdll support
39
-! Broken playback and picture on H.264 & MPEG2 interlaced with DXVA on
40
-  intergrated Intel adapter
41
-! The settings location is now changed only when applying the changes in the
42
-  options dialog instead of immediately after changing the state of the checkbox
43
-! Improve the "Open" dialog:
44
-   - the "OK" button will be disabled until a file has been selected (this avoids
45
-     an error when clicking on "OK" while no file was selected)
46
-   - when the selected file cannot be dubbed (for example when opening an rtsp
47
-     stream), the wrong label was grayed out
48
-! Ticket #869, The playlist visibility state was incorrectly restored when MPC-HC
49
-  was quited in fullscreen mode while the option "Hide on fullscreen" was enabled
50
-! Ticket #1182, Unable to playback MPEG2 in AVI
51
-! Ticket #1290, Fix the reversed behavior of the playlist option "Hide on fullscreen"
52
-  when "Launch files in fullscreen" is enabled
53
-! Ticket #1447, Show volume change in the status bar (for non-OSD renderers and audio)
54
-! Ticket #1589, Crash with "Null (uncompressed)"
55
-! Ticket #1946, Skipping bug with EVR custom output and .webm with vsync on
56
-! Ticket #2090, Better handling of font fallback in the MediaInfo dialog so that
57
-  the font size is now correctly adapted to the font used
58
-! Ticket #2133, Javascript error in "player.html"
59
-! Ticket #2137, Disable animation when pressing the "Boss" key
60
-! Ticket #2155, Change the background color of the options pages caption so that
61
-  it is readable with all Windows themes
62
-! Ticket #2156, MPCVideoDec: Incorrect number of frames at the end of playback
63
-  with software decoding
64
-! Ticket #2161, Prevent the "Open" dialog from being opened multiple times (for
65
-  example when double clicking on the tray icon)
66
-! Ticket #2172, MP4Splitter: skip video tracks with motionless frames
1
+This file includes only a short list of the changes between MPC-HC's versions.
2
+For the older changes see:
3
+http://mpc-hc.svn.sourceforge.net/viewvc/mpc-hc/trunk/docs/Changelog_old.txt
4
+
5
+Legend:
6
++ New
7
+* Changed
8
+! Fixed
9
+
10
+
11
+1.6.2.X - Not released yet
12
+==============================
13
++ Ticket #1792, Show an OSD message and a status message when a favorite is
14
+  created via the keyboard shortcut
15
++ Ticket #2165, Improve the "Organize Favorites" dialog:
16
+    - the favorites can now be deleted using the delete key or the backspace key
17
+    - the buttons are disabled when they cannot be used
18
+* Ticket #734, A unicode encoding will now be used for the ini file. Old ASCII
19
+  ini files will be automatically converted to unicode. Favorites with unicode
20
+  filenames are now correctly handled when using an ini file
21
+* Ticket #1693, [VSFilter] Remove the feature preventing the screensaver from
22
+  running when VSFilter is active as it is a job for players not for filters
23
+* Ticket #1733/#2029, Include subfolders when opening a folder using the command
24
+  line or via the explorer context menu
25
+* Ticket #2157, Show the [DXVA] indicator even when playback is paused
26
+* Ticket #2163, Improve the "Save As" dialog: the dialog is updated more regularly and
27
+  the units for the sizes and the speed are now automatically adapted to the values
28
+* Reduced the maximum number of packets in the Queue, except for AVI. This will
29
+  reduce the amount of memory consumed by the player
30
+* Improved the "Open directory" dialog: the checkbox will now use only one line
31
+  when possible and the overall dialog will look better when using XP
32
+* Updated ffmpeg
33
+* Updated MediaInfoLib to v0.7.55
34
+* Updated ZenLib to v0.4.26
35
+* Updated SoundTouch to v1.7.0pre r142
36
+* Updated French, Turkish, Czech, Russian, Ukrainian, simplified Chinese, Japanese,
37
+  traditional Chinese, Italian and Polish translations
38
+* Removed GTSdll support
39
+! Broken playback and picture on H.264 & MPEG2 interlaced with DXVA on
40
+  intergrated Intel adapter
41
+! The settings location is now changed only when applying the changes in the
42
+  options dialog instead of immediately after changing the state of the checkbox
43
+! Improve the "Open" dialog:
44
+   - the "OK" button will be disabled until a file has been selected (this avoids
45
+     an error when clicking on "OK" while no file was selected)
46
+   - when the selected file cannot be dubbed (for example when opening an rtsp
47
+     stream), the wrong label was grayed out
48
+! Ticket #869, The playlist visibility state was incorrectly restored when MPC-HC
49
+  was quited in fullscreen mode while the option "Hide on fullscreen" was enabled
50
+! Ticket #1182, Unable to playback MPEG2 in AVI
51
+! Ticket #1290, Fix the reversed behavior of the playlist option "Hide on fullscreen"
52
+  when "Launch files in fullscreen" is enabled
53
+! Ticket #1447, Show volume change in the status bar (for non-OSD renderers and audio)
54
+! Ticket #1589, Crash with "Null (uncompressed)"
55
+! Ticket #1946, Skipping bug with EVR custom output and .webm with vsync on
56
+! Ticket #2090, Better handling of font fallback in the MediaInfo dialog so that
57
+  the font size is now correctly adapted to the font used
58
+! Ticket #2133, Javascript error in "player.html"
59
+! Ticket #2137, Disable animation when pressing the "Boss" key
60
+! Ticket #2155, Change the background color of the options pages caption so that
61
+  it is readable with all Windows themes
62
+! Ticket #2156, MPCVideoDec: Incorrect number of frames at the end of playback
63
+  with software decoding
64
+! Ticket #2161, Prevent the "Open" dialog from being opened multiple times (for
65
+  example when double clicking on the tray icon)
66
+! Ticket #2172, MP4Splitter: skip video tracks with motionless frames

+ 895
- 895
docs/Changelog_old.txt
File diff suppressed because it is too large
View File


+ 118
- 118
docs/Compilation.txt View File

@@ -1,118 +1,118 @@
1
-For up to date instructions on how to compile mpc-hc visit the wiki page:
2
-
3
-http://sourceforge.net/apps/trac/mpc-hc/wiki/How_to_compile_the_MPC
4
-
5
-
6
-Part A: Preparing the Visual Studio environment
7
-
8
- Visual Studio 2010
9
-  1. Install Visual C++ 2010, part of Visual Studio 2010 Professional (Express won't work, other editions work fine).
10
-  2. Install Visual Studio 2010 Service Pack 1 -> http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5&displaylang=en
11
-  3. Install the DirectX SDK (June 2010) -> http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3021d52b-514e-41d3-ad02-438a3ba730ba
12
-
13
-Part B: Preparing the GCC environment
14
- NOTES:
15
-  * If you installed the MSYS/MinGW package in an other directory you will have to use that path in the following steps.
16
-  * If you don't use TortoiseSVN then the revision number will be a hard-coded one, like 1.5.2.0.
17
-
18
- 1. Download and extract MSYS_MinGW_GCC_470_x86-x64.7z to C:\MSYS\ -> http://xhmikosr.1f0.de/tools/MSYS_MinGW_GCC_470_x86-x64.7z
19
-    For the components and their version see: http://xhmikosr.1f0.de/tools/MSYS_MinGW_GCC_470_x86-x64_components.txt
20
- 2. Edit the "fstab" file in C:\MSYS\etc\ to specify your MinGW path.
21
-    Add this to it: C:\MSYS\mingw	\mingw
22
-    Note the tab-space between mingw and \mingw
23
- 3. Add the following environment variables (in System Properties->Advanced->Environment Variables):
24
-
25
-    Variable    Value
26
-    MSYS        C:\MSYS
27
-    MINGW32     C:\MSYS\mingw
28
-    MINGW64     C:\MSYS\mingw
29
-
30
-Modify the "Path" environment variable by adding at the end: ;%MINGW32%\bin;%MSYS%\bin
31
-
32
- * Optional, if you wish to use the cutting edge GCC branch you can instead follow these steps:
33
-  a. Delete everything in this folder: C:\MSYS\mingw\
34
-  b. Download and extract the new MinGW GCC version into C:\MSYS\mingw\ from: http://www.xvidvideo.ru/component/docman/cat_view/28-cross-mingwgcc-x86x64.html
35
-
36
-
37
-Part C: Downloading and compiling the MPC-HC source
38
-
39
-1. Use a subversion client to checkout MPC-HC's trunk to C:\mpc-hc (or anywhere else you like)
40
-    Repository URL: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk
41
-    The recommended SVN client is TortoiseSVN (grab it from http://tortoisesvn.net/downloads)
42
-2. When using TortoiseSVN
43
-    a) Create an empty directory where you want to store the source files. e.g: C:\mpc-hc
44
-    b) Right-click on that directory and choose "SVN checkout".
45
-    c) Put https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk in "URL of Repository" and press OK.
46
-    d) Wait for the source tree to be downloaded.
47
-
48
-3. Open the solution file C:\mpc-hc\mpc-hc.sln
49
-    Change the solution's configuration to "Release" (in the toolbar).
50
-4. Right click the mpc-hc project, and open up its Properties.
51
-   There, go to Configuration Properties->Linker->General. Add the following directories to the "Additional Library Directories":
52
-    For Win32 platform      $(MINGW32)\lib\gcc\i686-pc-mingw32\4.7.0;$(MINGW32)\i686-pc-mingw32\lib\
53
-    For x64 platform        $(MINGW64)\lib\gcc\x86_64-w64-mingw32\4.7.0;$(MINGW64)\x86_64-w64-mingw32\lib\
54
-
55
-Note: If you update your GCC, make sure you change the version number in the above paths, e.g. 4.7.0
56
-Another way to do it, is by copying the needed MinGW libs (libgcc.a and libmingwex.a) into the C:\mpc-hc\lib and C:\mpc-hc\lib64 folders.
57
-
58
-
59
-@ECHO OFF
60
-REM Save this script to your mpc-hc source dir
61
-REM Get the GCC version
62
-FOR /f "tokens=1,2 delims= " %%K IN (
63
-  'gcc -dumpversion'
64
-) DO (
65
-  SET "gccver=%%K" & Call :SubGCCVer %%gccver:*Z=%%
66
-)
67
-
68
-REM Copy the needed libs
69
-ECHO x86:
70
-COPY /V /Y "%MINGW32%\i686-pc-mingw32\lib\libmingwex.a" "lib\"
71
-COPY /V /Y "%MINGW32%\lib\gcc\i686-pc-mingw32\%gccver%\libgcc.a" "lib\"
72
-ECHO x64:
73
-rem See Part D for libmingwex.a x64
74
-COPY /V /Y "%MINGW64%\lib\gcc\x86_64-w64-mingw32\%gccver%\libgcc.a" "lib64\"
75
-ECHO .
76
-
77
-PAUSE
78
-EXIT /B
79
-
80
-:SubGCCVer
81
-SET gccver=%*
82
-EXIT /B
83
-
84
-
85
-5. Press OK to save the changes and close the Properties window.
86
-6. Press F7 to build the solution.
87
-7. You now have mpc-hc.exe under C:\mpc-hc\bin\mpc-hc_x86
88
-8. Open the solution file C:\mpc-hc\mpciconlib.sln
89
-9. Press F7 to build the solution.
90
-10. You now have mpciconlib.dll under C:\mpc-hc\bin\mpc-hc_x86
91
-11. Open the solution file C:\mpc-hc\mpcresources.sln
92
-    In Visual Studio go to Build->Batch Build->Press Select All->Press Build
93
-12. You now have mpcresources.XX.dll under C:\mpc-hc\bin\mpc-hc_x86\Lang
94
-
95
-Alternatively, you can use build.bat (run: build.bat help for more info)
96
-
97
-
98
-Part D: Building FFmpeg x64 (libavcodec) with GCC
99
-
100
-When building FFmpeg (project libavcodec) in 32 bit mode, GCC is used and according to the makefile that is automatically invoked from the solution. Doing so for 64 bit, requires some additional steps:
101
- 1. Run MSYS and cd to the trunk\src\filters\transform\MPCVideoDec\ffmpeg_x64 folder
102
-Example: cd /c/mpc-hc/src/filters/transform/MPCVideoDec/ffmpeg_x64/
103
-(notice that the first part will most probably differ for the exact paths)
104
- 2. checkout the MinGW64 files by running: buildmingwlibs.sh --update
105
- 3. run the buildmingwlibs.sh script, only to compile:
106
-      buildmingwlibs.sh --compile
107
-    Or
108
-      buildmingwlibs.sh --update --compile
109
-
110
-After the compilation is done, libgcc.a and libmingwex.a will be placed in C:\mpc-hc\lib64
111
-
112
-Now libavcodec can be compiled from within the MPC-HC visual studio solution file, and it will be linked correctly with the other components.
113
-
114
-Part E: Building the installer
115
-
116
-Download Inno Setup Unicode v5.4.3 or newer from: http://www.jrsoftware.org/isdl.php
117
-Install everything and then go to C:\mpc-hc\distrib, open mpc-hc_setup.iss with Inno Setup, read the first comments in the script and compile it.
118
-Note: ISTool does not handle Unicode well so don't use it. Use Inno Setup's built-in IDE.
1
+For up to date instructions on how to compile mpc-hc visit the wiki page:
2
+
3
+http://sourceforge.net/apps/trac/mpc-hc/wiki/How_to_compile_the_MPC
4
+
5
+
6
+Part A: Preparing the Visual Studio environment
7
+
8
+ Visual Studio 2010
9
+  1. Install Visual C++ 2010, part of Visual Studio 2010 Professional (Express won't work, other editions work fine).
10
+  2. Install Visual Studio 2010 Service Pack 1 -> http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5&displaylang=en
11
+  3. Install the DirectX SDK (June 2010) -> http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3021d52b-514e-41d3-ad02-438a3ba730ba
12
+
13
+Part B: Preparing the GCC environment
14
+ NOTES:
15
+  * If you installed the MSYS/MinGW package in an other directory you will have to use that path in the following steps.
16
+  * If you don't use TortoiseSVN then the revision number will be a hard-coded one, like 1.5.2.0.
17
+
18
+ 1. Download and extract MSYS_MinGW_GCC_470_x86-x64.7z to C:\MSYS\ -> http://xhmikosr.1f0.de/tools/MSYS_MinGW_GCC_470_x86-x64.7z
19
+    For the components and their version see: http://xhmikosr.1f0.de/tools/MSYS_MinGW_GCC_470_x86-x64_components.txt
20
+ 2. Edit the "fstab" file in C:\MSYS\etc\ to specify your MinGW path.
21
+    Add this to it: C:\MSYS\mingw	\mingw
22
+    Note the tab-space between mingw and \mingw
23
+ 3. Add the following environment variables (in System Properties->Advanced->Environment Variables):
24
+
25
+    Variable    Value
26
+    MSYS        C:\MSYS
27
+    MINGW32     C:\MSYS\mingw
28
+    MINGW64     C:\MSYS\mingw
29
+
30
+Modify the "Path" environment variable by adding at the end: ;%MINGW32%\bin;%MSYS%\bin
31
+
32
+ * Optional, if you wish to use the cutting edge GCC branch you can instead follow these steps:
33
+  a. Delete everything in this folder: C:\MSYS\mingw\
34
+  b. Download and extract the new MinGW GCC version into C:\MSYS\mingw\ from: http://www.xvidvideo.ru/component/docman/cat_view/28-cross-mingwgcc-x86x64.html
35
+
36
+
37
+Part C: Downloading and compiling the MPC-HC source
38
+
39
+1. Use a subversion client to checkout MPC-HC's trunk to C:\mpc-hc (or anywhere else you like)
40
+    Repository URL: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk
41
+    The recommended SVN client is TortoiseSVN (grab it from http://tortoisesvn.net/downloads)
42
+2. When using TortoiseSVN
43
+    a) Create an empty directory where you want to store the source files. e.g: C:\mpc-hc
44
+    b) Right-click on that directory and choose "SVN checkout".
45
+    c) Put https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk in "URL of Repository" and press OK.
46
+    d) Wait for the source tree to be downloaded.
47
+
48
+3. Open the solution file C:\mpc-hc\mpc-hc.sln
49
+    Change the solution's configuration to "Release" (in the toolbar).
50
+4. Right click the mpc-hc project, and open up its Properties.
51
+   There, go to Configuration Properties->Linker->General. Add the following directories to the "Additional Library Directories":
52
+    For Win32 platform      $(MINGW32)\lib\gcc\i686-pc-mingw32\4.7.0;$(MINGW32)\i686-pc-mingw32\lib\
53
+    For x64 platform        $(MINGW64)\lib\gcc\x86_64-w64-mingw32\4.7.0;$(MINGW64)\x86_64-w64-mingw32\lib\
54
+
55
+Note: If you update your GCC, make sure you change the version number in the above paths, e.g. 4.7.0
56
+Another way to do it, is by copying the needed MinGW libs (libgcc.a and libmingwex.a) into the C:\mpc-hc\lib and C:\mpc-hc\lib64 folders.
57
+
58
+
59
+@ECHO OFF
60
+REM Save this script to your mpc-hc source dir
61
+REM Get the GCC version
62
+FOR /f "tokens=1,2 delims= " %%K IN (
63
+  'gcc -dumpversion'
64
+) DO (
65
+  SET "gccver=%%K" & Call :SubGCCVer %%gccver:*Z=%%
66
+)
67
+
68
+REM Copy the needed libs
69
+ECHO x86:
70
+COPY /V /Y "%MINGW32%\i686-pc-mingw32\lib\libmingwex.a" "lib\"
71
+COPY /V /Y "%MINGW32%\lib\gcc\i686-pc-mingw32\%gccver%\libgcc.a" "lib\"
72
+ECHO x64:
73
+rem See Part D for libmingwex.a x64
74
+COPY /V /Y "%MINGW64%\lib\gcc\x86_64-w64-mingw32\%gccver%\libgcc.a" "lib64\"
75
+ECHO .
76
+
77
+PAUSE
78
+EXIT /B
79
+
80
+:SubGCCVer
81
+SET gccver=%*
82
+EXIT /B
83
+
84
+
85
+5. Press OK to save the changes and close the Properties window.
86
+6. Press F7 to build the solution.
87
+7. You now have mpc-hc.exe under C:\mpc-hc\bin\mpc-hc_x86
88
+8. Open the solution file C:\mpc-hc\mpciconlib.sln
89
+9. Press F7 to build the solution.
90
+10. You now have mpciconlib.dll under C:\mpc-hc\bin\mpc-hc_x86
91
+11. Open the solution file C:\mpc-hc\mpcresources.sln
92
+    In Visual Studio go to Build->Batch Build->Press Select All->Press Build
93
+12. You now have mpcresources.XX.dll under C:\mpc-hc\bin\mpc-hc_x86\Lang
94
+
95
+Alternatively, you can use build.bat (run: build.bat help for more info)
96
+
97
+
98
+Part D: Building FFmpeg x64 (libavcodec) with GCC
99
+
100
+When building FFmpeg (project libavcodec) in 32 bit mode, GCC is used and according to the makefile that is automatically invoked from the solution. Doing so for 64 bit, requires some additional steps:
101
+ 1. Run MSYS and cd to the trunk\src\filters\transform\MPCVideoDec\ffmpeg_x64 folder
102
+Example: cd /c/mpc-hc/src/filters/transform/MPCVideoDec/ffmpeg_x64/
103
+(notice that the first part will most probably differ for the exact paths)
104
+ 2. checkout the MinGW64 files by running: buildmingwlibs.sh --update
105
+ 3. run the buildmingwlibs.sh script, only to compile:
106
+      buildmingwlibs.sh --compile
107
+    Or
108
+      buildmingwlibs.sh --update --compile
109
+
110
+After the compilation is done, libgcc.a and libmingwex.a will be placed in C:\mpc-hc\lib64
111
+
112
+Now libavcodec can be compiled from within the MPC-HC visual studio solution file, and it will be linked correctly with the other components.
113
+
114
+Part E: Building the installer
115
+
116
+Download Inno Setup Unicode v5.4.3 or newer from: http://www.jrsoftware.org/isdl.php
117
+Install everything and then go to C:\mpc-hc\distrib, open mpc-hc_setup.iss with Inno Setup, read the first comments in the script and compile it.
118
+Note: ISTool does not handle Unicode well so don't use it. Use Inno Setup's built-in IDE.

+ 80
- 80
docs/Readme.txt View File

@@ -1,80 +1,80 @@
1
-Media Player Classic - Home Cinema (MPC-HC) is a free and open source audio
2
-and video player for Windows. MPC-HC is based on the original Guliverkli project
3
-and contains additional features and bug fixes.
4
-
5
-
6
-Main Features:
7
----------------
8
-* Option to remove tearing
9
-* Better support for Windows Vista/7, including a 64-bit build
10
-* Support for EVR/EVR CP (Enhanced Video Renderer)
11
-* Supports most types of subtitles including BD .sup files
12
-* Playback and recording of television, if a supported TV tuner is installed
13
-* OSD info (On Screen Display)
14
-* Multi-Monitor support
15
-* Various pixel shaders
16
-* Color management
17
-* 22 translations available
18
-
19
-
20
-Supported Operating Systems:
21
------------------------------
22
-* Windows XP SP3, Vista, 7 32bit/64bit
23
-
24
-
25
-System Requirements:
26
----------------------
27
-* An SSE capable CPU
28
-* The latest DirectX 9.0c runtime (June 2010). Install it regardless of
29
-  the operating system, they all need it.
30
-  Web installer:  http://www.microsoft.com/download/en/details.aspx?id=35
31
-  Full:           http://www.microsoft.com/download/en/details.aspx?id=8109
32
-
33
-
34
-Links:
35
--------
36
-Website:          http://mpc-hc.sourceforge.net
37
-Project Page:     http://sourceforge.net/projects/mpc-hc/
38
-Mirror (faster):  http://code.google.com/p/mpc-hc/source/list
39
-Help and Support: http://sourceforge.net/apps/trac/mpc-hc/
40
-IRC Channel:      #mpc-hc / #mpc-hc-dev at Freenode
41
-Donations:        http://sourceforge.net/donate/index.php?group_id=170561
42
-
43
-
44
-For the people involved in the development, see Authors.txt.
45
-MPC-HC's code is licensed under GPL v3 (see COPYING.txt).
46
-
47
-Translations are done by various translators (see Authors.txt).
48
-
49
-
50
-MPC-HC makes use of the following 3rd party code:
51
-
52
-Project             License                    Website
53
--------------------------------------------------------------------------------------
54
-ATL Server          Ms-LPL                     http://atlserver.codeplex.com/
55
-Bento4              GPLv2                      http://zebulon.bok.net/trac/Bento4
56
-CFileVersionInfo    -                          -
57
-CLineNumberEdit     -                          -
58
-CSizingControlBar   GPLv2                      http://www.datamekanix.com/sizecbar/
59
-Detours             MSR-SSLA                   http://research.microsoft.com/en-us/projects/detours/
60
-ffmpeg              GPLv2                      http://www.ffmpeg.org/
61
-liba52              GPLv2                      http://liba52.sourceforge.net/
62
-libav               GPLv2                      http://libav.org/
63
-libdca              GPLv2                      http://www.videolan.org/developers/libdca.html
64
-libflac             GPLv2 / New BSD License    http://flac.sourceforge.net/
65
-libogg              New BSD License            http://www.xiph.org/
66
-libpng              libpng License             http://libpng.sourceforge.net/
67
-Little CMS          MIT License                http://www.littlecms.com/
68
-Logitech SDK        -                          -
69
-MediaInfoLib        LGPLv3                     http://mediainfo.sourceforge.net/
70
-MultiMon            CPOL                       http://www.codeproject.com/KB/GDI/multimon.aspx
71
-mpeg2dec            GPLv2                      http://libmpeg2.sourceforge.net/
72
-pngdib              -                          http://entropymine.com/jason/pngdib/
73
-QuickTime SDK       -                          -
74
-RealMedia SDK       -                          -
75
-ResizableLib        Artistic License           http://sourceforge.net/projects/resizablelib/
76
-SoundTouch          LGPLv2.1                   http://www.surina.net/soundtouch/
77
-TreePropSheet       -                          -
78
-VirtualDub          GPLv2                      http://www.virtualdub.org/
79
-ZenLib              Simplified BSD License     http://sourceforge.net/projects/zenlib/
80
-zlib                zlib License               http://zlib.net/
1
+Media Player Classic - Home Cinema (MPC-HC) is a free and open source audio
2
+and video player for Windows. MPC-HC is based on the original Guliverkli project
3
+and contains additional features and bug fixes.
4
+
5
+
6
+Main Features:
7
+---------------
8
+* Option to remove tearing
9
+* Better support for Windows Vista/7, including a 64-bit build
10
+* Support for EVR/EVR CP (Enhanced Video Renderer)
11
+* Supports most types of subtitles including BD .sup files
12
+* Playback and recording of television, if a supported TV tuner is installed
13
+* OSD info (On Screen Display)
14
+* Multi-Monitor support
15
+* Various pixel shaders
16
+* Color management
17
+* 22 translations available
18
+
19
+
20
+Supported Operating Systems:
21
+-----------------------------
22
+* Windows XP SP3, Vista, 7 32bit/64bit
23
+
24
+
25
+System Requirements:
26
+---------------------
27
+* An SSE capable CPU
28
+* The latest DirectX 9.0c runtime (June 2010). Install it regardless of
29
+  the operating system, they all need it.
30
+  Web installer:  http://www.microsoft.com/download/en/details.aspx?id=35
31
+  Full:           http://www.microsoft.com/download/en/details.aspx?id=8109
32
+
33
+
34
+Links:
35
+-------
36
+Website:          http://mpc-hc.sourceforge.net
37
+Project Page:     http://sourceforge.net/projects/mpc-hc/
38
+Mirror (faster):  http://code.google.com/p/mpc-hc/source/list
39
+Help and Support: http://sourceforge.net/apps/trac/mpc-hc/
40
+IRC Channel:      #mpc-hc / #mpc-hc-dev at Freenode
41
+Donations:        http://sourceforge.net/donate/index.php?group_id=170561
42
+
43
+
44
+For the people involved in the development, see Authors.txt.
45
+MPC-HC's code is licensed under GPL v3 (see COPYING.txt).
46
+
47
+Translations are done by various translators (see Authors.txt).
48
+
49
+
50
+MPC-HC makes use of the following 3rd party code:
51
+
52
+Project             License                    Website
53
+-------------------------------------------------------------------------------------
54
+ATL Server          Ms-LPL                     http://atlserver.codeplex.com/
55
+Bento4              GPLv2                      http://zebulon.bok.net/trac/Bento4
56
+CFileVersionInfo    -                          -
57
+CLineNumberEdit     -                          -
58
+CSizingControlBar   GPLv2                      http://www.datamekanix.com/sizecbar/
59
+Detours             MSR-SSLA                   http://research.microsoft.com/en-us/projects/detours/
60
+ffmpeg              GPLv2                      http://www.ffmpeg.org/
61
+liba52              GPLv2                      http://liba52.sourceforge.net/
62
+libav               GPLv2                      http://libav.org/
63
+libdca              GPLv2                      http://www.videolan.org/developers/libdca.html
64
+libflac             GPLv2 / New BSD License    http://flac.sourceforge.net/
65
+libogg              New BSD License            http://www.xiph.org/
66
+libpng              libpng License             http://libpng.sourceforge.net/
67
+Little CMS          MIT License                http://www.littlecms.com/
68
+Logitech SDK        -                          -
69
+MediaInfoLib        LGPLv3                     http://mediainfo.sourceforge.net/
70
+MultiMon            CPOL                       http://www.codeproject.com/KB/GDI/multimon.aspx
71
+mpeg2dec            GPLv2                      http://libmpeg2.sourceforge.net/
72
+pngdib              -                          http://entropymine.com/jason/pngdib/
73
+QuickTime SDK       -                          -
74
+RealMedia SDK       -                          -
75
+ResizableLib        Artistic License           http://sourceforge.net/projects/resizablelib/
76
+SoundTouch          LGPLv2.1                   http://www.surina.net/soundtouch/
77
+TreePropSheet       -                          -
78
+VirtualDub          GPLv2                      http://www.virtualdub.org/
79
+ZenLib              Simplified BSD License     http://sourceforge.net/projects/zenlib/
80
+zlib                zlib License               http://zlib.net/

+ 18
- 18
docs/Release.txt View File

@@ -1,18 +1,18 @@
1
-Here is a quick how-to release a new stable build:
2
-
3
-1) Make sure you have a clean source tree, no modified files included
4
-2) Update the revision number and the date in Changelog.txt
5
-3) Compile MPC-HC and the standalone filters
6
-4) Create an svn tag for the new release
7
-5) Keep the PDB files of all the filters and MPC-HC builds
8
-6) Upload the binary packages on SF following the directory and the packages names scheme
9
-   (you can also upload the PDB files too, use 7zip for creating the 7z packages)
10
-7) Update the webpage with the new download links, history and version.txt with
11
-   the new version number (in the SF FTP)
12
-
13
-
14
-In the next commit, bump the version:
15
-
16
-1) In "include/Version.h"
17
-2) In "src/mplayerc/res/mpc-hc.exe.manifest.conf" and
18
-   "src/mplayerc/res/mpc-hc.exe.manifest.template"
1
+Here is a quick how-to release a new stable build:
2
+
3
+1) Make sure you have a clean source tree, no modified files included
4
+2) Update the revision number and the date in Changelog.txt
5
+3) Compile MPC-HC and the standalone filters
6
+4) Create an svn tag for the new release
7
+5) Keep the PDB files of all the filters and MPC-HC builds
8
+6) Upload the binary packages on SF following the directory and the packages names scheme
9
+   (you can also upload the PDB files too, use 7zip for creating the 7z packages)
10
+7) Update the webpage with the new download links, history and version.txt with
11
+   the new version number (in the SF FTP)
12
+
13
+
14
+In the next commit, bump the version:
15
+
16
+1) In "include/Version.h"
17
+2) In "src/mplayerc/res/mpc-hc.exe.manifest.conf" and
18
+   "src/mplayerc/res/mpc-hc.exe.manifest.template"

+ 1
- 1
include/atl/readme.txt View File

@@ -1,2 +1,2 @@
1
-ATL Server Library and Tools
1
+ATL Server Library and Tools
2 2
 http://www.codeplex.com/AtlServer/Release/ProjectReleases.aspx?ReleaseId=3754

+ 247
- 247
include/dsm/dsm.txt View File

@@ -1,247 +1,247 @@
1
-/*
2
- *  Copyright (C) 2005 Gabest
3
- *  http://www.gabest.org
4
- *
5
- *  This file format is free to use as long as its specification is not
6
- *  modified or extended without the permission of Gabest. Suggestions
7
- *  can be sent in email or posted to the forum at sf.net/projects/guliverkli.
8
- *
9
- */
10
-
11
------------------------
12
-The .dsm file structure
13
------------------------
14
-
15
-FileInfo + Header Packets + Samples + Footer Packets
16
-
17
-Header & Footer Packets:
18
-- Required: MediaType
19
-- Optional: StreamInfo, Chapters, SyncPoints, Resource
20
-
21
-Notes: 
22
-- SyncPoints is optional because seeking can be performed simply by searching for packet syncpoints and their timestamps.
23
-- This layout is fine for streaming. On connection send everything up to Sample packets, build the graph at the other end, then the rest when playing. (TODO: introduce NewSegment packet, to support seeking over network)
24
-- The resolution of timestamp and duration is 100ns.
25
-- Strings are zero terminated utf-8 strings.
26
-- Date format string: "%Y-%m-%d %H:%M:%S". (GMT)
27
-- Byte order is big-endian
28
-
29
-Definitions
30
------------
31
-
32
-DSMF_VERSION    = 0x01
33
-
34
-DSMSW           = 44534D53 ("DSMS")
35
-DSMSW_SIZE      = 4
36
-
37
-DSMP_FILEINFO   = 0
38
-DSMP_STREAMINFO = 1
39
-DSMP_MEDIATYPE  = 2
40
-DSMP_CHAPTERS   = 3
41
-DSMP_SAMPLE     = 4
42
-DSMP_SYNCPOINTS = 5
43
-DSMP_RESOURCE   = 6
44
-
45
-Packet
46
-------
47
-
48
-DSMSW (DSMSW_SIZE bytes) (DirectShow Media SyncWord)
49
-DSMP_* (5 bits)
50
-data size length (3 bits -> 1-8 bytes)
51
-data size (1-8 bytes)
52
-
53
-[... data ...]
54
-
55
-FileInfo : extends Packet (DSMP_FILEINFO)
56
------------------------------------------
57
-
58
-version (1 byte, DSMF_VERSION)
59
-
60
-... repeated n times ...
61
-
62
-id (4 bytes, alphanum)
63
-string
64
-
65
-... repeated n times ...
66
-
67
-Notes:
68
-- Parsers should not open files with higher "version" than they were compiled for.
69
-- Suggested values of "id": 
70
-    "TITL": Title
71
-    "AUTH": Author
72
-    "RTNG": Rating
73
-    "CPYR": Copyright
74
-    "DESC": Description
75
-    "APPL": Application
76
-    "MUXR": Muxer
77
-    "DATE": Encoding date
78
-    ... more to be defined ...
79
-
80
-MediaType : extends Packet (DSMP_MEDIATYPE)
81
--------------------------------------------
82
-
83
-stream id (1 byte)
84
-
85
-majortype (sizeof(GUID))
86
-subtype (sizeof(GUID))
87
-bFixedSizeSamples (1 bit)
88
-bTemporalCompression (1 bit)
89
-lSampleSize (30 bit)
90
-formattype (sizeof(GUID))
91
-
92
-[... format data ...]
93
-
94
-Notes:
95
-- Multiple MediaTypes per stream is NOT allowed
96
-- bFixedSizeSamples, bTemporalCompression, lSampleSize are only there to preserve compatibility with dshow's media type structure, they aren't playing a role in anything really.
97
-
98
-StreamInfo : extends Packet (DSMP_STREAMINFO)
99
----------------------------------------------
100
-
101
-stream id (1 byte)
102
-
103
-... repeated n times ...
104
-
105
-id (4 bytes, alphanum)
106
-string
107
-
108
-... repeated n times ...
109
-
110
-Notes:
111
-- Suggested values of "id": 
112
-    "NAME": Stream name
113
-    "SGRP": Stream group (groupped streams can be useful if the splitter is able to group and switch between them, but it's not a strict requirement towards dsm splitters)
114
-    "LANG": Language code (ISO 639-2)
115
-    "DESC": Description
116
-    ... more to be defined ...
117
-
118
-Chapters : extends Packet (DSMP_CHAPTERS)
119
------------------------------------------
120
-
121
-... repeated n times ...
122
-
123
-timestamp delta sign (1 bit, <0?)
124
-timestamp delta length (3 bits -> 0-7 bytes)
125
-reserved (4 bits)
126
-timestamp delta (0-7 bytes)
127
-string
128
-
129
-... repeated n times ...
130
-
131
-Notes: 
132
-- "timestamp delta" holds the difference to the previous value, starts at 0.
133
-
134
-Sample : extends Packet (DSMP_SAMPLE)
135
--------------------------------------
136
-
137
-stream id (1 byte)
138
-
139
-syncpoint (1 bit)
140
-timestamp sign (1 bit, <0?)
141
-timestamp length (3 bits -> 0-7 bytes)
142
-duration length (3 bits -> 0-7 bytes)
143
-
144
-timestamp (0-7 bytes)
145
-duration (0-7 bytes)
146
-
147
-[... data ...]
148
-
149
-Notes:
150
-- sign == 1 && timestamp length == 0 -> timestamp and duration is unknown (but for syncpoints it cannot be unknown!)
151
-- sign == 0 && timestamp length == 0 -> simply means the value is stored on zero bytes and its value is zero too.
152
-- timestamps of syncpoints must be strictly in increasing order.
153
-- timestamps can be negative (to allow cutting a file at anywhere, preroll samples may need to be saved)
154
-
155
-SyncPoints : extends Packet (DSMP_SYNCPOINTS)
156
----------------------------------------------
157
-
158
-... repeated n times ...
159
-
160
-timestamp delta sign (1 bit, <0?)
161
-timestamp delta length (3 bits -> 0-7 bytes)
162
-file position delta length (3 bits -> 0-7 bytes)
163
-reserved (1 bit)
164
-
165
-timestamp delta (0-7 bytes)
166
-file position delta (0-7 bytes)
167
-
168
-... repeated n times ...
169
-
170
-Notes: 
171
-- "timestamp delta" / "file position delta" holds the difference to the previous value, both start at 0.
172
-
173
-The algorithm of SyncPoints generation
174
---------------------------------------
175
-
176
-First example:
177
-
178
-stream 1: 1,5,8 (video)
179
-stream 2: 2,3,6,7,9 (audio)
180
-stream 3: 4 (subtitle)
181
-
182
-1 ----|               1->2   1      +2        -> 1 (t 1, fp 1)
183
-      |---- 2         2->3   1,2    +3 -2     -> 1 
184
-      |---- 3         3->4   1,3    +4        -> 1
185
-    +-|-- 4 (start)   4->5   1,3,4  +5 -1     -> 1
186
-5 --|-|               5->6   3,4,5  +6 -3     -> 3 (t 5, fp 3)
187
-    | |---- 6         6->7   4,5,6  +7 -6     -> 4 (t 6, fp 4)
188
-    | |---- 7         7->8   4,5,7  +8 -7 -4  -> 4
189
-    +-|-- 4 (stop)    
190
-      |---- 8         8->9   5,8    +9 -5     -> 5 (t 8, fp 5)
191
-9 ----|               9->10  8,9   +10 -8     -> 8 (t 9, fp 8)
192
-      |---- 10        10->   9,10             -> 9 (t 10, fp 9)
193
-
194
-Notice how it is the values of the first and last elements of the queue are used.
195
-
196
-In the end it represents the following: (timestamp ranges mapped to file positions)
197
-
198
-1->5:  [1]
199
-5->6:  [3]
200
-6->8:  [4]
201
-8->9:  [5]
202
-9->10: [8]
203
-10->:  [9]
204
-
205
-Example usage: 
206
-
207
-Seeking to 7 would mean we need to start decoding at the file position of 4, which 
208
-makes sure we hit at least one syncpoint from every stream (4,5,7 and 6 too, but 6
209
-can be skipped) until we reach 7.
210
-
211
----
212
-
213
-Second example:
214
-
215
-This is going to be a bit more complicated case. (I hope you like my ascii art :)
216
-
217
-stream 1: 1,4,5,6,7 (video)
218
-stream 2: 2,3 (subtitle)
219
-
220
-1 -----|              1->2   1      +2        -> 1 (t 1, fp 1)
221
-     +-|--- 2 (start) 2->3   1,2   (+3 NOT!)  -> 1
222
-   +-|-|- 3 (start)   3->4   1,2    +4 -1     -> 1
223
-4 -|-|-|              4->5   2,4    +5 -4     -> 2 (t 4, fp 2)
224
-5 -|-|-|              5->6   2,5    +6 -5 -2  -> 2
225
-   +-|-|- 3 (stop)    
226
-     +-|--- 2 (stop)  
227
-6 -----|              6->7   6      +7 -6     -> 6 (t 6, fp 6)
228
-7 -----|              7->    7                -> 7 (t 7, fp 7)
229
-
230
-The problem with subtitles that they are discontinous, overlapped and can totally hide 
231
-other syncpoints, just like 2 hides 4, 5 and even 3 fully (which requires special handling, 
232
-see "NOT!"). That means such a subtitle, when it is too long, can influence seeking time 
233
-by a lot. It might be wise and worth limiting the duration of samples to a couple of minutes, 
234
-possibly sacrificing a bit of correctness by it. Splitters can also choose to ignore the 
235
-suggested seek position, when it falls too far from the required, and go on searching the 
236
-stream for syncpoints themselves.
237
-
238
-Resource : extends Packet (DSMP_RESOURCE)
239
------------------------------------------
240
-
241
-compression type (2 bits, 0: none, 1: gzip, 2-3: reserved)
242
-reserved (6 bits)
243
-name string
244
-desc string
245
-mime string
246
-
247
-[... data ...]
1
+/*
2
+ *  Copyright (C) 2005 Gabest
3
+ *  http://www.gabest.org
4
+ *
5
+ *  This file format is free to use as long as its specification is not
6
+ *  modified or extended without the permission of Gabest. Suggestions
7
+ *  can be sent in email or posted to the forum at sf.net/projects/guliverkli.
8
+ *
9
+ */
10
+
11
+-----------------------
12
+The .dsm file structure
13
+-----------------------
14
+
15
+FileInfo + Header Packets + Samples + Footer Packets
16
+
17
+Header & Footer Packets:
18
+- Required: MediaType
19
+- Optional: StreamInfo, Chapters, SyncPoints, Resource
20
+
21
+Notes: 
22
+- SyncPoints is optional because seeking can be performed simply by searching for packet syncpoints and their timestamps.
23
+- This layout is fine for streaming. On connection send everything up to Sample packets, build the graph at the other end, then the rest when playing. (TODO: introduce NewSegment packet, to support seeking over network)
24
+- The resolution of timestamp and duration is 100ns.
25
+- Strings are zero terminated utf-8 strings.
26
+- Date format string: "%Y-%m-%d %H:%M:%S". (GMT)
27
+- Byte order is big-endian
28
+
29
+Definitions
30
+-----------
31
+
32
+DSMF_VERSION    = 0x01
33
+
34
+DSMSW           = 44534D53 ("DSMS")
35
+DSMSW_SIZE      = 4
36
+
37
+DSMP_FILEINFO   = 0
38
+DSMP_STREAMINFO = 1
39
+DSMP_MEDIATYPE  = 2
40
+DSMP_CHAPTERS   = 3
41
+DSMP_SAMPLE     = 4
42
+DSMP_SYNCPOINTS = 5
43
+DSMP_RESOURCE   = 6
44
+
45
+Packet
46
+------
47
+
48
+DSMSW (DSMSW_SIZE bytes) (DirectShow Media SyncWord)
49
+DSMP_* (5 bits)
50
+data size length (3 bits -> 1-8 bytes)
51
+data size (1-8 bytes)
52
+
53
+[... data ...]
54
+
55
+FileInfo : extends Packet (DSMP_FILEINFO)
56
+-----------------------------------------
57
+
58
+version (1 byte, DSMF_VERSION)
59
+
60
+... repeated n times ...
61
+
62
+id (4 bytes, alphanum)
63
+string
64
+
65
+... repeated n times ...
66
+
67
+Notes:
68
+- Parsers should not open files with higher "version" than they were compiled for.
69
+- Suggested values of "id": 
70
+    "TITL": Title
71
+    "AUTH": Author
72
+    "RTNG": Rating
73
+    "CPYR": Copyright
74
+    "DESC": Description
75
+    "APPL": Application
76
+    "MUXR": Muxer
77
+    "DATE": Encoding date
78
+    ... more to be defined ...
79
+
80
+MediaType : extends Packet (DSMP_MEDIATYPE)
81
+-------------------------------------------
82
+
83
+stream id (1 byte)
84
+
85
+majortype (sizeof(GUID))
86
+subtype (sizeof(GUID))
87
+bFixedSizeSamples (1 bit)
88
+bTemporalCompression (1 bit)
89
+lSampleSize (30 bit)
90
+formattype (sizeof(GUID))
91
+
92
+[... format data ...]
93
+
94
+Notes:
95
+- Multiple MediaTypes per stream is NOT allowed
96
+- bFixedSizeSamples, bTemporalCompression, lSampleSize are only there to preserve compatibility with dshow's media type structure, they aren't playing a role in anything really.
97
+
98
+StreamInfo : extends Packet (DSMP_STREAMINFO)
99
+---------------------------------------------
100
+
101
+stream id (1 byte)
102
+
103
+... repeated n times ...
104
+
105
+id (4 bytes, alphanum)
106
+string
107
+
108
+... repeated n times ...
109
+
110
+Notes:
111
+- Suggested values of "id": 
112
+    "NAME": Stream name
113
+    "SGRP": Stream group (groupped streams can be useful if the splitter is able to group and switch between them, but it's not a strict requirement towards dsm splitters)
114
+    "LANG": Language code (ISO 639-2)
115
+    "DESC": Description
116
+    ... more to be defined ...
117
+
118
+Chapters : extends Packet (DSMP_CHAPTERS)
119
+-----------------------------------------
120
+
121
+... repeated n times ...
122
+
123
+timestamp delta sign (1 bit, <0?)
124
+timestamp delta length (3 bits -> 0-7 bytes)
125
+reserved (4 bits)
126
+timestamp delta (0-7 bytes)
127
+string
128
+
129
+... repeated n times ...
130
+
131
+Notes: 
132
+- "timestamp delta" holds the difference to the previous value, starts at 0.
133
+
134
+Sample : extends Packet (DSMP_SAMPLE)
135
+-------------------------------------
136
+
137
+stream id (1 byte)
138
+
139
+syncpoint (1 bit)
140
+timestamp sign (1 bit, <0?)
141
+timestamp length (3 bits -> 0-7 bytes)
142
+duration length (3 bits -> 0-7 bytes)
143
+
144
+timestamp (0-7 bytes)
145
+duration (0-7 bytes)
146
+
147
+[... data ...]
148
+
149
+Notes:
150
+- sign == 1 && timestamp length == 0 -> timestamp and duration is unknown (but for syncpoints it cannot be unknown!)
151
+- sign == 0 && timestamp length == 0 -> simply means the value is stored on zero bytes and its value is zero too.
152
+- timestamps of syncpoints must be strictly in increasing order.
153
+- timestamps can be negative (to allow cutting a file at anywhere, preroll samples may need to be saved)
154
+
155
+SyncPoints : extends Packet (DSMP_SYNCPOINTS)
156
+---------------------------------------------
157
+
158
+... repeated n times ...
159
+
160
+timestamp delta sign (1 bit, <0?)
161
+timestamp delta length (3 bits -> 0-7 bytes)
162
+file position delta length (3 bits -> 0-7 bytes)
163
+reserved (1 bit)
164
+
165
+timestamp delta (0-7 bytes)
166
+file position delta (0-7 bytes)
167
+
168
+... repeated n times ...
169
+
170
+Notes: 
171
+- "timestamp delta" / "file position delta" holds the difference to the previous value, both start at 0.
172
+
173
+The algorithm of SyncPoints generation
174
+--------------------------------------
175
+
176
+First example:
177
+
178
+stream 1: 1,5,8 (video)
179
+stream 2: 2,3,6,7,9 (audio)
180
+stream 3: 4 (subtitle)
181
+
182
+1 ----|               1->2   1      +2        -> 1 (t 1, fp 1)
183
+      |---- 2         2->3   1,2    +3 -2     -> 1 
184
+      |---- 3         3->4   1,3    +4        -> 1
185
+    +-|-- 4 (start)   4->5   1,3,4  +5 -1     -> 1
186
+5 --|-|               5->6   3,4,5  +6 -3     -> 3 (t 5, fp 3)
187
+    | |---- 6         6->7   4,5,6  +7 -6     -> 4 (t 6, fp 4)
188
+    | |---- 7         7->8   4,5,7  +8 -7 -4  -> 4
189
+    +-|-- 4 (stop)    
190
+      |---- 8         8->9   5,8    +9 -5     -> 5 (t 8, fp 5)
191
+9 ----|               9->10  8,9   +10 -8     -> 8 (t 9, fp 8)
192
+      |---- 10        10->   9,10             -> 9 (t 10, fp 9)
193
+
194
+Notice how it is the values of the first and last elements of the queue are used.
195
+
196
+In the end it represents the following: (timestamp ranges mapped to file positions)
197
+
198
+1->5:  [1]
199
+5->6:  [3]
200
+6->8:  [4]
201
+8->9:  [5]
202
+9->10: [8]
203
+10->:  [9]
204
+
205
+Example usage: 
206
+
207
+Seeking to 7 would mean we need to start decoding at the file position of 4, which 
208
+makes sure we hit at least one syncpoint from every stream (4,5,7 and 6 too, but 6
209
+can be skipped) until we reach 7.
210
+
211
+---
212
+
213
+Second example:
214
+
215
+This is going to be a bit more complicated case. (I hope you like my ascii art :)
216
+
217
+stream 1: 1,4,5,6,7 (video)
218
+stream 2: 2,3 (subtitle)
219
+
220
+1 -----|              1->2   1      +2        -> 1 (t 1, fp 1)
221
+     +-|--- 2 (start) 2->3   1,2   (+3 NOT!)  -> 1
222
+   +-|-|- 3 (start)   3->4   1,2    +4 -1     -> 1
223
+4 -|-|-|              4->5   2,4    +5 -4     -> 2 (t 4, fp 2)
224
+5 -|-|-|              5->6   2,5    +6 -5 -2  -> 2
225
+   +-|-|- 3 (stop)    
226
+     +-|--- 2 (stop)  
227
+6 -----|              6->7   6      +7 -6     -> 6 (t 6, fp 6)
228
+7 -----|              7->    7                -> 7 (t 7, fp 7)
229
+
230
+The problem with subtitles that they are discontinous, overlapped and can totally hide 
231
+other syncpoints, just like 2 hides 4, 5 and even 3 fully (which requires special handling, 
232
+see "NOT!"). That means such a subtitle, when it is too long, can influence seeking time 
233
+by a lot. It might be wise and worth limiting the duration of samples to a couple of minutes, 
234
+possibly sacrificing a bit of correctness by it. Splitters can also choose to ignore the 
235
+suggested seek position, when it falls too far from the required, and go on searching the 
236
+stream for syncpoints themselves.
237
+
238
+Resource : extends Packet (DSMP_RESOURCE)
239
+-----------------------------------------
240
+
241
+compression type (2 bits, 0: none, 1: gzip, 2-3: reserved)
242
+reserved (6 bits)
243
+name string
244
+desc string
245
+mime string
246
+
247
+[... data ...]

+ 6
- 6
include/vd2/extras/FilterSDK/readme.txt View File

@@ -1,6 +1,6 @@
1
-There are the header files that were included with the last version of the
2
-Filter SDK. You can use these if you need to rebuild a filter that doesn't
3
-compile with the new headers, or otherwise need to know the full API supported
4
-by that SDK (such as if you are building a new filter host). If possible,
5
-you should use the migration headers in include/vd2/OldFilterSDK instead,
6
-and new filters should use <vd2/plugin/vdvideofilt.h> directly.
1
+There are the header files that were included with the last version of the
2
+Filter SDK. You can use these if you need to rebuild a filter that doesn't
3
+compile with the new headers, or otherwise need to know the full API supported
4
+by that SDK (such as if you are building a new filter host). If possible,
5
+you should use the migration headers in include/vd2/OldFilterSDK instead,
6
+and new filters should use <vd2/plugin/vdvideofilt.h> directly.

+ 613
- 613
src/Subtitles/libssf/docs/ssf-specs.txt
File diff suppressed because it is too large
View File


+ 48
- 48
src/apps/mplayerc/mpciconlib/icons/icon_list.txt View File

@@ -1,48 +1,48 @@
1
-("aac"),	_T("aac m4a m4b")
2
-("ac3"),	_T("ac3")
3
-("aiff"),	_T("aif aifc aiff")
4
-("alac"),	_T("alac")
5
-("amr"),	_T("amr")
6
-("ape"),	_T("ape apl")
7
-("au"),		_T("au snd")
8
-("avi"),	_T("avi")
9
-("bink"),	_T("bik")
10
-("cda"),	_T("cda")
11
-("d2v"),	_T("d2v")
12
-("dat"),	_T("dat")
13
-("dsm"),	_T("dsm dsv dsa dss")
14
-("dts"),	_T("dts")
15
-("flac"),	_T("flac")
16
-("flic"),	_T("fli flc flic")
17
-("flv"),	_T("flv iflv f4v")
18
-("ifo"),	_T("ifo")
19
-("ivf"),	_T("ivf")
20
-("midi"),	_T("mid midi rmi")
21
-("mka"),	_T("mka")
22
-("mkv"),	_T("mkv")
23
-("mov"),	_T("mov 3g2 3gp2")
24
-("mp3"),	_T("mp3")
25
-("mp4"),	_T("mp4 m4v mp4v mpv4 hdmov 3gp 3gpp")
26
-("mpa"),	_T("mpa mp2 m1a m2a")
27
-("mpc"),	_T("mpc")
28
-("mpeg"),	_T("mpg mpeg mpe m1v m2v mpv2 mp2v pva evo m2p")
29
-("ofr"),	_T("ofr ofs")
30
-("ogg"),	_T("ogg oga")
31
-("ogm"),	_T("ogm ogv")
32
-("playlist"),	_T("asx m3u m3u8 pls wvx wax wmx mpcpl mpls bdmv")
33
-("ra"),		_T("ra")
34
-("rardvd"),	_T("ratdvd")
35
-("rm"),		_T("rm ram rpm rmm")
36
-("rt"),		_T("rt rp smi smil")
37
-("smk"),	_T("smk")
38
-("swf"),	_T("swf")
39
-("ts"),		_T("ts tp trp m2t m2ts mts")
40
-("tta"),	_T("tta")
41
-("vob"),	_T("vob")
42
-("wav"),	_T("wav")
43
-("webm"),	_T("webm")
44
-("wma"),	_T("wma")
45
-("wmv"),	_T("wmv wmp wm asf")
46
-("wv"),		_T("wv")
47
-("other"),	_T("divx rmvb amv")
48
-("other"),	_T("tak")
1
+("aac"),	_T("aac m4a m4b")
2
+("ac3"),	_T("ac3")
3
+("aiff"),	_T("aif aifc aiff")
4
+("alac"),	_T("alac")
5
+("amr"),	_T("amr")
6
+("ape"),	_T("ape apl")
7
+("au"),		_T("au snd")
8
+("avi"),	_T("avi")
9
+("bink"),	_T("bik")
10
+("cda"),	_T("cda")
11
+("d2v"),	_T("d2v")
12
+("dat"),	_T("dat")
13
+("dsm"),	_T("dsm dsv dsa dss")
14
+("dts"),	_T("dts")
15
+("flac"),	_T("flac")
16
+("flic"),	_T("fli flc flic")
17
+("flv"),	_T("flv iflv f4v")
18
+("ifo"),	_T("ifo")
19
+("ivf"),	_T("ivf")
20
+("midi"),	_T("mid midi rmi")
21
+("mka"),	_T("mka")
22
+("mkv"),	_T("mkv")
23
+("mov"),	_T("mov 3g2 3gp2")
24
+("mp3"),	_T("mp3")
25
+("mp4"),	_T("mp4 m4v mp4v mpv4 hdmov 3gp 3gpp")
26
+("mpa"),	_T("mpa mp2 m1a m2a")
27
+("mpc"),	_T("mpc")
28
+("mpeg"),	_T("mpg mpeg mpe m1v m2v mpv2 mp2v pva evo m2p")
29
+("ofr"),	_T("ofr ofs")
30
+("ogg"),	_T("ogg oga")
31
+("ogm"),	_T("ogm ogv")
32
+("playlist"),	_T("asx m3u m3u8 pls wvx wax wmx mpcpl mpls bdmv")
33
+("ra"),		_T("ra")
34
+("rardvd"),	_T("ratdvd")
35
+("rm"),		_T("rm ram rpm rmm")
36
+("rt"),		_T("rt rp smi smil")
37
+("smk"),	_T("smk")
38
+("swf"),	_T("swf")
39
+("ts"),		_T("ts tp trp m2t m2ts mts")
40
+("tta"),	_T("tta")
41
+("vob"),	_T("vob")
42
+("wav"),	_T("wav")
43
+("webm"),	_T("webm")
44
+("wma"),	_T("wma")
45
+("wmv"),	_T("wmv wmp wm asf")
46
+("wv"),		_T("wv")
47
+("other"),	_T("divx rmvb amv")
48
+("other"),	_T("tak")

+ 25
- 25
src/filters/transform/MPCVideoDec/ffmpeg/custom_code.txt View File

@@ -1,25 +1,25 @@
1
-The following files have MPC-specific custom code (compared to ffmpeg):
2
-
3
-* config.h
4
-* config.asm
5
-* makefile
6
-
7
-* libavcodec/avcodec.h
8
-* libavcodec/allcodecs.c
9
-* libavcodec/h264.c
10
-* libavcodec/h264.h
11
-* libavcodec/h264_dxva.h
12
-* libavcodec/mpc_helper.c
13
-* libavcodec/mpeg12.c
14
-* libavcodec/mpeg12.h
15
-* libavcodec/mpegvideo.c
16
-* libavcodec/pthread.c
17
-* libavcodec/utils.c
18
-* libavcodec/vc1dec.c
19
-* libavcodec/vc1_dxva.h
20
-
21
-* libavutil/common.h
22
-* libavutil/log.h
23
-* libavutil/mem.c
24
-* libavutil/mem.h
25
-* libavutil/samplefmt.h
1
+The following files have MPC-specific custom code (compared to ffmpeg):
2
+
3
+* config.h
4
+* config.asm
5
+* makefile
6
+
7
+* libavcodec/avcodec.h
8
+* libavcodec/allcodecs.c
9
+* libavcodec/h264.c
10
+* libavcodec/h264.h
11
+* libavcodec/h264_dxva.h
12
+* libavcodec/mpc_helper.c
13
+* libavcodec/mpeg12.c
14
+* libavcodec/mpeg12.h
15
+* libavcodec/mpegvideo.c
16
+* libavcodec/pthread.c
17
+* libavcodec/utils.c
18
+* libavcodec/vc1dec.c
19
+* libavcodec/vc1_dxva.h
20
+
21
+* libavutil/common.h
22
+* libavutil/log.h
23
+* libavutil/mem.c
24
+* libavutil/mem.h
25
+* libavutil/samplefmt.h

+ 2
- 2
src/filters/transform/MPCVideoDec/ffmpeg/todo.txt View File

@@ -1,2 +1,2 @@
1
-1) Use vanilla ffmpeg or libav with the DXVA patches only
2
-2) Stop linking ffmpeg statically
1
+1) Use vanilla ffmpeg or libav with the DXVA patches only
2
+2) Stop linking ffmpeg statically

+ 208
- 208
src/thirdparty/a52dec/doc/liba52.txt View File

@@ -1,208 +1,208 @@
1
-Using the liba52 API
2
---------------------
3
-
4
-liba52 provides a low-level interface to decoding audio frames encoded
5
-using ATSC standard A/52 aka AC-3. liba52 provides downmixing and
6
-dynamic range compression for the following output configurations:
7
-
8
-A52_CHANNEL  : Dual mono. Two independant mono channels.
9
-A52_CHANNEL1 : First of the two mono channels above.
10
-A52_CHANNEL2 : Second of the two mono channels above.
11
-A52_MONO     : Mono.
12
-A52_STEREO   : Stereo.
13
-A52_DOLBY    : Dolby surround compatible stereo.
14
-A52_3F       : 3 front channels (left, center, right)
15
-A52_2F1R     : 2 front, 1 rear surround channel (L, R, S)
16
-A52_3F1R     : 3 front, 1 rear surround channel (L, C, R, S)
17
-A52_2F2R     : 2 front, 2 rear surround channels (L, R, LS, RS)
18
-A52_3F2R     : 3 front, 2 rear surround channels (L, C, R, LS, RS)
19
-
20
-A52_LFE      : Low frequency effects channel. Normally used to connect a
21
-               subwoofer. Can be combined with any of the above channels.
22
-               For example: A52_3F2R | A52_LFE -> 3 front, 2 rear, 1 LFE (5.1)
23
-
24
-
25
-Initialization
26
---------------
27
-
28
-sample_t * a52_init (uint32_t mm_accel);
29
-
30
-Initializes the A/52 library. Takes as a parameter the acceptable
31
-optimizations which may be used, such as MMX. These are found in the
32
-included header file 'mm_accel', along with an autodetection function
33
-(mm_accel()). Currently, the only accelleration implemented is
34
-MM_ACCEL_MLIB, which uses the 'mlib' library if installed. mlib is
35
-only available on some Sun Microsystems platforms.
36
-
37
-The return value is a pointer to a properly-aligned sample buffer used
38
-for output samples.
39
-
40
-
41
-Probing the bitstream
42
----------------------
43
-
44
-int a52_syncinfo (uint8_t * buf, int * flags,
45
-                  int * sample_rate, int * bit_rate);
46
-
47
-The A/52 bitstream is composed of several a52 frames concatenated one
48
-after each other. An a52 frame is the smallest independantly decodable
49
-unit in the stream.
50
-
51
-buf must contain at least 7 bytes from the input stream. If these look
52
-like the start of a valid a52 frame, a52_syncinfo() returns the size
53
-of the coded frame in bytes, and fills flags, sample_rate and bit_rate
54
-with the information encoded in the stream. The returned size is
55
-guaranteed to be an even number between 128 and 3840. sample_rate will
56
-be the sampling frequency in Hz, bit_rate is for the compressed stream
57
-and is in bits per second, and flags is a description of the coded
58
-channels: the A52_LFE bit is set if there is an LFE channel coded in
59
-this stream, and by masking flags with A52_CHANNEL_MASK you will get a
60
-value that describes the full-bandwidth channels, as one of the
61
-A52_CHANNEL...A52_3F2R flags.
62
-
63
-If this can not possibly be a valid frame, then the function returns
64
-0. You should then try to re-synchronize with the a52 stream - one way
65
-to try this would be to advance buf by one byte until its contents
66
-looks like a valid frame, but there might be better
67
-application-specific ways to synchronize.
68
-
69
-It is recommended to call this function for each frame, for several
70
-reasons: this function detects errors that the other functions will
71
-not double-check, consecutive frames might have different lengths, and
72
-it helps you re-sync with the stream if you get de-synchronized.
73
-
74
-
75
-Starting to decode a frame
76
---------------------------
77
-
78
-int a52_frame (a52_state_t * state, uint8_t * buf, int * flags,
79
-	       sample_t * level, sample_t bias);
80
-
81
-This starts the work of decoding the A/52 frame (to be completed using
82
-a52_block()). buf should point to the beginning of the complete frame
83
-of the full size returned by a52_syncinfo().
84
-
85
-You should pass in the flags the speaker configuration that you
86
-support, and liba52 will return the speaker configuration it will use
87
-for its output, based on what is coded in the stream and what you
88
-asked for. For example, if the stream contains 2+2 channels
89
-(a52_syncinfo() returned A52_2F2R in the flags), and you have 3+1
90
-speakers (you passed A52_3F1R), then liba52 will choose do downmix to
91
-2+1 speakers, since there is no center channel to send to your center
92
-speaker. So in that case the left and right channels will be
93
-essentially unmodified by the downmix, and the two surround channels
94
-will be added together and sent to your surround speaker. liba52 will
95
-return A52_2F1R to indicate this.
96
-
97
-The good news is that when you downmix to stereo you dont have to
98
-worry about this, you will ALWAYS get a stereo output no matter what
99
-was coded in the stream. For more complex output configurations you
100
-will have to handle the case where liba52 couldnt give you what you
101
-wanted because some of the channels were not encoded in the stream
102
-though.
103
-
104
-Level, bias, and A52_ADJUST_LEVEL:
105
-
106
-Before downmixing, samples are floating point values with a range of
107
-[-1,1]. Most types of downmixing will combine channels together, which
108
-will potentially result in a larger range for the output
109
-samples. liba52 provides two methods of controlling the range of the
110
-output, either before or after the downmix stage.
111
-
112
-If you do not set A52_ADJUST_LEVEL, liba52 will multiply the samples
113
-by your level value, so that they fit in the [-level,level]
114
-range. Then it will apply the standardized downmix equations,
115
-potentially making the samples go out of that interval again. The
116
-level parameter is not modified.
117
-
118
-Setting the A52_ADJUST_LEVEL flag will instruct liba52 to treat your
119
-level value as the intended range interval after downmixing. It will
120
-then figure out what level to use before the downmix (what you should
121
-have passed if you hadnt used the A52_ADJUST_LEVEL flag), and
122
-overwrite the level value you gave it with that new level value.
123
-
124
-The bias represents a value which should be added to the result
125
-regardless:
126
-
127
-output_sample = (input_sample * level) + bias;
128
-
129
-For example, a bias of 384 and a level of 1 tells liba52 you want
130
-samples between 383 and 385 instead of -1 and 1. This is what the
131
-sample program a52dec does, as it makes it faster to convert the
132
-samples to integer format, using a trick based on the IEEE
133
-floating-point format.
134
-
135
-This function also initialises the state for that frame, which will be
136
-reused next when decoding blocks.
137
-
138
-
139
-Dynamic range compression
140
--------------------------
141
-
142
-void a52_dynrng (a52_state_t * state,
143
-                 sample_t (* call) (sample_t, void *), void * data);
144
-
145
-This function is purely optional. If you dont call it, liba52 will
146
-provide the default behaviour, which is to apply the full dynamic
147
-range compression as specified in the A/52 stream. This basically
148
-makes the loud sounds softer, and the soft sounds louder, so you can
149
-more easily listen to the stream in a noisy environment without
150
-disturbing anyone.
151
-
152
-If you do call this function and set a NULL callback, this will
153
-totally disable the dynamic range compression and provide a playback
154
-more adapted to a movie theater or a listening room.
155
-
156
-If you call this function and specify a callback function, this
157
-callback might be called up to once for each block, with two
158
-arguments: the compression factor 'c' recommended by the bitstream,
159
-and the private data pointer you specified in a52_dynrng(). The
160
-callback will then return the amount of compression to actually use -
161
-typically pow(c,x) where x is somewhere between 0 and 1. More
162
-elaborate compression functions might want to use a different value
163
-for 'x' depending wether c>1 or c<1 - or even something more complex
164
-if this is what you want.
165
-
166
-
167
-Decoding blocks
168
----------------
169
-
170
-int a52_block (a52_state_t * state, sample_t * samples);
171
-
172
-Every A/52 frame is composed of 6 blocks, each with an output of 256
173
-samples for each channel. The a52_block() function decodes the next
174
-block in the frame, and should be called 6 times to decode all of the
175
-audio in the frame. After each call, you should extract the audio data
176
-from the sample buffer.
177
-
178
-The sample pointer given should be the one a52_init() returned.
179
-
180
-After this function returns, the samples buuffer will contain 256
181
-samples for the first channel, followed by 256 samples for the second
182
-channel, etc... the channel order is LFE, left, center, right, left
183
-surround, right surround. If one of the channels is not present in the
184
-liba52 output, as indicated by the flags returned by a52_frame(), then
185
-this channel is skipped and the following channels are shifted so
186
-liba52 does not leave an empty space between channels.
187
-
188
-
189
-Pseudocode example
190
-------------------
191
-
192
-sample_t * samples = a52_init (mm_accel());
193
-
194
-loop on input bytes:
195
-  if at least 7 bytes in the buffer:
196
-
197
-    bytes_to_get = a52_syncinfo (...)
198
-
199
-    if bytes_to_get == 0:
200
-      goto loop to keep looking for sync point
201
-    else
202
-      get rest of bytes
203
-
204
-      a52_frame (state, buf, ...)
205
-      [a52_dynrng (state, ...); this is only optional]
206
-      for i = 1 ... 6:
207
-        a52_block (state, samples)
208
-        convert samples to integer and queue to soundcard
1
+Using the liba52 API
2
+--------------------
3
+
4
+liba52 provides a low-level interface to decoding audio frames encoded
5
+using ATSC standard A/52 aka AC-3. liba52 provides downmixing and
6
+dynamic range compression for the following output configurations:
7
+
8
+A52_CHANNEL  : Dual mono. Two independant mono channels.
9
+A52_CHANNEL1 : First of the two mono channels above.
10
+A52_CHANNEL2 : Second of the two mono channels above.
11
+A52_MONO     : Mono.
12
+A52_STEREO   : Stereo.
13
+A52_DOLBY    : Dolby surround compatible stereo.
14
+A52_3F       : 3 front channels (left, center, right)
15
+A52_2F1R     : 2 front, 1 rear surround channel (L, R, S)
16
+A52_3F1R     : 3 front, 1 rear surround channel (L, C, R, S)
17
+A52_2F2R     : 2 front, 2 rear surround channels (L, R, LS, RS)
18
+A52_3F2R     : 3 front, 2 rear surround channels (L, C, R, LS, RS)
19
+
20
+A52_LFE      : Low frequency effects channel. Normally used to connect a
21
+               subwoofer. Can be combined with any of the above channels.
22
+               For example: A52_3F2R | A52_LFE -> 3 front, 2 rear, 1 LFE (5.1)
23
+
24
+
25
+Initialization
26
+--------------
27
+
28
+sample_t * a52_init (uint32_t mm_accel);
29
+
30
+Initializes the A/52 library. Takes as a parameter the acceptable
31
+optimizations which may be used, such as MMX. These are found in the
32
+included header file 'mm_accel', along with an autodetection function
33
+(mm_accel()). Currently, the only accelleration implemented is
34
+MM_ACCEL_MLIB, which uses the 'mlib' library if installed. mlib is
35
+only available on some Sun Microsystems platforms.
36
+
37
+The return value is a pointer to a properly-aligned sample buffer used
38
+for output samples.
39
+
40
+
41
+Probing the bitstream
42
+---------------------
43
+
44
+int a52_syncinfo (uint8_t * buf, int * flags,
45
+                  int * sample_rate, int * bit_rate);
46
+
47
+The A/52 bitstream is composed of several a52 frames concatenated one
48
+after each other. An a52 frame is the smallest independantly decodable
49
+unit in the stream.
50
+
51
+buf must contain at least 7 bytes from the input stream. If these look
52
+like the start of a valid a52 frame, a52_syncinfo() returns the size
53
+of the coded frame in bytes, and fills flags, sample_rate and bit_rate
54
+with the information encoded in the stream. The returned size is
55
+guaranteed to be an even number between 128 and 3840. sample_rate will
56
+be the sampling frequency in Hz, bit_rate is for the compressed stream
57
+and is in bits per second, and flags is a description of the coded
58
+channels: the A52_LFE bit is set if there is an LFE channel coded in
59
+this stream, and by masking flags with A52_CHANNEL_MASK you will get a
60
+value that describes the full-bandwidth channels, as one of the
61
+A52_CHANNEL...A52_3F2R flags.
62
+
63
+If this can not possibly be a valid frame, then the function returns
64
+0. You should then try to re-synchronize with the a52 stream - one way
65
+to try this would be to advance buf by one byte until its contents
66
+looks like a valid frame, but there might be better
67
+application-specific ways to synchronize.
68
+
69
+It is recommended to call this function for each frame, for several
70
+reasons: this function detects errors that the other functions will
71
+not double-check, consecutive frames might have different lengths, and
72
+it helps you re-sync with the stream if you get de-synchronized.
73
+
74
+
75
+Starting to decode a frame
76
+--------------------------
77
+
78
+int a52_frame (a52_state_t * state, uint8_t * buf, int * flags,
79
+	       sample_t * level, sample_t bias);
80
+
81
+This starts the work of decoding the A/52 frame (to be completed using
82
+a52_block()). buf should point to the beginning of the complete frame
83
+of the full size returned by a52_syncinfo().
84
+
85
+You should pass in the flags the speaker configuration that you
86
+support, and liba52 will return the speaker configuration it will use
87
+for its output, based on what is coded in the stream and what you
88
+asked for. For example, if the stream contains 2+2 channels
89
+(a52_syncinfo() returned A52_2F2R in the flags), and you have 3+1
90
+speakers (you passed A52_3F1R), then liba52 will choose do downmix to
91
+2+1 speakers, since there is no center channel to send to your center
92
+speaker. So in that case the left and right channels will be
93
+essentially unmodified by the downmix, and the two surround channels
94
+will be added together and sent to your surround speaker. liba52 will
95
+return A52_2F1R to indicate this.
96
+
97
+The good news is that when you downmix to stereo you dont have to
98
+worry about this, you will ALWAYS get a stereo output no matter what
99
+was coded in the stream. For more complex output configurations you
100
+will have to handle the case where liba52 couldnt give you what you
101
+wanted because some of the channels were not encoded in the stream
102
+though.
103
+
104
+Level, bias, and A52_ADJUST_LEVEL:
105
+
106
+Before downmixing, samples are floating point values with a range of
107
+[-1,1]. Most types of downmixing will combine channels together, which
108
+will potentially result in a larger range for the output
109
+samples. liba52 provides two methods of controlling the range of the
110
+output, either before or after the downmix stage.
111
+
112
+If you do not set A52_ADJUST_LEVEL, liba52 will multiply the samples
113
+by your level value, so that they fit in the [-level,level]
114
+range. Then it will apply the standardized downmix equations,
115
+potentially making the samples go out of that interval again. The
116
+level parameter is not modified.
117
+
118
+Setting the A52_ADJUST_LEVEL flag will instruct liba52 to treat your
119
+level value as the intended range interval after downmixing. It will
120
+then figure out what level to use before the downmix (what you should
121
+have passed if you hadnt used the A52_ADJUST_LEVEL flag), and
122
+overwrite the level value you gave it with that new level value.
123
+
124
+The bias represents a value which should be added to the result
125
+regardless:
126
+
127
+output_sample = (input_sample * level) + bias;
128
+
129
+For example, a bias of 384 and a level of 1 tells liba52 you want
130
+samples between 383 and 385 instead of -1 and 1. This is what the
131
+sample program a52dec does, as it makes it faster to convert the
132
+samples to integer format, using a trick based on the IEEE
133
+floating-point format.
134
+
135
+This function also initialises the state for that frame, which will be
136
+reused next when decoding blocks.
137
+
138
+
139
+Dynamic range compression
140
+-------------------------
141
+
142
+void a52_dynrng (a52_state_t * state,
143
+                 sample_t (* call) (sample_t, void *), void * data);
144
+
145
+This function is purely optional. If you dont call it, liba52 will
146
+provide the default behaviour, which is to apply the full dynamic
147
+range compression as specified in the A/52 stream. This basically
148
+makes the loud sounds softer, and the soft sounds louder, so you can
149
+more easily listen to the stream in a noisy environment without
150
+disturbing anyone.
151
+
152
+If you do call this function and set a NULL callback, this will
153
+totally disable the dynamic range compression and provide a playback
154
+more adapted to a movie theater or a listening room.
155
+
156
+If you call this function and specify a callback function, this
157
+callback might be called up to once for each block, with two
158
+arguments: the compression factor 'c' recommended by the bitstream,
159
+and the private data pointer you specified in a52_dynrng(). The
160
+callback will then return the amount of compression to actually use -
161
+typically pow(c,x) where x is somewhere between 0 and 1. More
162
+elaborate compression functions might want to use a different value
163
+for 'x' depending wether c>1 or c<1 - or even something more complex
164
+if this is what you want.
165
+
166
+
167
+Decoding blocks
168
+---------------
169
+
170
+int a52_block (a52_state_t * state, sample_t * samples);
171
+
172
+Every A/52 frame is composed of 6 blocks, each with an output of 256
173
+samples for each channel. The a52_block() function decodes the next
174
+block in the frame, and should be called 6 times to decode all of the
175
+audio in the frame. After each call, you should extract the audio data
176
+from the sample buffer.
177
+
178
+The sample pointer given should be the one a52_init() returned.
179
+
180
+After this function returns, the samples buuffer will contain 256
181
+samples for the first channel, followed by 256 samples for the second
182
+channel, etc... the channel order is LFE, left, center, right, left
183
+surround, right surround. If one of the channels is not present in the
184
+liba52 output, as indicated by the flags returned by a52_frame(), then
185
+this channel is skipped and the following channels are shifted so
186
+liba52 does not leave an empty space between channels.
187
+
188
+
189
+Pseudocode example
190
+------------------
191
+
192
+sample_t * samples = a52_init (mm_accel());
193
+
194
+loop on input bytes:
195
+  if at least 7 bytes in the buffer:
196
+
197
+    bytes_to_get = a52_syncinfo (...)
198
+
199
+    if bytes_to_get == 0:
200
+      goto loop to keep looking for sync point
201
+    else
202
+      get rest of bytes
203
+
204
+      a52_frame (state, buf, ...)
205
+      [a52_dynrng (state, ...); this is only optional]
206
+      for i = 1 ... 6:
207
+        a52_block (state, samples)
208
+        convert samples to integer and queue to soundcard

+ 99
- 99
src/thirdparty/ui/ResizableLib/Artistic-License.txt View File

@@ -1,99 +1,99 @@
1
-The Artistic License
2
-
3
-Preamble
4
-
5
-The intent of this document is to state the conditions under which a Package 
6
-may be copied, such that the Copyright Holder maintains some semblance of 
7
-artistic control over the development of the package, while giving the users of 
8
-the package the right to use and distribute the Package in a more-or-less 
9
-customary fashion, plus the right to make reasonable modifications.
10
-
11
-Definitions:
12
-
13
-  * "Package" refers to the collection of files distributed by the Copyright 
14
-    Holder, and derivatives of that collection of files created through textual 
15
-    modification. 
16
-  * "Standard Version" refers to such a Package if it has not been modified, 
17
-    or has been modified in accordance with the wishes of the Copyright Holder. 
18
-  * "Copyright Holder" is whoever is named in the copyright or copyrights for 
19
-    the package. 
20
-  * "You" is you, if you're thinking about copying or distributing this 
21
-    Package. 
22
-  * "Reasonable copying fee" is whatever you can justify on the basis of media 
23
-    cost, duplication charges, time of people involved, and so on. (You will not 
24
-    be required to justify it to the Copyright Holder, but only to the computing 
25
-    community at large as a market that must bear the fee.) 
26
-  * "Freely Available" means that no fee is charged for the item itself, 
27
-    though there may be fees involved in handling the item. It also means that 
28
-    recipients of the item may redistribute it under the same conditions they 
29
-    received it.
30
-
31
-1. You may make and give away verbatim copies of the source form of the 
32
-   Standard Version of this Package without restriction, provided that you 
33
-   duplicate all of the original copyright notices and associated disclaimers.
34
-
35
-2. You may apply bug fixes, portability fixes and other modifications derived 
36
-   from the Public Domain or from the Copyright Holder. A Package modified in such 
37
-   a way shall still be considered the Standard Version.
38
-
39
-3. You may otherwise modify your copy of this Package in any way, provided 
40
-   that you insert a prominent notice in each changed file stating how and when you 
41
-   changed that file, and provided that you do at least ONE of the following:
42
-
43
-  a) place your modifications in the Public Domain or otherwise make them 
44
-     Freely Available, such as by posting said modifications to Usenet or an 
45
-     equivalent medium, or placing the modifications on a major archive site such 
46
-     as ftp.uu.net, or by allowing the Copyright Holder to include your 
47
-     modifications in the Standard Version of the Package.
48
-  
49
-  b) use the modified Package only within your corporation or 
50
-     organization.
51
-  
52
-  c) rename any non-standard executables so the names do not conflict with 
53
-     standard executables, which must also be provided, and provide a separate 
54
-     manual page for each non-standard executable that clearly documents how it 
55
-     differs from the Standard Version.
56
-
57
-  d) make other distribution arrangements with the Copyright Holder.
58
-
59
-4. You may distribute the programs of this Package in object code or 
60
-   executable form, provided that you do at least ONE of the following:
61
-
62
-  a) distribute a Standard Version of the executables and library files, 
63
-     together with instructions (in the manual page or equivalent) on where to get 
64
-     the Standard Version.
65
-  
66
-  b) accompany the distribution with the machine-readable source of the 
67
-     Package with your modifications.
68
-  
69
-  c) accompany any non-standard executables with their corresponding Standard 
70
-     Version executables, giving the non-standard executables non-standard names, 
71
-     and clearly documenting the differences in manual pages (or equivalent), 
72
-     together with instructions on where to get the Standard Version.
73
-  
74
-  d) make other distribution arrangements with the Copyright Holder.
75
-  
76
-5. You may charge a reasonable copying fee for any distribution of this 
77
-   Package. You may charge any fee you choose for support of this Package. You may 
78
-   not charge a fee for this Package itself. However, you may distribute this 
79
-   Package in aggregate with other (possibly commercial) programs as part of a 
80
-   larger (possibly commercial) software distribution provided that you do not 
81
-   advertise this Package as a product of your own.
82
-
83
-6. The scripts and library files supplied as input to or produced as output 
84
-   from the programs of this Package do not automatically fall under the copyright 
85
-   of this Package, but belong to whomever generated them, and may be sold 
86
-   commercially, and may be aggregated with this Package.
87
-
88
-7. C or perl subroutines supplied by you and linked into this Package shall 
89
-   not be considered part of this Package.
90
-
91
-8. The name of the Copyright Holder may not be used to endorse or promote 
92
-   products derived from this software without specific prior written 
93
-   permission.
94
-
95
-9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 
96
-   WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 
97
-   MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
98
-
99
-The End
1
+The Artistic License
2
+
3
+Preamble
4
+
5
+The intent of this document is to state the conditions under which a Package 
6
+may be copied, such that the Copyright Holder maintains some semblance of 
7
+artistic control over the development of the package, while giving the users of 
8
+the package the right to use and distribute the Package in a more-or-less 
9
+customary fashion, plus the right to make reasonable modifications.
10
+
11
+Definitions:
12
+
13
+  * "Package" refers to the collection of files distributed by the Copyright 
14
+    Holder, and derivatives of that collection of files created through textual 
15
+    modification. 
16
+  * "Standard Version" refers to such a Package if it has not been modified, 
17
+    or has been modified in accordance with the wishes of the Copyright Holder. 
18
+  * "Copyright Holder" is whoever is named in the copyright or copyrights for 
19
+    the package. 
20
+  * "You" is you, if you're thinking about copying or distributing this 
21
+    Package. 
22
+  * "Reasonable copying fee" is whatever you can justify on the basis of media 
23
+    cost, duplication charges, time of people involved, and so on. (You will not 
24
+    be required to justify it to the Copyright Holder, but only to the computing 
25
+    community at large as a market that must bear the fee.) 
26
+  * "Freely Available" means that no fee is charged for the item itself, 
27
+    though there may be fees involved in handling the item. It also means that 
28
+    recipients of the item may redistribute it under the same conditions they 
29
+    received it.
30
+
31
+1. You may make and give away verbatim copies of the source form of the 
32
+   Standard Version of this Package without restriction, provided that you 
33
+   duplicate all of the original copyright notices and associated disclaimers.
34
+
35
+2. You may apply bug fixes, portability fixes and other modifications derived 
36
+   from the Public Domain or from the Copyright Holder. A Package modified in such 
37
+   a way shall still be considered the Standard Version.
38
+
39
+3. You may otherwise modify your copy of this Package in any way, provided 
40
+   that you insert a prominent notice in each changed file stating how and when you 
41
+   changed that file, and provided that you do at least ONE of the following:
42
+
43
+  a) place your modifications in the Public Domain or otherwise make them 
44
+     Freely Available, such as by posting said modifications to Usenet or an 
45
+     equivalent medium, or placing the modifications on a major archive site such 
46
+     as ftp.uu.net, or by allowing the Copyright Holder to include your 
47
+     modifications in the Standard Version of the Package.
48
+  
49
+  b) use the modified Package only within your corporation or 
50
+     organization.
51
+  
52
+  c) rename any non-standard executables so the names do not conflict with 
53
+     standard executables, which must also be provided, and provide a separate 
54
+     manual page for each non-standard executable that clearly documents how it 
55
+     differs from the Standard Version.
56
+
57
+  d) make other distribution arrangements with the Copyright Holder.
58
+
59
+4. You may distribute the programs of this Package in object code or 
60
+   executable form, provided that you do at least ONE of the following:
61
+
62
+  a) distribute a Standard Version of the executables and library files, 
63
+     together with instructions (in the manual page or equivalent) on where to get 
64
+     the Standard Version.
65
+  
66
+  b) accompany the distribution with the machine-readable source of the 
67
+     Package with your modifications.
68
+  
69
+  c) accompany any non-standard executables with their corresponding Standard 
70
+     Version executables, giving the non-standard executables non-standard names, 
71
+     and clearly documenting the differences in manual pages (or equivalent), 
72
+     together with instructions on where to get the Standard Version.
73
+  
74
+  d) make other distribution arrangements with the Copyright Holder.
75
+  
76
+5. You may charge a reasonable copying fee for any distribution of this 
77
+   Package. You may charge any fee you choose for support of this Package. You may 
78
+   not charge a fee for this Package itself. However, you may distribute this 
79
+   Package in aggregate with other (possibly commercial) programs as part of a 
80
+   larger (possibly commercial) software distribution provided that you do not 
81
+   advertise this Package as a product of your own.
82
+
83
+6. The scripts and library files supplied as input to or produced as output 
84
+   from the programs of this Package do not automatically fall under the copyright 
85
+   of this Package, but belong to whomever generated them, and may be sold 
86
+   commercially, and may be aggregated with this Package.
87
+
88
+7. C or perl subroutines supplied by you and linked into this Package shall 
89
+   not be considered part of this Package.
90
+
91
+8. The name of the Copyright Holder may not be used to endorse or promote 
92
+   products derived from this software without specific prior written 
93
+   permission.
94
+
95
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 
96
+   WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 
97
+   MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
98
+
99
+The End

Loading…
Cancel
Save