21 Commits

Author SHA1 Message Date
ebc8d5da90 Update copyright year. 2024-04-30 04:47:47 +01:00
dbf4d2c2aa General refactor and cleanup. 2024-04-30 04:46:49 +01:00
df86b44902 Apply latest language features. 2024-04-30 04:45:40 +01:00
51ac29c6de Update dependencies. 2024-04-30 04:43:24 +01:00
b238ff9bf8 Update project to .NET 8. 2024-04-30 04:43:08 +01:00
93544efe82 Update editorconfig. 2024-04-30 04:39:13 +01:00
8703c78a42 Code restyle. 2020-03-01 15:07:36 +00:00
4984410ce5 Change project files. 2020-03-01 15:07:26 +00:00
c28bd44068 Rename solution. 2020-03-01 14:02:10 +00:00
22d4036f30 Rename project. 2020-03-01 14:00:41 +00:00
58c6e8dd8f Rename miscellaneous. 2020-03-01 13:59:21 +00:00
507204271b Rename readme. 2020-03-01 13:58:12 +00:00
dce0944f09 Rename comments. 2020-03-01 13:57:15 +00:00
ea8182c4ed Update copyright. 2020-03-01 13:56:50 +00:00
766af2aaa9 Rename namespace. 2020-03-01 13:56:13 +00:00
1a0420ff23 Update editorconfig. 2020-03-01 05:40:50 +00:00
db75c6a8c7 Add support to decode VideoNow XP discs. 2019-03-13 20:58:28 +00:00
0a68e05f55 Detect VideoNow XP discs. 2019-03-13 20:36:47 +00:00
16a88413c2 Separate Color processing from Main. 2019-03-13 19:26:14 +00:00
6f48e62c70 Check for start of frame header marking before reading complete frame marker. 2019-03-13 19:19:05 +00:00
aeae73d2f3 Fix mirrored image. 2019-03-13 18:59:37 +00:00
42 changed files with 3821 additions and 2860 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ContentModelStore">
<e p="$APPLICATION_CONFIG_DIR$/extensions" t="IncludeRecursive" />
<e p="$USER_HOME$/.Rider2018.3/system/extResources" t="IncludeRecursive" />
<e p="$USER_HOME$/.Rider2018.3/system/resharper-host/local/Transient/ReSharperHost/v183/SolutionCaches/_DiscImageChef.VideoNow.-333220507.00" t="ExcludeRecursive" />
<e p="$PROJECT_DIR$" t="IncludeFlat">
<e p=".git/info/exclude" t="IncludeRecursive" />
<e p="DiscImageChef.VideoNow" t="IncludeRecursive">
<e p="DiscImageChef.VideoNow.csproj" t="IncludeRecursive" />
<e p="C:\Users\claunia\.Rider2019.3\system\extResources" t="IncludeRecursive" />
<e p="C:\Users\claunia\.Rider2019.3\system\resharper-host\Local\Transient\ReSharperHost\v193\SolutionCaches\_Aaru.VideoNow.-2144738408.00" t="ExcludeRecursive" />
<e p="C:\Users\claunia\AppData\Local\JetBrains\Toolbox\apps\Rider\ch-0\193.6494.30.plugins\puppet\lib\stubs" t="IncludeRecursive" />
<e p="C:\Users\claunia\Development\Aaru\Aaru.VideoNow" t="IncludeFlat">
<e p=".git\info\exclude" t="IncludeRecursive" />
<e p="Aaru.VideoNow" t="IncludeRecursive">
<e p="Aaru.VideoNow.csproj" t="IncludeRecursive" />
<e p="bin" t="ExcludeRecursive" />
<e p="Color.cs" t="Include" />
<e p="obj" t="ExcludeRecursive" />
<e p="Program.cs" t="Include" />
<e p="Properties" t="Include">
<e p="AssemblyInfo.cs" t="Include" />
@@ -23,13 +26,13 @@
<e p="Localization.ru.resx" t="Include" />
<e p="Localization.sv.resx" t="Include" />
</e>
<e p="bin" t="ExcludeRecursive" />
<e p="obj" t="ExcludeRecursive" />
<e p="Swapping.cs" t="Include" />
<e p="Xp.cs" t="Include" />
</e>
<e p="DiscImageChef.VideoNow.sln" t="IncludeFlat" />
<e p="Aaru.VideoNow.sln" t="IncludeFlat" />
<e p="LICENSE" t="Include" />
<e p="README.md" t="Include" />
<e p="packages" t="ExcludeRecursive" />
<e p="README.md" t="Include" />
</e>
</component>
</project>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/.idea.Aaru.VideoNow/riderModule.iml" filepath="$PROJECT_DIR$/.idea/.idea.Aaru.VideoNow/riderModule.iml" />
</modules>
</component>
</project>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="RIDER_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$/../.." />
<orderEntry type="sourceFolder" forTests="false" />
</component>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

View File

@@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MarkdownProjectSettings" wasCopied="true">
<PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true" replaceUnicodeEmoji="false" lastLayoutSetsDefault="false">
<PanelProvider>
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
</PanelProvider>
</PreviewSettings>
<ParserSettings gitHubSyntaxChange="false" emojiShortcuts="1" emojiImages="0">
<PegdownExtensions>
<option name="ABBREVIATIONS" value="false" />
<option name="ANCHORLINKS" value="true" />
<option name="ASIDE" value="false" />
<option name="ATXHEADERSPACE" value="true" />
<option name="AUTOLINKS" value="true" />
<option name="DEFINITIONS" value="false" />
<option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
<option name="FENCED_CODE_BLOCKS" value="true" />
<option name="FOOTNOTES" value="false" />
<option name="HARDWRAPS" value="false" />
<option name="HTML_DEEP_PARSER" value="false" />
<option name="INSERTED" value="false" />
<option name="QUOTES" value="false" />
<option name="RELAXEDHRULES" value="true" />
<option name="SMARTS" value="false" />
<option name="STRIKETHROUGH" value="true" />
<option name="SUBSCRIPT" value="false" />
<option name="SUPERSCRIPT" value="false" />
<option name="SUPPRESS_HTML_BLOCKS" value="false" />
<option name="SUPPRESS_INLINE_HTML" value="false" />
<option name="TABLES" value="true" />
<option name="TASKLISTITEMS" value="true" />
<option name="TOC" value="false" />
<option name="WIKILINKS" value="false" />
</PegdownExtensions>
<ParserOptions>
<option name="ADMONITION_EXT" value="false" />
<option name="ATTRIBUTES_EXT" value="false" />
<option name="COMMONMARK_LISTS" value="true" />
<option name="DUMMY" value="false" />
<option name="EMOJI_SHORTCUTS" value="true" />
<option name="ENUMERATED_REFERENCES_EXT" value="false" />
<option name="FLEXMARK_FRONT_MATTER" value="false" />
<option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
<option name="GFM_TABLE_RENDERING" value="true" />
<option name="GITBOOK_URL_ENCODING" value="false" />
<option name="GITHUB_LISTS" value="false" />
<option name="GITHUB_WIKI_LINKS" value="false" />
<option name="GITLAB_EXT" value="false" />
<option name="GITLAB_MATH_EXT" value="false" />
<option name="GITLAB_MERMAID_EXT" value="false" />
<option name="HEADER_ID_NON_ASCII_TO_LOWERCASE" value="false" />
<option name="HEADER_ID_NO_DUPED_DASHES" value="false" />
<option name="JEKYLL_FRONT_MATTER" value="false" />
<option name="MACROS_EXT" value="false" />
<option name="NO_TEXT_ATTRIBUTES" value="false" />
<option name="PARSE_HTML_ANCHOR_ID" value="false" />
<option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
</ParserOptions>
</ParserSettings>
<HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false" imageUriSerials="false" addDocTypeHtml="true" noParaTags="false">
<GeneratorProvider>
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
</GeneratorProvider>
<headerTop />
<headerBottom />
<bodyTop />
<bodyBottom />
</HtmlSettings>
<CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="false" isCssTextEnabled="false" isDynamicPageWidth="true">
<StylesheetProvider>
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
</StylesheetProvider>
<ScriptProviders />
<cssText />
<cssUriHistory />
</CssSettings>
<HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetPathType="2" targetExt="" useTargetExt="false" noCssNoScripts="false" useElementStyleAttribute="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
<LinkMapSettings>
<textMaps />
</LinkMapSettings>
</component>
</project>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/.idea.DiscImageChef.VideoNow/riderModule.iml" filepath="$PROJECT_DIR$/.idea/.idea.DiscImageChef.VideoNow/riderModule.iml" />
</modules>
</component>
</project>

