标题：DGIndex
DGIndex是什么
DGIndex是DGMPGDec工具包的一个组件，它主要用来创建MPEG视频流的索引文件，这个文件包含了每一帧的位置和一些其他附加信息。这个索引文件，或者叫做工程文件，可以用AVISynth通过加载DGDecode滤镜来将其载入以提供帧精确服务。DGIndex可以解码大部分的MPEG1/2流，包括基本流、节目流、VOB、VCD、SVCD、PVA和传输流。并且包含了视频分离（m1v/m2v），音频分离（ac3，dts，aac，mpa，lpcm），最优化的iDCT，亮度滤镜，裁剪滤镜等附加功能。
DGIndex基于Chia-chen Kuo的DVD2AVI 1.77.3并进行了改进。
改进之后被命名为DGIndex以避免名称上的冲突，并且能显示出功能上的区别以及确实的表示它属于neuron2的DGMPCDec组件包。Neuron2会通过后面的开发人员名单来展示DGIndex的起源。
文件菜单
打开 [Open]
使用本选项可以打开一个或多个源文件。如果你要打开多个的文件，则它们将会按照文件列表内显示的顺序连接起来。多路处理或帧服务将会生成一个包含源文件的单独输出流。当你要打开多个文件的时候，所有的文件必须是同样的类型。比如，你不能同时打开MPEG1和MPEG2文件，不能同时打开节目流和传送流等等。
点击文件/打开之后可以做以下两件事：
如果还没有打开任何文件将会看到打开对话框。你可以通过按住SHIFT或CTRL键来选择多个文件。单击打开返回文件列表对话框。
如果有一个或多个文件已经被打开，则会出现文件列表对话框。
你还可以通过拖拽文件到DGIndex的窗口上来打开它。这将会打开文件列表对话框列出拖拽中所包含的文件。
当使用文件列表对话框打开了新文件之后，会对这些文件进行排序（使用一个智能的排序算法）并列出。少见的情况下它给出排列顺序并不是你所需要的，不过这可以通过列表编辑按钮来进行修正。以下是在列表管理中可以用到的按钮：
添加 [Add] - 打开文件选择对话框
提高 [Up] - 将选定文件的位置向上提高一级
降低 [Down] - 将选定文件的位置向下降低一级
删除 [Del] - 将选定文件从列表中删除
全部删除 [Del All] - 删除列表中的所有文件
当你对列表中的排序满意之后，点击"OK"按钮，DGIndex则会把列表中的文件按照顺序连接起来并载入。
有时由于剪切或编辑，视频流开始的几帧或许无法正确解码（因为他们的参考帧丢失了）。如果你的文件列表中的第一个文件出现了这样的情况，那么需要用第一个可以正确解码的帧的拷贝来替换这几个坏帧。
关闭 [Close]
这个选项用来关闭所有已经打开的文件。
载入工程 [Load Project]
使用这个选项载入已经存在的DGIndex（d2v）工程文件。
当一个工程文件载入后，DGIndex将会按照正确的顺序打开工程中的文件并按照工程文件还原以下设置：
IDCT算法
场操作
YUV -> RGB 范围
亮度滤镜
剪切
时间轴选取点
例如音频等一些没有在上面列出的选项将不会被还原。它们将会保持在载入工程文件之前的状态。
保存工程 [Save Project]
这个选项用来创建一个DGIndex工程文件（d2v file），这个工程文件可以通过DGDecode（或者DGVfapi）来给视频提供帧服务。
DGIndex所创建的这个工程文件包含源文件的路径、视频设定以及MPEG索引信息。如果想了解更多关于d2v文件结构的信息，请参考附录A。
当保存工程文件时，它会遵循时间轴上的选取点，意思就是，需要被提供帧服务的视频以及分离出来的音频将仅仅包含时间轴上选取点范围内的输入数据。
生成工程文件大概需要几分钟，这取决于工程文件的体积以及你计算机的性能。
记住一旦工程文件创建完成，不要去更改源文件的路径和名字。如果你必须要对源文件改名或者移动它，那么你需要重新生成你的工程文件，或者编辑d2v文件开头部分关于路径的内容。
保存工程并分离视频 [Save Project and Demux Video]
这个选项和上面的“Save Project”一样，能够创建一个d2v文件，并且同时还能把视频分离出来成为一个独立的基本流文件（m1v或m2v文件）。某些程序（比如 DGPulldown 和 DVD authoring 等等）有时会用到这种基本流文件。此功能对于有经验的用户来说会是一个十分方便的工具。基本流并非必须使用帧服务来加载（DGDecode或DGvfapi）。
基本流文件会创建在与d2v文件相同的目录，并且文件名会用特定的方式和d2v文件名相连接，对于MPEG1使用“.demuxed.m1v”，对于MPEG2使用“.demuxed.m2v”。举例来说，如果工程文件的名字是“movie.d2v”并且它是MPEG2视频，则基本流的文件名会是“movie.demuxed.m2v”。
注意分离操作只会生成一个基本流文件，即便工程文件中包含了多个源文件。
分离音频流 [Demux Audio-Only Stream ]
有些源只包含音频，所以没有为它创建工程文件的必要。当然这些音频可以被分离出来，DGIndex也有这个功能。它经常被用在一些包含视频的流上（虽然用它代替Save Project没什么意义），此时会忽略选取范围分离整个流，并且不会汇报音频的延迟值。
请注意你无法使用此选项把音频解码为WAV，必须使用Save Project。
分离出来的音频文件会创建在与源文件相同的目录，文件名会基于被打开的第一个源文件名。
注意分离操作只会生成一个文件，即便工程文件中包含了多个源文件。
保存位图 [Save BMP]
这个选项用来把显示在DGIndex窗口中的当前帧保存为Windows BMP文件。当使用此选项之后，会打开一个文件对话框来指定保存位置和文件名。
预览、播放、停止、暂停/恢复 [Preview, Play, Stop, Pause/Resume ]
这些选项用来控制视频的播放，括号内是键盘快捷键。
预览（F5）- 在时间轴上的选取范围内从头到尾播放。
播放（F6）- 从时间轴上的当前位置开始播放。
停止（ESC）- 停止正在播放的视频。
暂停/恢复（空格）- 暂停/恢复正在播放中的视频。
播放和预览功能仅针对视频，没有音频。
通过选项/播放速度菜单可以控制视频的播放速度。
播放命令并不解码当前帧之前的参考帧，所以如果你在时间轴上进行了跳转操作之后，也许你会看到前几帧出现色块。注意这只是DGIndex的显示问题，它不会出现在帧服务或分离出来的视频文件上。
播放、预览将会自动弹出信息面板。
退出 [Exit]
使用此选项来关闭所有已打开的文件并结束DGIndex。
流菜单
检测PIDs: PAT/PMT [Detect PIDs: PAT/PMT]
DGIndex可以打开传输流，传输流可以包含多个节目，每个节目都有各自的音频流和视频流。流菜单允许用户列出并且选择希望解码的节目。如果打开的并非传输流则流菜单自动禁用。传输流会定期的发送一个叫做PAT/PMT的数据表，这个表用来指定节目的标签（PIDs）以便把视频流和音频流关联起来。通过设置你需要的视频、音频的PIDs就可以选定你需要的节目。
使用“Detect PIDs: PAT/PMT”选项来列出节目以及和它相关联的流，然后选择希望被解码的流。DGIndex会解析第一个输入文件的PAT/PMT表，如果找到了，则会把节目和它的PIDs显示在一个列表框内。如果找不到PAT/PMT表，则会发送一个错误消息，在这种情况下列表框会关闭并且会用“Detect PIDs: RAW”选项来代替。
用鼠标左键点击视频流，它会高亮显示，然后点击“Set Video”按钮，即可完成对视频流的选定。
用鼠标左键点击音频流，它会高亮显示，然后点击“Set Audio”按钮，即可完成对音频流的选定。
用鼠标左键点击PCR流，它会高亮显示，然后点击“Set PCR”按钮，即可完成对PCR流的选定。
当你完成了PIDs选择之后，点击“Done”按钮关闭列表框之后，视频就会显示在DGIndex的窗口中了。
注意除非你使用了记录时间戳功能，否则PCR PID不会使用。
PIDs会被保存在DGIndex.ini文件内因此会对DGIndex工程起作用。
注意把视频流当作音频流选择，或者反过来，这么做会产生一个未定义的操作，并且或许会导致DGIndex崩溃。因此，两者的PIDs都会用到0x02这个预设值。然而因为DGIndex.ini文件保留了前一个工程的PIDs，所以你或许会碰到崩溃这个情况。如果出现了奇怪的反应或崩溃，则需要在打开你的文件之前，用“Set PIDs”选项手动把音频和视频的PIDs设置为0x02，然后在正常的检测并设置你的PIDs。
检测PIDs: PSIP [Detect PIDs: PSIP]
这个选项和“Detect PIDs: PAT/PMT”很相似，但它读取的是PSIP表而非PAT/PMT表。PSIP表存在于地上波播放的节目流中（存疑）。将来的版本会增强对PSIP的支持。
检测PIDs: RAW [Detect PIDs: Raw]
在少见的情况下传输流会缺失PAT/PMT表，这种情况下，音频视频流的PIDs可以用“Detect PIDs: Raw”选项来显示和选择。音频原始格式的PID检测无法显示哪个音频和哪个视频是在一起的，所以在得到正确的匹配前，一些试验和错误是必要的（通常遇到的音频/视频PIDs匹配关联是11/14、21/24和31/34）。因此，你应该优先使用“Detect PIDs: PAT/PMT”。
“Detect PIDs: Raw”列表框内的操作和上述“"Detect PIDs: PAT/PMT”相同。
设置PIDs [Set PIDs]
使用此选项可以手动指定PIDs的16禁止标号或修改以选择的PIDs。如果你用这个对话框指定了你的PIDs，DGIndex将会不检测PIDs而只使用指定的PIDs去选择视频和音频流。
注意把视频流当作音频流选择，或者反过来，这么做会产生一个未定义的操作，并且或许会导致DGIndex崩溃。如果出现了奇怪的反应或崩溃，则需要在打开你的文件之前，用“Set PIDs”选项手动把音频和视频的PIDs设置为0x02，然后在正常的检测并设置你的PIDs。
视频菜单
iDCT算法 [iDCT Algorithm]
指定DGIndex和DGDecode使用哪个iDCT算法
32-bit MMX
32-bit SSE MMX
32-bit SSE2 MMX
64-bit Floating Point
IEEE-1180 Reference
Skal SSE MMX
Simple MMX
DGIndex会自动检测处理器所不支持的算法，因此你也许无法看到上述所有选项。
使用何种iDCT算法根本上取决于你拥有什么CPU，其次则是你对iDCT精度的要求。所有的可选项均遵循IEEE-1180。想得到更多关于iDCTs的信息请查阅DGDecode手册。
质量：IEEE-1180 Reference > 64-bit Floating Point > 其它iDCT
速度：SSE2MMX是最快的，IEEE-1180 Reference是最慢的
注意选择的iDCT算法会存放在D2V文件内，DGDecode可以设置为使用这些设定（默认）或通过“idct”参数替换。
这些设置也被保存在DGIndex.ini文件内，所以也会影响到DGIndex工程。如果你编辑了DGIndex.ini文件或D2V文件而且指定了一个你的CPU所不支持的算法，则DGIndex和DGDecode会自动降级到下一个你CPU支持的可用设定。
场操作 [Field Operation ]
MPEG2视频提供了一个RFF旗标，在播放时允许任意帧的一个场自动重复（“pulled down”）。这些重复的场不占用MPEG2流的空间，而是在解码视频流的过程中通过复制得来的。这个机能通常用于把胶片速率（Film rate，即23.976fps）的影片放在NTSC速率（NTSC rate，即29.970fps）的设备上播放，这种处理叫3:2折叠（3:2 Pulldown）。然而事实上，折叠模式（pattern）会有各种各样，比如把PAL（25fps）转换为NTSC。你可以在这个网页了解到关于telecining和折叠的信息。
理解原理，理解原理，并为此选项的设置找到合适的参数而做些练习，是很必要的。在这里我们只能说明操作方法并给出一些大致的指导,在现在已有的文章中有更多进一步的说明。
Field Operation选项允许用户指定如何处理pulldown（RFF）旗标。
遵循折叠旗标 [Honor Pulldown Flags] - 遵循折叠旗标进而重复这些场，这意味着帧服务视频将按照其在终端设备上显示的样子出现（译注：Final Display Device，最终显示设备，这里作者应该是指电视或其他显示设备，而不是电脑）。所以如果你有一个3:2折叠过的视频，你将会得到一个按照标准的3个无交错帧（Progressived）跟着2个交错帧（Interlaced）循环出现的模式。如果你有PAL或MPEG1视频，你将会得到一个无重复场的图像（因为PAL和MPEG1不存在RFF旗标），帧率则与源的显示帧率相同。
忽略折叠旗标 [Ignore Pulldown Flags] - 折叠旗标会被忽略，这样你可以得到没有重复场源MPEG图像。然而，因为重复场本来应该显示（而没有被显示），所以最终帧率可能会和源帧率有所不同，这种情况甚至会贯穿视频始终，这得归咎于折叠模式的不规范。因为这种不规范，使用这个选项之后会造成视频某些部分的音视频不同步，而且通常情况下这种不同步会严重到令人无法接受。因此这个选项主要为高级用户提供，他们通常使用这个选项来判断片源的特征。虽然这个选项忽略了旗标，但是旗标仍旧记录在D2V文件内，尽管DGDecode也会忽略掉它。
强制胶片帧率 [Force Film] - 这个选项是为胶片速率（23.976 fps）的内容经过折叠处理显示为NTSC帧率（29.970 fps）而准备的。它会把视频恢复到23.976的胶片帧率并且保持音视频全程同步。它会忽略折叠旗标并通过插入/删除一些帧的做法来维持恒定帧率并同步输出流。不要在非3:2折叠素材上使用此选项，也千万不要把这个选项用在PAL或MPEG1上，也不要在含有帧重复的流上使用。
Field Operations是使用DGIndex过程中最需要理解的重要的选项。大多数人需要首先使用Honor Pulldown Flags进行预览。如果来源不是PAL或MPEG1，并且信息（Information）窗口的Video Type一栏显示Film,或Film 99%，那么这个来源便可以作为3:2 Pulldown型来处理，生成D2V工程文件的时候，就可以选择Force Film。
如果百分比低于99%或者Video Type里显示的是一个Video百分比，那么创建D2V文件的时候应该保持Honor Pulldown Flags。如果得到的结果有交错（因为源可能是交错的、3:2/交错混合的、场混合等等），那么你应该在你的Avisynth脚本里应用一些反交错或者IVTC滤镜。
如果film百分比很低，不过它仍旧是个film类型，那么你可以尝试用Force Film并看看结果如何。或许你会发现偶尔有几个交错帧，那么你可以用FieldDeinterlace（full=false）来进行后处理，如果结果让你满意就好。如果不满意，你还可以用一些其他的高级滤镜来对付这些奇奇怪怪的视频，当然这时你要保持Honor Pulldown Flags。
当你需要通过预览操作来评估Film百分比的时候，重点在于应该观看视频本身，并且尽量观看的长一些，因为片头或者片尾有时会和正片用了不同的制作方式。
可以肯定的是，如果你知道源很大程度上不会是一个3:2折叠的NTSC视频，那么就应该选择Honor Pulldown Flags并根据需要进行后处理。记住如果没旗标，自然就没得遵循，此时这个选项仅仅是传送源图像。
只有高级用户想查看MPEG流中，视频的精确编码结果，才会需要Ignore Pulldown Flags。
Honor Pulldown Flags原来叫做None，Ignore Pulldown Flags原来叫做Raw Encoded Frames。
YUV->RGB
当你用DGVfapi做帧服务的时候，视频总是会被转换为RGB，这个选项就是指定如何转换为RGB用的。
PC scale - 映射输出的RGB到全范围：YUV [16, 235(Y)/240(UV)] -> RGB [0, 255]
TV scale - 映射输出的RGB到裁剪范围：YUV [16, 235(Y)/240(UV)] -> RGB [16, 235]
这个选项会影响RGB的转换，这种影响你只会在两个地方看到：1）DGIndex的显示窗口中 2）DGVfapi视频帧服务。一般来说，除非你有切实的理由，否则你都应该选择PC scale。
以下是两个经典的使用TV scale的情况：
1、使用DGVfapi做帧服务并传输给TMPGEnc，并且TMPGEnc中Output YUV Data As Basic YCbCr Not CCIR601选项被选中（默认不选中）。
2、使用DGVfapi做帧服务并传输给CCE，CCE中选择了Luminance Level 0 To 255。
高清显示 [HD Display]
这个选项允许你选择如何显示大分辨率（HD）视频。当视频宽度超过800像素或高度超过600像素时，这个选项将会控制显示方式；否则这个选项会被忽略。显示方式有：
Full Size - 以完整尺寸显示（会受到桌面尺寸制约）。
Shrunk by Half - 尺寸会被缩小一半以保证全部可见。
Top Left - 显示视频的左上部分。
Top Right - 显示视频的右上部分。
Bottom Left - 显示视频的左下部分。
Bottom Right - 显示视频的右下部分。
这个选项在检查交错高清视频的时候非常有用，如果画面被缩小的话会看不到交错。如果要检查交错，你可以选择显示四角之一并且逐帧观察。
这个选项会保存在INI文件里并且被DGIndex自动调用。
亮度滤镜 [Luminance Filter]
这个选项用来进行亮度调整。
左上角的选择框用来启用或者禁用这个滤镜。