View File

@@ -1,6 +1,6 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscImageChef.VideoNow", "DiscImageChef.VideoNow\DiscImageChef.VideoNow.csproj", "{FAA37B4C-8EF8-434B-9342-6185DB0D419C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aaru.VideoNow", "Aaru.VideoNow\Aaru.VideoNow.csproj", "{FAA37B4C-8EF8-434B-9342-6185DB0D419C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>Aaru.VideoNow</RootNamespace>
<AssemblyName>Aaru.VideoNow</AssemblyName>
<Copyright>Copyright © 2020-2024 Natalia Portillo</Copyright>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SharpAvi" Version="3.0.1"/>
</ItemGroup>
<ItemGroup>
<Content Include="..\LICENSE">
<Link>LICENSE</Link>
</Content>
<Content Include="..\README.md">
<Link>README.md</Link>
</Content>
</ItemGroup>
</Project>

326
Aaru.VideoNow/Color.cs Normal file
View File

@@ -0,0 +1,326 @@
using System;
using System.IO;
using System.Linq;
using SharpAvi;
using SharpAvi.Output;
namespace Aaru.VideoNow;
public static class Color
{
/// <summary>
/// This is some kind of header. Every 10 bytes there's an audio byte. Here it is without reordering from little
/// endian, so the first appearence is at 9th byte.
/// </summary>
public static readonly byte[] FrameMarker =
[
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81,
0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7,
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81,
0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7,
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x03, 0x06, 0x00, 0xFF, 0x04, 0x08,
0x05, 0x0A, 0x06, 0x0C, 0x07, 0x0E, 0x00, 0xFF, 0x08, 0x11, 0x09, 0x13, 0x0A, 0x15, 0x0B, 0x17, 0x00, 0xFF,
0x0C, 0x19, 0x0D, 0x1B, 0x0E, 0x1D, 0x0F, 0x1F, 0x00, 0xFF, 0x28, 0x00, 0x29, 0x02, 0x2A, 0x04, 0x2B, 0x06,
0x00, 0xFF, 0x2C, 0x08, 0x2D, 0x0A, 0x2E, 0x0C, 0x2F, 0x0E, 0x00, 0xFF, 0x30, 0x11, 0x31, 0x13, 0x32, 0x15,
0x33, 0x17, 0x00, 0xFF, 0x34, 0x19, 0x35, 0x1B, 0x36, 0x1D, 0x37, 0x1F, 0x00, 0xFF, 0x38, 0x00, 0x39, 0x02,
0x3A, 0x04, 0x3B, 0x06, 0x00, 0xFF, 0x3C, 0x08, 0x3D, 0x0A, 0x3E, 0x0C, 0x3F, 0x0E, 0x00, 0xFF, 0x40, 0x11,
0x41, 0x13, 0x42, 0x15, 0x43, 0x17, 0x00, 0xFF, 0x44, 0x19, 0x45, 0x1B, 0x46, 0x1D, 0x47, 0x1F, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFF
];
public static readonly byte[] SwappedFrameMarker =
[
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3,
0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00,
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3,
0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00,
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x00, 0x00, 0x02, 0x01, 0x04, 0x02, 0x06, 0x03, 0xFF, 0x00, 0x08, 0x04,
0x0A, 0x05, 0x0C, 0x06, 0x0E, 0x07, 0xFF, 0x00, 0x11, 0x08, 0x13, 0x09, 0x15, 0x0A, 0x17, 0x0B, 0xFF, 0x00,
0x19, 0x0C, 0x1B, 0x0D, 0x1D, 0x0E, 0x1F, 0x0F, 0xFF, 0x00, 0x00, 0x28, 0x02, 0x29, 0x04, 0x2A, 0x06, 0x2B,
0xFF, 0x00, 0x08, 0x2C, 0x0A, 0x2D, 0x0C, 0x2E, 0x0E, 0x2F, 0xFF, 0x00, 0x11, 0x30, 0x13, 0x31, 0x15, 0x32,
0x17, 0x33, 0xFF, 0x00, 0x19, 0x34, 0x1B, 0x35, 0x1D, 0x36, 0x1F, 0x37, 0xFF, 0x00, 0x00, 0x38, 0x02, 0x39,
0x04, 0x3A, 0x06, 0x3B, 0xFF, 0x00, 0x08, 0x3C, 0x0A, 0x3D, 0x0C, 0x3E, 0x0E, 0x3F, 0xFF, 0x00, 0x11, 0x40,
0x13, 0x41, 0x15, 0x42, 0x17, 0x43, 0xFF, 0x00, 0x19, 0x44, 0x1B, 0x45, 0x1D, 0x46, 0x1F, 0x47, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00
];
public static void Decode(string filename, Stream fs, bool swapped, long framePosition)
{
var progress = ' ';
var aviWriter = new AviWriter(filename + ".avi")
{
EmitIndex1 = true, FramesPerSecond = 18
};
IAviVideoStream videoStream = aviWriter.AddVideoStream(144, 80, BitsPerPixel.Bpp24);
videoStream.Codec = CodecIds.Uncompressed;
IAviAudioStream audioStream = aviWriter.AddAudioStream(2, 17640, 8);
fs.Position = framePosition;
var frameBuffer = new byte[19600];
fs.Read(frameBuffer, 0, frameBuffer.Length);
int audioStart = swapped ? 9 : 8;
byte[] frameMarkerToUse = swapped ? SwappedFrameMarker : FrameMarker;
if(!swapped) frameBuffer = Swapping.SwapBuffer(frameBuffer);
var outFs = new MemoryStream();
for(var i = 9; i <= frameBuffer.Length; i += 10)
{
progress = (i / 10 % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
byte[] videoFrame = DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
var totalFrames = 1;
framePosition += 19600;
var buffer = new byte[frameMarkerToUse.Length];
while(framePosition + 19600 < fs.Length)
{
progress = (totalFrames % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.LookingForMoreFrames}", progress);
for(int ab = audioStart; ab < buffer.Length; ab += 10) buffer[ab] = 0;
if(!buffer.SequenceEqual(frameMarkerToUse))
{
Console.Write("\r \r");
Console.WriteLine(Localization.FrameAndNextAreNotAligned, totalFrames);
long expectedFramePosition = framePosition;
while(framePosition < fs.Length)
{
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
for(int ab = audioStart; ab < buffer.Length; ab += 10) buffer[ab] = 0;
if(buffer.SequenceEqual(frameMarkerToUse))
{
Console.Write("\r \r");
fs.Position = framePosition;
frameBuffer = new byte[19600];
fs.Read(frameBuffer, 0, frameBuffer.Length);
if(!swapped) frameBuffer = Swapping.SwapBuffer(frameBuffer);
outFs = new MemoryStream();
for(var i = 9; i <= frameBuffer.Length; i += 10)
{
progress = (i / 10 % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
videoFrame = DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
totalFrames++;
Console.Write("\r \r");
Console.WriteLine(Localization.FrameFoundAtPosition,
framePosition,
totalFrames,
framePosition - expectedFramePosition);
Console.WriteLine(framePosition % 2352 == 0
? Localization.FrameIsAtSectorBoundary
: Localization.FrameIsNotAtSectorBoundary,
totalFrames);
framePosition += 19600;
break;
}
framePosition++;
}
continue;
}
if(framePosition % 2352 == 0)
{
Console.Write("\r \r");
Console.WriteLine(Localization.FrameIsAtSectorBoundary, totalFrames);
}
Console.Write("\r \r");
fs.Position = framePosition;
frameBuffer = new byte[19600];
fs.Read(frameBuffer, 0, frameBuffer.Length);
if(!swapped) frameBuffer = Swapping.SwapBuffer(frameBuffer);
outFs = new MemoryStream();
for(var i = 9; i <= frameBuffer.Length; i += 10)
{
progress = (i / 10 % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
videoFrame = DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
totalFrames++;
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
framePosition += 19600;
}
Console.Write("\r \r");
Console.WriteLine(Localization.FramesFound, totalFrames);
outFs.Close();
aviWriter.Close();
}
public static byte[] DecodeFrame(byte[] frameBuffer)
{
var progress = ' ';
var videoFs = new MemoryStream();
Array.Reverse(frameBuffer);
byte r, g, b;
var index = 1;
int indexBlock2;
for(var i = 0; i < 19200; i += 240)
{
for(var k = 0; k < 120; k += 10)
{
for(var j = 1; j < 9; j += 3)
{
indexBlock2 = index + 120;
progress = (index / 10 % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.ExtractingVideo}", progress);
r = (byte)((frameBuffer[index] & 0xF0) + ((frameBuffer[index] & 0xF0) >> 4));
b = (byte)((frameBuffer[indexBlock2] & 0xF0) + ((frameBuffer[indexBlock2] & 0xF0) >> 4));
g = (byte)((frameBuffer[indexBlock2] & 0x0F) + ((frameBuffer[indexBlock2] & 0x0F) << 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
r = (byte)((frameBuffer[indexBlock2 + 1] & 0xF0) + ((frameBuffer[indexBlock2 + 1] & 0xF0) >> 4));
b = (byte)((frameBuffer[index] & 0x0F) + ((frameBuffer[index] & 0x0F) << 4));
g = (byte)((frameBuffer[index + 1] & 0xF0) + ((frameBuffer[index + 1] & 0xF0) >> 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
r = (byte)((frameBuffer[index + 1] & 0x0F) + ((frameBuffer[index + 1] & 0x0F) << 4));
b = (byte)((frameBuffer[indexBlock2 + 1] & 0x0F) + ((frameBuffer[indexBlock2 + 1] & 0x0F) << 4));
g = (byte)((frameBuffer[indexBlock2 + 2] & 0xF0) + ((frameBuffer[indexBlock2 + 2] & 0xF0) >> 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
r = (byte)((frameBuffer[index + 120 + 2] & 0x0F) + ((frameBuffer[index + 120 + 2] & 0x0F) << 4));
b = (byte)((frameBuffer[index + 2] & 0xF0) + ((frameBuffer[index + 2] & 0xF0) >> 4));
g = (byte)((frameBuffer[index + 2] & 0x0F) + ((frameBuffer[index + 2] & 0x0F) << 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
index += 3;
}
index += 1;
}
index += 120;
}
frameBuffer = new byte[videoFs.Length];
byte[] frameBuffer2 = videoFs.ToArray();
for(var row = 0; row < 80; row++)
{
for(var p = 0; p < 432; p++) frameBuffer[row * 432 + p] = frameBuffer2[row * 432 + (431 - p)];
}
return frameBuffer;
}
}

202
Aaru.VideoNow/Program.cs Normal file
View File

@@ -0,0 +1,202 @@
// /***************************************************************************
// Aaru Data Preservation Suite
// ----------------------------------------------------------------------------
//
// Filename : Program.cs
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// Component : VideoNow analyzing and decoding tools.
//
// --[ Description ] ----------------------------------------------------------
//
// Main program loop.
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2011-2024 Natalia Portillo
// ****************************************************************************/
using System;
using System.IO;
using System.Linq;
using System.Reflection;
// ReSharper disable LocalizableElement
namespace Aaru.VideoNow;
static class MainClass
{
const int MAX_SIZE = 635040000;
static string _assemblyCopyright;
static string _assemblyTitle;
static AssemblyInformationalVersionAttribute _assemblyVersion;
static readonly byte[] FrameStart = [0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81];
static readonly byte[] SwappedFrameStart = [0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3];
public static void Main(string[] args)
{
object[] attributes = typeof(MainClass).Assembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
_assemblyTitle = ((AssemblyTitleAttribute)attributes[0]).Title;
attributes = typeof(MainClass).Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
_assemblyVersion =
Attribute.GetCustomAttribute(typeof(MainClass).Assembly, typeof(AssemblyInformationalVersionAttribute)) as
AssemblyInformationalVersionAttribute;
_assemblyCopyright = ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
PrintCopyright();
if(args.Length != 1)
{
Console.WriteLine(Localization.Usage);
return;
}
if(!File.Exists(args[0]))
{
Console.WriteLine(Localization.FileDoesNotExist);
return;
}
FileStream fs;
try
{
fs = File.Open(args[0], FileMode.Open, FileAccess.Read, FileShare.Read);
}
catch
{
Console.WriteLine(Localization.FileCannotBeOpened);
return;
}
if(fs.Length > MAX_SIZE)
{
Console.WriteLine(Localization.FileIsTooBig);
return;
}
Console.WriteLine(Localization.FileName, args[0]);
Console.WriteLine(Localization.SearchingFirstFrame);
long framePosition = 0;
var buffer = new byte[Color.FrameMarker.Length];
var swappedBuffer = new byte[Color.FrameMarker.Length];
var swapped = false;
var xp = false;
var startBuffer = new byte[FrameStart.Length];
var xpBuffer = new byte[Xp.FrameMarker.Length];
var xpSwappedBuffer = new byte[Xp.FrameMarker.Length];
while(framePosition < 19760)
{
fs.Position = framePosition;
fs.Read(startBuffer, 0, startBuffer.Length);
if(!startBuffer.SequenceEqual(FrameStart) && !startBuffer.SequenceEqual(SwappedFrameStart))
{
framePosition++;
continue;
}
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
for(var ab = 8; ab < buffer.Length; ab += 10) buffer[ab] = 0;
if(buffer.SequenceEqual(Color.FrameMarker)) break;
fs.Position = framePosition;
fs.Read(swappedBuffer, 0, swappedBuffer.Length);
for(var ab = 9; ab < swappedBuffer.Length; ab += 10) swappedBuffer[ab] = 0;
if(swappedBuffer.SequenceEqual(Color.SwappedFrameMarker))
{
swapped = true;
break;
}
fs.Position = framePosition;
fs.Read(xpBuffer, 0, xpBuffer.Length);
for(var i = 0; i < xpBuffer.Length; i++) xpBuffer[i] &= Xp.FrameMask[i];
if(xpBuffer.SequenceEqual(Xp.FrameMarker))
{
xp = true;
break;
}
fs.Position = framePosition;
fs.Read(xpSwappedBuffer, 0, xpSwappedBuffer.Length);
for(var i = 0; i < xpSwappedBuffer.Length; i++) xpSwappedBuffer[i] &= Xp.SwappedFrameMask[i];
if(xpSwappedBuffer.SequenceEqual(Xp.SwappedFrameMarker))
{
swapped = true;
xp = true;
break;
}
framePosition++;
}
if(!buffer.SequenceEqual(Color.FrameMarker) &&
!swappedBuffer.SequenceEqual(Color.SwappedFrameMarker) &&
!xpBuffer.SequenceEqual(Xp.FrameMarker) &&
!xpSwappedBuffer.SequenceEqual(Xp.SwappedFrameMarker))
{
Console.WriteLine(Localization.NoFrameFound);
return;
}
Console.WriteLine(Localization.FirstFrameFoundAt, framePosition);
Console.WriteLine(framePosition % 2352 == 0
? Localization.FirstFrameIsAtSectorBoundary
: Localization.FirstFrameIsNotAtSectorBoundary);
if(xp)
Xp.Decode(args[0], fs, swapped, framePosition);
else
Color.Decode(args[0], fs, swapped, framePosition);
fs.Close();
}
static void PrintCopyright()
{
Console.WriteLine("{0} {1}", _assemblyTitle, _assemblyVersion?.InformationalVersion);
Console.WriteLine("{0}", _assemblyCopyright);
Console.WriteLine();
}
}

View File

@@ -8,34 +8,34 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace DiscImageChef.VideoNow {
namespace Aaru.VideoNow {
using System;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Localization {
private static System.Resources.ResourceManager resourceMan;
private static System.Globalization.CultureInfo resourceCulture;
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Localization() {
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
public static System.Resources.ResourceManager ResourceManager {
get {
if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("DiscImageChef.VideoNow.Properties.Localization", typeof(Localization).Assembly);
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Aaru.VideoNow.Properties.Localization", typeof(Localization).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
public static System.Globalization.CultureInfo Culture {
get {
@@ -45,109 +45,109 @@ namespace DiscImageChef.VideoNow {
resourceCulture = value;
}
}
public static string Usage {
get {
return ResourceManager.GetString("Usage", resourceCulture);
}
}
public static string FileDoesNotExist {
get {
return ResourceManager.GetString("FileDoesNotExist", resourceCulture);
}
}
public static string FileCannotBeOpened {
get {
return ResourceManager.GetString("FileCannotBeOpened", resourceCulture);
}
}
public static string FileIsTooBig {
get {
return ResourceManager.GetString("FileIsTooBig", resourceCulture);
}
}
public static string FileName {
get {
return ResourceManager.GetString("FileName", resourceCulture);
}
}
public static string SearchingFirstFrame {
get {
return ResourceManager.GetString("SearchingFirstFrame", resourceCulture);
}
}
public static string NoFrameFound {
get {
return ResourceManager.GetString("NoFrameFound", resourceCulture);
}
}
public static string FirstFrameFoundAt {
get {
return ResourceManager.GetString("FirstFrameFoundAt", resourceCulture);
}
}
public static string FirstFrameIsAtSectorBoundary {
get {
return ResourceManager.GetString("FirstFrameIsAtSectorBoundary", resourceCulture);
}
}
public static string FirstFrameIsNotAtSectorBoundary {
get {
return ResourceManager.GetString("FirstFrameIsNotAtSectorBoundary", resourceCulture);
}
}
public static string ExtractingAudio {
get {
return ResourceManager.GetString("ExtractingAudio", resourceCulture);
}
}
public static string LookingForMoreFrames {
get {
return ResourceManager.GetString("LookingForMoreFrames", resourceCulture);
}
}
public static string FrameAndNextAreNotAligned {
get {
return ResourceManager.GetString("FrameAndNextAreNotAligned", resourceCulture);
}
}
public static string FrameFoundAtPosition {
get {
return ResourceManager.GetString("FrameFoundAtPosition", resourceCulture);
}
}
public static string FrameIsAtSectorBoundary {
get {
return ResourceManager.GetString("FrameIsAtSectorBoundary", resourceCulture);
}
}
public static string FrameIsNotAtSectorBoundary {
get {
return ResourceManager.GetString("FrameIsNotAtSectorBoundary", resourceCulture);
}
}
public static string FramesFound {
get {
return ResourceManager.GetString("FramesFound", resourceCulture);
}
}
public static string ExtractingVideo {
get {
return ResourceManager.GetString("ExtractingVideo", resourceCulture);

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Uso: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>El archivo especificado no existe.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>No se pudo abrir el archivo especificado.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>El archivo es demasiado grande, no se puede continuar.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Archivo: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Buscando el primer fotograma....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>¡No se pudo encontrar ningún fotograma!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Se encontró el primer fotograma en {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>El primer fotograma está al comienzo de un sector</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>El primer fotograma no está al comienzo de un sector</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extrayendo sonido {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Buscando más fotogramas {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>El fotograma {0} y el siguiente no están alineados...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Fotograma {1} encontrado en {0}, separado por {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>El fotograma {0} está al comienzo de un sector</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>El fotograma {0} no está al comienzo de un sector</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Encontrados {0} fotogramas</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extrayendo video {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Usage: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Le fichier spécifié n'existe pas.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Impossible d'ouvrir le fichier spécifié.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Le fichier est trop grand, ne peut pas continuer.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Fichier: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Cherchant le premier cadre....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Aucun cadre trouvé!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Premier cadre trouvé à {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Premier cadre est à la limite du secteur</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Premier cadre n'est pas à la limite du secteur</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraire l'audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Vous cherchez plus de cadres {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Cadre {0} et le suivant ne sont pas alignés...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Cadre {1} trouvé à {0}, {2} bytes apart</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Cadre {0} est à la limite du secteur</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Cadre {0} n'est pas à la limite du secteur</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} cadres trouvés</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraire la vidéo {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Utilizzo: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Il file specificato non esiste.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Impossible aprire il file specificato.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>File troppo grande, impossibile continuare.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>File: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Ricerca primo fotogramma....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Nessun fotogramma trovato!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primo fotogramma trovato a {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primo fotogramma al confine del settore</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primo fotogramma non al confine del settore</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Estrazione audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Buscando más fotogramas {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Fotogramma {0} e il successivo non allineati...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Fotogramma {1} trovato a {0}, dopo {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Fotogramma {0} al confine del settore</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Fotogramma {0} non al confine del settore</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Trovati {0} fotogrammi</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Estrazione video {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Usage: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Opgegeven bestand kan niet worden gevonden.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Kon opgegeven bestand niet openen.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Bestand is te groot, afgebroken.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Bestand: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Eerste frame aan het zoeken....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Geen frame gevonden!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Eerste frame gevonden op {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Eerste frame is op een sector-grens</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Eerste frame is niet op een sector-grens</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Uitlezen van audio-data {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Zoekend naar (nog meer) frames {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Frame {0} en het volgende frame zijn niet aan elkaar gebonden...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Frame {1} gevonden op {0}, {2} bytes van elkaar verwijderd</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Frame {0} is op een sector-grens</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Frame {0} is niet op een sector-grens</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} Frames gevonden</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Uitlezen van video-data {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Utilização: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>O ficheiro especificado não existe.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Não conseguiu abrir o ficheiro especificado.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Ficheiro é demasiado grande, não continuando.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Ficheiro: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Procurando primeiro frame....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Não conseguiu encontrar nenhum frame!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primeiro frame encontrado em {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame está numa fronteira de setor</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame não está numa fronteira de setor</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraindo aúdio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Procurando mais frames {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Frame {0} e o seguinte não estão alinhados...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Frame {0} não está numa fronteira de setor</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Encontrados {0} fotogramas</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraindo vídeo {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Utilização: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>O ficheiro especificado não existe.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Não conseguiu abrir o ficheiro especificado.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Ficheiro é demasiado grande, não continuando.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Ficheiro: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Procurando primeiro frame....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Não conseguiu encontrar nenhum frame!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primeiro frame encontrado em {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame está numa fronteira de setor</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame não está numa fronteira de setor</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraindo aúdio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Procurando mais frames {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Frame {0} e o seguinte não estão alinhados...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Frame {0} não está numa fronteira de setor</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Encontrados {0} fotogramas</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraindo vídeo {0} </value>
</data>
</root>

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
@@ -25,107 +25,112 @@
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Usage: DiscImageChef.VideoNow dump.raw</value>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Usage: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<data name="FileDoesNotExist" xml:space="preserve">
<value>Specified file does not exist.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Could not open specified file.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<data name="FileIsTooBig" xml:space="preserve">
<value>File is too big, not continuing.</value>
</data>
<data name="FileName" xml:space="preserve">
<data name="FileName" xml:space="preserve">
<value>File: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Searching for first frame....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<data name="NoFrameFound" xml:space="preserve">
<value>Could not find any frame!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>First frame found at {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>First frame is at a sector boundary</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>First frame is not at a sector boundary</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<data name="ExtractingAudio" xml:space="preserve">
<value>Extracting audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Looking for more frames {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Frame {0} and the next one are not aligned...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Frame {1} found at {0}, {2} bytes apart</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Frame {0} is at a sector boundary</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Frame {0} is not at a sector boundary</value>
</data>
<data name="FramesFound" xml:space="preserve">
<data name="FramesFound" xml:space="preserve">
<value>Found {0} frames</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<data name="ExtractingVideo" xml:space="preserve">
<value>Extracting video {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Folosire: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Fișierul specificat nu există.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Fișierul specificat nu poate fi deschis.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Fișierul este prea mare, imposibil de continuat.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Fișier: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Caut primul cadru....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Nu am putut găsi nici un cadru!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primul cardu a fost găsit la {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primul cadru este la limita sectorului</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primul cadru nu este la limita sectorului</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extrag audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Caut mai multe cardre {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Cadrul {0} și următorul nu sunt aliniate...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Cadrul {1} găsit la {0}, {2} bytes distanta</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Cadrul {0} este la limita sectorului</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Cadrul nu este la limita secorului</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} cadre găsite</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extrag video {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Использование: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Указанный файл не существует.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Невозможно открыть указанный файл.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Файл слишком большой, операция прекращена.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Файл: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Поиск первого фрейма....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Невозможно найти ни один фрейм!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Первый фрейм найден по смещению {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Первый фрейм на границе сектора</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Первый фрейм не на границе сектора</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Извлечение аудио {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Продолжение поиска фреймов {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Фрейм {0} и следующий за ним не выровнены...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Фрейм {1} найден по смещению {0}, на расстоянии {2} байт</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Фрейм {0} на границе сектора</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Фрейм {0} не на границе сектора</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Найдено {0} фреймов</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Извлечение видео {0} </value>
</data>
</root>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root"
xmlns="">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Användning: Aaru.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Angivna filen finns inte.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Kunde inte öppna den angivna filen.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Filen är för stor, avbryter.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Fil: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Söker efter första bilden....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Kunde inte hitta några bilder!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Första bilden hittad på {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Första bilden funnen vid en sektorgräns</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Första bilden finns ej vid en sektorgräns</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraherar audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Letar efter fler bilder {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Bild {0} och efterföljade bild är inte inriktad...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Bild {1} funnen på {0}, {2} bytes från varandra</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Bild {0} funnen vid en sektorgräns</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Bild {0} finns ej vid en sektorgräns</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} bilder funna</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraherar video {0} </value>
</data>
</root>

17
Aaru.VideoNow/Swapping.cs Normal file
View File

@@ -0,0 +1,17 @@
namespace Aaru.VideoNow;
public static class Swapping
{
public static byte[] SwapBuffer(byte[] buffer)
{
var tmp = new byte[buffer.Length];
for(var i = 0; i < buffer.Length; i += 2)
{
tmp[i] = buffer[i + 1];
tmp[i + 1] = buffer[i];
}
return tmp;
}
}

332
Aaru.VideoNow/Xp.cs Normal file
View File

@@ -0,0 +1,332 @@
using System;
using System.IO;
using System.Linq;
using SharpAvi;
using SharpAvi.Output;
namespace Aaru.VideoNow;
public static class Xp
{
public static readonly byte[] FrameMask =
[
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00
];
public static readonly byte[] SwappedFrameMask =
[
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF
];
public static readonly byte[] FrameMarker =
[
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3,
0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00,
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3,
0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00,
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00
];
public static readonly byte[] SwappedFrameMarker =
[
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81,
0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7,
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81,
0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7,
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF
];
public static void Decode(string filename, Stream fs, bool swapped, long framePosition)
{
var progress = ' ';
var aviWriter = new AviWriter(filename + ".avi")
{
EmitIndex1 = true, FramesPerSecond = 18
};
IAviVideoStream videoStream = aviWriter.AddVideoStream(144, 80, BitsPerPixel.Bpp24);
videoStream.Codec = CodecIds.Uncompressed;
IAviAudioStream audioStream = aviWriter.AddAudioStream(2, 17784, 8);
fs.Position = framePosition;
var frameBuffer = new byte[19760];
fs.Read(frameBuffer, 0, frameBuffer.Length);
int audioStart = swapped ? 9 : 8;
byte[] frameMarkerToUse = swapped ? SwappedFrameMarker : FrameMarker;
byte[] frameMaskToUse = swapped ? SwappedFrameMask : FrameMask;
if(swapped) frameBuffer = Swapping.SwapBuffer(frameBuffer);
var outFs = new MemoryStream();
for(var i = 9; i <= frameBuffer.Length; i += 10)
{
progress = (i / 10 % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
byte[] videoFrame = Color.DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
var totalFrames = 1;
framePosition += 19760;
var buffer = new byte[frameMarkerToUse.Length];
while(framePosition + 19760 < fs.Length)
{
progress = (totalFrames % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.LookingForMoreFrames}", progress);
for(var i = 0; i < buffer.Length; i++) buffer[i] &= frameMaskToUse[i];
if(!buffer.SequenceEqual(frameMarkerToUse))
{
Console.Write("\r \r");
Console.WriteLine(Localization.FrameAndNextAreNotAligned, totalFrames);
long expectedFramePosition = framePosition;
while(framePosition < fs.Length)
{
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
for(var i = 0; i < buffer.Length; i++) buffer[i] &= frameMaskToUse[i];
if(buffer.SequenceEqual(frameMarkerToUse))
{
Console.Write("\r \r");
fs.Position = framePosition;
frameBuffer = new byte[19760];
fs.Read(frameBuffer, 0, frameBuffer.Length);
if(swapped) frameBuffer = Swapping.SwapBuffer(frameBuffer);
outFs = new MemoryStream();
for(var i = 9; i <= frameBuffer.Length; i += 10)
{
progress = (i / 10 % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
videoFrame = Color.DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
totalFrames++;
Console.Write("\r \r");
Console.WriteLine(Localization.FrameFoundAtPosition,
framePosition,
totalFrames,
framePosition - expectedFramePosition);
Console.WriteLine(framePosition % 2352 == 0
? Localization.FrameIsAtSectorBoundary
: Localization.FrameIsNotAtSectorBoundary,
totalFrames);
framePosition += 19760;
break;
}
framePosition++;
}
continue;
}
if(framePosition % 2352 == 0)
{
Console.Write("\r \r");
Console.WriteLine(Localization.FrameIsAtSectorBoundary, totalFrames);
}
Console.Write("\r \r");
fs.Position = framePosition;
frameBuffer = new byte[19760];
fs.Read(frameBuffer, 0, frameBuffer.Length);
if(swapped) frameBuffer = Swapping.SwapBuffer(frameBuffer);
outFs = new MemoryStream();
for(var i = 9; i <= frameBuffer.Length; i += 10)
{
progress = (i / 10 % 4) switch
{
0 => '-',
1 => '\\',
2 => '|',
3 => '/',
_ => progress
};
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
videoFrame = Color.DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
totalFrames++;
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
framePosition += 19760;
}
Console.Write("\r \r");
Console.WriteLine(Localization.FramesFound, totalFrames);
outFs.Close();
aviWriter.Close();
}
}

View File

@@ -1,96 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{FAA37B4C-8EF8-434B-9342-6185DB0D419C}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DiscImageChef.VideoNow</RootNamespace>
<AssemblyName>DiscImageChef.VideoNow</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Localization.Designer.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="..\LICENSE">
<Link>LICENSE</Link>
</Content>
<Content Include="..\README.md">
<Link>README.md</Link>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="SharpAvi" Version="2.1.1" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\Localization.es.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.fr.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.it.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.nl.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.pt-BR.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.pt-PT.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.ro.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.ru.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Localization.sv.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,544 +0,0 @@
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
// Filename : Program.cs
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// Component : VideoNow analyzing and decoding tools.
//
// --[ Description ] ----------------------------------------------------------
//
// Main program loop.
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2011-2019 Natalia Portillo
// ****************************************************************************/
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using SharpAvi;
using SharpAvi.Output;
// ReSharper disable LocalizableElement
namespace DiscImageChef.VideoNow
{
internal static class MainClass
{
const int MAX_SIZE = 635040000;
static string assemblyCopyright;
static string assemblyTitle;
static AssemblyInformationalVersionAttribute assemblyVersion;
/// <summary>
/// This is some kind of header. Every 10 bytes there's an audio byte. Here it is without reordering from little
/// endian, so the first appearence is at 9th byte.
/// </summary>
static readonly byte[] FrameMarker =
{
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81,
0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7,
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81,
0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7,
0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81,
0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7,
0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0xE3, 0x81, 0xC7, 0xE3,
0x81, 0xC7, 0xE3, 0x81, 0x00, 0xC7, 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x03, 0x06, 0x00, 0xFF, 0x04, 0x08,
0x05, 0x0A, 0x06, 0x0C, 0x07, 0x0E, 0x00, 0xFF, 0x08, 0x11, 0x09, 0x13, 0x0A, 0x15, 0x0B, 0x17, 0x00, 0xFF,
0x0C, 0x19, 0x0D, 0x1B, 0x0E, 0x1D, 0x0F, 0x1F, 0x00, 0xFF, 0x28, 0x00, 0x29, 0x02, 0x2A, 0x04, 0x2B, 0x06,
0x00, 0xFF, 0x2C, 0x08, 0x2D, 0x0A, 0x2E, 0x0C, 0x2F, 0x0E, 0x00, 0xFF, 0x30, 0x11, 0x31, 0x13, 0x32, 0x15,
0x33, 0x17, 0x00, 0xFF, 0x34, 0x19, 0x35, 0x1B, 0x36, 0x1D, 0x37, 0x1F, 0x00, 0xFF, 0x38, 0x00, 0x39, 0x02,
0x3A, 0x04, 0x3B, 0x06, 0x00, 0xFF, 0x3C, 0x08, 0x3D, 0x0A, 0x3E, 0x0C, 0x3F, 0x0E, 0x00, 0xFF, 0x40, 0x11,
0x41, 0x13, 0x42, 0x15, 0x43, 0x17, 0x00, 0xFF, 0x44, 0x19, 0x45, 0x1B, 0x46, 0x1D, 0x47, 0x1F, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0xFF
};
static readonly byte[] SwappedFrameMarker =
{
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3,
0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00,
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3,
0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00,
0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3,
0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81,
0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7, 0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x81, 0xE3, 0xE3, 0xC7,
0xC7, 0x81, 0x81, 0xE3, 0xC7, 0x00, 0x00, 0x00, 0x02, 0x01, 0x04, 0x02, 0x06, 0x03, 0xFF, 0x00, 0x08, 0x04,
0x0A, 0x05, 0x0C, 0x06, 0x0E, 0x07, 0xFF, 0x00, 0x11, 0x08, 0x13, 0x09, 0x15, 0x0A, 0x17, 0x0B, 0xFF, 0x00,
0x19, 0x0C, 0x1B, 0x0D, 0x1D, 0x0E, 0x1F, 0x0F, 0xFF, 0x00, 0x00, 0x28, 0x02, 0x29, 0x04, 0x2A, 0x06, 0x2B,
0xFF, 0x00, 0x08, 0x2C, 0x0A, 0x2D, 0x0C, 0x2E, 0x0E, 0x2F, 0xFF, 0x00, 0x11, 0x30, 0x13, 0x31, 0x15, 0x32,
0x17, 0x33, 0xFF, 0x00, 0x19, 0x34, 0x1B, 0x35, 0x1D, 0x36, 0x1F, 0x37, 0xFF, 0x00, 0x00, 0x38, 0x02, 0x39,
0x04, 0x3A, 0x06, 0x3B, 0xFF, 0x00, 0x08, 0x3C, 0x0A, 0x3D, 0x0C, 0x3E, 0x0E, 0x3F, 0xFF, 0x00, 0x11, 0x40,
0x13, 0x41, 0x15, 0x42, 0x17, 0x43, 0xFF, 0x00, 0x19, 0x44, 0x1B, 0x45, 0x1D, 0x46, 0x1F, 0x47, 0xFF, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00
};
public static void Main(string[] args)
{
object[] attributes = typeof(MainClass).Assembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
assemblyTitle = ((AssemblyTitleAttribute)attributes[0]).Title;
attributes = typeof(MainClass).Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
assemblyVersion =
Attribute.GetCustomAttribute(typeof(MainClass).Assembly, typeof(AssemblyInformationalVersionAttribute))
as AssemblyInformationalVersionAttribute;
assemblyCopyright = ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
PrintCopyright();
if(args.Length != 1)
{
Console.WriteLine(Localization.Usage);
return;
}
if(!File.Exists(args[0]))
{
Console.WriteLine(Localization.FileDoesNotExist);
return;
}
FileStream fs;
try
{
fs = File.Open(args[0], FileMode.Open, FileAccess.Read, FileShare.Read);
}
catch
{
Console.WriteLine(Localization.FileCannotBeOpened);
return;
}
if(fs.Length > MAX_SIZE)
{
Console.WriteLine(Localization.FileIsTooBig);
return;
}
Console.WriteLine(Localization.FileName, args[0]);
Console.WriteLine(Localization.SearchingFirstFrame);
long framePosition = 0;
byte[] buffer = new byte[FrameMarker.Length];
byte[] swappedBuffer = new byte[FrameMarker.Length];
bool swapped = false;
while(framePosition < 19600)
{
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
for(int ab = 8; ab < buffer.Length; ab += 10)
buffer[ab] = 0;
if(buffer.SequenceEqual(FrameMarker))
break;
fs.Position = framePosition;
fs.Read(swappedBuffer, 0, swappedBuffer.Length);
for(int ab = 9; ab < swappedBuffer.Length; ab += 10)
swappedBuffer[ab] = 0;
if(swappedBuffer.SequenceEqual(SwappedFrameMarker))
{
swapped = true;
break;
}
framePosition++;
}
for(int ab = 8; ab < buffer.Length; ab += 10)
buffer[ab] = 0;
for(int ab = 9; ab < swappedBuffer.Length; ab += 10)
swappedBuffer[ab] = 0;
if(!buffer.SequenceEqual(FrameMarker) &&
!swappedBuffer.SequenceEqual(SwappedFrameMarker))
{
Console.WriteLine(Localization.NoFrameFound);
return;
}
Console.WriteLine(Localization.FirstFrameFoundAt, framePosition);
Console.WriteLine(framePosition % 2352 == 0 ? Localization.FirstFrameIsAtSectorBoundary
: Localization.FirstFrameIsNotAtSectorBoundary);
char progress = ' ';
var aviWriter = new AviWriter(args[0] + ".avi")
{
EmitIndex1 = true, FramesPerSecond = 18
};
IAviVideoStream videoStream = aviWriter.AddVideoStream(144, 80, BitsPerPixel.Bpp24);
videoStream.Codec = KnownFourCCs.Codecs.Uncompressed;
IAviAudioStream audioStream = aviWriter.AddAudioStream(2, 17640, 8);
fs.Position = framePosition;
byte[] frameBuffer = new byte[19600];
fs.Read(frameBuffer, 0, frameBuffer.Length);
int audioStart = swapped ? 9 : 8;
byte[] frameMarkerToUse = swapped ? SwappedFrameMarker : FrameMarker;
if(!swapped)
frameBuffer = SwapBuffer(frameBuffer);
var outFs = new MemoryStream();
for(int i = 9; i <= frameBuffer.Length; i += 10)
{
switch(i / 10 % 4)
{
case 0:
progress = '-';
break;
case 1:
progress = '\\';
break;
case 2:
progress = '|';
break;
case 3:
progress = '/';
break;
}
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
byte[] videoFrame = DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
int totalFrames = 1;
framePosition += 19600;
buffer = new byte[frameMarkerToUse.Length];
while(framePosition + 19600 < fs.Length)
{
switch(totalFrames % 4)
{
case 0:
progress = '-';
break;
case 1:
progress = '\\';
break;
case 2:
progress = '|';
break;
case 3:
progress = '/';
break;
}
Console.Write($"\r{Localization.LookingForMoreFrames}", progress);
for(int ab = audioStart; ab < buffer.Length; ab += 10)
buffer[ab] = 0;
if(!buffer.SequenceEqual(frameMarkerToUse))
{
Console.Write("\r \r");
Console.WriteLine(Localization.FrameAndNextAreNotAligned, totalFrames);
long expectedFramePosition = framePosition;
while(framePosition < fs.Length)
{
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
for(int ab = audioStart; ab < buffer.Length; ab += 10)
buffer[ab] = 0;
if(buffer.SequenceEqual(frameMarkerToUse))
{
Console.Write("\r \r");
fs.Position = framePosition;
frameBuffer = new byte[19600];
fs.Read(frameBuffer, 0, frameBuffer.Length);
if(!swapped)
frameBuffer = SwapBuffer(frameBuffer);
outFs = new MemoryStream();
for(int i = 9; i <= frameBuffer.Length; i += 10)
{
switch(i / 10 % 4)
{
case 0:
progress = '-';
break;
case 1:
progress = '\\';
break;
case 2:
progress = '|';
break;
case 3:
progress = '/';
break;
}
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
videoFrame = DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
totalFrames++;
Console.Write("\r \r");
Console.WriteLine(Localization.FrameFoundAtPosition, framePosition, totalFrames,
framePosition - expectedFramePosition);
Console.
WriteLine(framePosition % 2352 == 0 ? Localization.FrameIsAtSectorBoundary : Localization.FrameIsNotAtSectorBoundary,
totalFrames);
framePosition += 19600;
break;
}
framePosition++;
}
continue;
}
if(framePosition % 2352 == 0)
{
Console.Write("\r \r");
Console.WriteLine(Localization.FrameIsAtSectorBoundary, totalFrames);
}
Console.Write("\r \r");
fs.Position = framePosition;
frameBuffer = new byte[19600];
fs.Read(frameBuffer, 0, frameBuffer.Length);
if(!swapped)
frameBuffer = SwapBuffer(frameBuffer);
outFs = new MemoryStream();
for(int i = 9; i <= frameBuffer.Length; i += 10)
{
switch(i / 10 % 4)
{
case 0:
progress = '-';
break;
case 1:
progress = '\\';
break;
case 2:
progress = '|';
break;
case 3:
progress = '/';
break;
}
Console.Write($"\r{Localization.ExtractingAudio}", progress);
outFs.WriteByte(frameBuffer[i]);
}
videoFrame = DecodeFrame(frameBuffer);
videoStream.WriteFrame(true, videoFrame, 0, videoFrame.Length);
audioStream.WriteBlock(outFs.ToArray(), 0, (int)outFs.Length);
totalFrames++;
fs.Position = framePosition;
fs.Read(buffer, 0, buffer.Length);
framePosition += 19600;
}
Console.Write("\r \r");
Console.WriteLine(Localization.FramesFound, totalFrames);
fs.Close();
outFs.Close();
aviWriter.Close();
}
static void PrintCopyright()
{
Console.WriteLine("{0} {1}", assemblyTitle, assemblyVersion?.InformationalVersion);
Console.WriteLine("{0}", assemblyCopyright);
Console.WriteLine();
}
static byte[] SwapBuffer(byte[] buffer)
{
byte[] tmp = new byte[buffer.Length];
for(int i = 0; i < buffer.Length; i += 2)
{
tmp[i] = buffer[i + 1];
tmp[i + 1] = buffer[i];
}
return tmp;
}
static byte[] DecodeFrame(byte[] frameBuffer)
{
char progress = ' ';
var videoFs = new MemoryStream();
Array.Reverse(frameBuffer);
byte r, g, b;
int index = 1;
int indexBlock2;
for(int i = 0; i < 19200; i += 240)
{
for(int k = 0; k < 120; k += 10)
{
for(int j = 1; j < 9; j += 3)
{
indexBlock2 = index + 120;
switch(index / 10 % 4)
{
case 0:
progress = '-';
break;
case 1:
progress = '\\';
break;
case 2:
progress = '|';
break;
case 3:
progress = '/';
break;
}
Console.Write($"\r{Localization.ExtractingVideo}", progress);
r = (byte)((frameBuffer[index] & 0xF0) + ((frameBuffer[index] & 0xF0) >> 4));
b = (byte)((frameBuffer[indexBlock2] & 0xF0) + ((frameBuffer[indexBlock2] & 0xF0) >> 4));
g = (byte)((frameBuffer[indexBlock2] & 0x0F) + ((frameBuffer[indexBlock2] & 0x0F) << 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
r = (byte)((frameBuffer[indexBlock2 + 1] & 0xF0) +
((frameBuffer[indexBlock2 + 1] & 0xF0) >> 4));
b = (byte)((frameBuffer[index] & 0x0F) + ((frameBuffer[index] & 0x0F) << 4));
g = (byte)((frameBuffer[index + 1] & 0xF0) + ((frameBuffer[index + 1] & 0xF0) >> 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
r = (byte)((frameBuffer[index + 1] & 0x0F) + ((frameBuffer[index + 1] & 0x0F) << 4));
b = (byte)((frameBuffer[indexBlock2 + 1] & 0x0F) +
((frameBuffer[indexBlock2 + 1] & 0x0F) << 4));
g = (byte)((frameBuffer[indexBlock2 + 2] & 0xF0) +
((frameBuffer[indexBlock2 + 2] & 0xF0) >> 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
r = (byte)((frameBuffer[index + 120 + 2] & 0x0F) +
((frameBuffer[index + 120 + 2] & 0x0F) << 4));
b = (byte)((frameBuffer[index + 2] & 0xF0) + ((frameBuffer[index + 2] & 0xF0) >> 4));
g = (byte)((frameBuffer[index + 2] & 0x0F) + ((frameBuffer[index + 2] & 0x0F) << 4));
videoFs.WriteByte(r);
videoFs.WriteByte(g);
videoFs.WriteByte(b);
index += 3;
}
index += 1;
}
index += 120;
}
frameBuffer = videoFs.ToArray();
Array.Reverse(frameBuffer);
return frameBuffer;
}
}
}

View File

@@ -1,35 +0,0 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DiscImageChef.VideoNow")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DiscImageChef.VideoNow")]
[assembly: AssemblyCopyright("Copyright © 2019 Natalia Portillo")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("FAA37B4C-8EF8-434B-9342-6185DB0D419C")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Uso: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>El archivo especificado no existe.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>No se pudo abrir el archivo especificado.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>El archivo es demasiado grande, no se puede continuar.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Archivo: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Buscando el primer fotograma....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>¡No se pudo encontrar ningún fotograma!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Se encontró el primer fotograma en {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>El primer fotograma está al comienzo de un sector</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>El primer fotograma no está al comienzo de un sector</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extrayendo sonido {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Buscando más fotogramas {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>El fotograma {0} y el siguiente no están alineados...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Fotograma {1} encontrado en {0}, separado por {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>El fotograma {0} está al comienzo de un sector</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>El fotograma {0} no está al comienzo de un sector</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Encontrados {0} fotogramas</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extrayendo video {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Usage: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Le fichier spécifié n'existe pas.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Impossible d'ouvrir le fichier spécifié.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Le fichier est trop grand, ne peut pas continuer.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Fichier: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Cherchant le premier cadre....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Aucun cadre trouvé!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Premier cadre trouvé à {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Premier cadre est à la limite du secteur</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Premier cadre n'est pas à la limite du secteur</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraire l'audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Vous cherchez plus de cadres {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Cadre {0} et le suivant ne sont pas alignés...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Cadre {1} trouvé à {0}, {2} bytes apart</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Cadre {0} est à la limite du secteur</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Cadre {0} n'est pas à la limite du secteur</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} cadres trouvés</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraire la vidéo {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Utilizzo: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Il file specificato non esiste.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Impossible aprire il file specificato.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>File troppo grande, impossibile continuare.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>File: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Ricerca primo fotogramma....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Nessun fotogramma trovato!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primo fotogramma trovato a {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primo fotogramma al confine del settore</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primo fotogramma non al confine del settore</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Estrazione audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Buscando más fotogramas {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Fotogramma {0} e il successivo non allineati...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Fotogramma {1} trovato a {0}, dopo {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Fotogramma {0} al confine del settore</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Fotogramma {0} non al confine del settore</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Trovati {0} fotogrammi</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Estrazione video {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Usage: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Opgegeven bestand kan niet worden gevonden.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Kon opgegeven bestand niet openen.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Bestand is te groot, afgebroken.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Bestand: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Eerste frame aan het zoeken....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Geen frame gevonden!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Eerste frame gevonden op {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Eerste frame is op een sector-grens</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Eerste frame is niet op een sector-grens</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Uitlezen van audio-data {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Zoekend naar (nog meer) frames {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Frame {0} en het volgende frame zijn niet aan elkaar gebonden...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Frame {1} gevonden op {0}, {2} bytes van elkaar verwijderd</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Frame {0} is op een sector-grens</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Frame {0} is niet op een sector-grens</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} Frames gevonden</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Uitlezen van video-data {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Utilização: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>O ficheiro especificado não existe.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Não conseguiu abrir o ficheiro especificado.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Ficheiro é demasiado grande, não continuando.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Ficheiro: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Procurando primeiro frame....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Não conseguiu encontrar nenhum frame!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primeiro frame encontrado em {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame está numa fronteira de setor</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame não está numa fronteira de setor</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraindo aúdio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Procurando mais frames {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Frame {0} e o seguinte não estão alinhados...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Frame {0} não está numa fronteira de setor</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Encontrados {0} fotogramas</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraindo vídeo {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Utilização: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>O ficheiro especificado não existe.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Não conseguiu abrir o ficheiro especificado.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Ficheiro é demasiado grande, não continuando.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Ficheiro: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Procurando primeiro frame....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Não conseguiu encontrar nenhum frame!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primeiro frame encontrado em {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame está numa fronteira de setor</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primeiro frame não está numa fronteira de setor</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraindo aúdio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Procurando mais frames {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Frame {0} e o seguinte não estão alinhados...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Frame {1} encontrado em {0}, distância de {2} bytes</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Frame {0} não está numa fronteira de setor</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Encontrados {0} fotogramas</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraindo vídeo {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Folosire: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Fișierul specificat nu există.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Fișierul specificat nu poate fi deschis.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Fișierul este prea mare, imposibil de continuat.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Fișier: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Caut primul cadru....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Nu am putut găsi nici un cadru!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Primul cardu a fost găsit la {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Primul cadru este la limita sectorului</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Primul cadru nu este la limita sectorului</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extrag audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Caut mai multe cardre {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Cadrul {0} și următorul nu sunt aliniate...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Cadrul {1} găsit la {0}, {2} bytes distanta</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Cadrul {0} este la limita sectorului</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Cadrul nu este la limita secorului</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} cadre găsite</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extrag video {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Использование: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Указанный файл не существует.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Невозможно открыть указанный файл.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Файл слишком большой, операция прекращена.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Файл: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Поиск первого фрейма....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Невозможно найти ни один фрейм!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Первый фрейм найден по смещению {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Первый фрейм на границе сектора</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Первый фрейм не на границе сектора</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Извлечение аудио {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Продолжение поиска фреймов {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Фрейм {0} и следующий за ним не выровнены...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Фрейм {1} найден по смещению {0}, на расстоянии {2} байт</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Фрейм {0} на границе сектора</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Фрейм {0} не на границе сектора</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>Найдено {0} фреймов</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Извлечение видео {0} </value>
</data>
</root>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Usage" xml:space="preserve">
<value>Användning: DiscImageChef.VideoNow dump.raw</value>
</data>
<data name="FileDoesNotExist" xml:space="preserve">
<value>Angivna filen finns inte.</value>
</data>
<data name="FileCannotBeOpened" xml:space="preserve">
<value>Kunde inte öppna den angivna filen.</value>
</data>
<data name="FileIsTooBig" xml:space="preserve">
<value>Filen är för stor, avbryter.</value>
</data>
<data name="FileName" xml:space="preserve">
<value>Fil: {0}</value>
</data>
<data name="SearchingFirstFrame" xml:space="preserve">
<value>Söker efter första bilden....</value>
</data>
<data name="NoFrameFound" xml:space="preserve">
<value>Kunde inte hitta några bilder!</value>
</data>
<data name="FirstFrameFoundAt" xml:space="preserve">
<value>Första bilden hittad på {0}</value>
</data>
<data name="FirstFrameIsAtSectorBoundary" xml:space="preserve">
<value>Första bilden funnen vid en sektorgräns</value>
</data>
<data name="FirstFrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Första bilden finns ej vid en sektorgräns</value>
</data>
<data name="ExtractingAudio" xml:space="preserve">
<value>Extraherar audio {0} </value>
</data>
<data name="LookingForMoreFrames" xml:space="preserve">
<value>Letar efter fler bilder {0}</value>
</data>
<data name="FrameAndNextAreNotAligned" xml:space="preserve">
<value>Bild {0} och efterföljade bild är inte inriktad...</value>
</data>
<data name="FrameFoundAtPosition" xml:space="preserve">
<value>Bild {1} funnen på {0}, {2} bytes från varandra</value>
</data>
<data name="FrameIsAtSectorBoundary" xml:space="preserve">
<value>Bild {0} funnen vid en sektorgräns</value>
</data>
<data name="FrameIsNotAtSectorBoundary" xml:space="preserve">
<value>Bild {0} finns ej vid en sektorgräns</value>
</data>
<data name="FramesFound" xml:space="preserve">
<value>{0} bilder funna</value>
</data>
<data name="ExtractingVideo" xml:space="preserve">
<value>Extraherar video {0} </value>
</data>
</root>

View File

@@ -1,9 +1,7 @@
DiscImageChef v4.5.99.1693
Aaru.VideoNow
Disc Image Chef (because "swiss-army-knife" is used too much)
Copyright © 2011-2024 Natalia Portillo <claunia@claunia.com>
Copyright © 2011-2019 Natalia Portillo <claunia@claunia.com>
Aaru.VideoNow is an analyzing and conversion tool for Tiger and Hasbro VideoNow and VideoNow Color formats.
DiscImageChef.VideoNow is an analyzing and conversion tool for Tiger and Hasbro VideoNow and VideoNow Color formats.
Part of [DiscImageChef](https://github.com/discimagechef/DiscImageChef)
Part of [Aaru Data Preservation Suite](https://github.com/aaru-dps/Aaru)

View File

@@ -1 +1 @@
{"projectId":"1066f256-a685-427c-b58f-bb2ee4296c37","projectName":"DiscImageChef.VideoNow"}
{"projectId":"1066f256-a685-427c-b58f-bb2ee4296c37","projectName":"Aaru.VideoNow"}