Microsoft DirectX 9.0 |
This topic applies to Windows XP Service Pack 1 only.
DVD discs, especially karaoke discs, may contain a database of text information to supplement the video or audio content. Such text on karaoke discs might include song titles, artist names, record labels, and so on. Versions of this text can be present in more than one language. These strings are optional; discs are not required to have them. If present they are organized in a way that closely mirrors the logical hierarchy of the DVD volume. Each string is preceded by a number that identifies what part of the disc structure it belongs to or gives some clue as to the content of the string. Text strings do not contain the on-screen lyrics for karaoke discs, nor do they currently contain chapter or title names or information for movie DVDs.
There are two basic types of text strings: structure identifiers and content strings. Types with a value of 0x01 through 0x20 are structure identifiers. They are empty strings; the numerical code is used to identify the logical structure to which any following content strings belong. This structure corresponds very closely to the logical structure of DVD disc contents: volume, title, chapter, and so on. The remaining types identify content strings that hold information that may be displayed to the viewer in a user interface. The exact way in which content strings are used is not closely defined, so DVD authors might use them in various ways.
DVD text strings are currently used almost exclusively on karaoke discs, and these discs mostly use the 0x01 and 0x02 structure identifiers and the 0x30 type content string. But it is reasonable to assume that as time goes by, (1) more types of DVD-Video discs will contain text strings and (2) these strings will be organized in more complex ways in order to provide fuller descriptions of disc contents.
The following code shows how to determine the number of text string language blocks on the disc, and display the languages available in a list box lboTextLanguages. For more information on LCIDs and primary language IDs, see LanguageFromLCID
Function GetTextLanguages()
Dim numLangs As Long, lPrimaryLang As Long
Dim j As Long, lLCID As Long
Dim strLanguage As String
' Get the number of text blocks.
numLangs = oVidWeboVidWebDVD.DVDTextNumberOfLanguages()
For j = 0 To numLangs - 1
'get the locale identifier for the language block
lLCID = oVidWebDVD.DVDTextLanguageLCID(j)
' Get the primary language ID from the LCID.
lPrimaryLang = lLCID And &H3FF
' Get the human-readable string from the primary language ID.
strLanguage = oVidWebDVD.LanguageFromLCID(lPrimaryLang)
' Add it to the list box.
lboTextStrings.AddItem strLanguage
Next j
End Sub
The following test code demonstrates how to enumerate the strings and examine the text string type. It enters the results into the list box lboStringTypes so you can see how the numeric string types are used to organize the content strings. A real application would probably create its own data structure to hold the strings, or else would display them in a more useful way for the viewer.
Function GetTextStrings(lLanguage)
' lLanguage is the 0-based index for the language block.
Dim numStrings As Long
Dim stringType As DVDTextStringType
Dim j As Integer
numStrings = oVidWebDVD.DVDTextNumberOfStrings(lLanguage)
For j = 0 To numStrings - 1
stringType = oVidWebDVD.DVDTextStringType(lLanguage, j)
If (stringType > &H20) Then 'There is actually some text to read here
lboTextStringTypes.AddItem stringType & ": " & oVidWebDVD.DVDTextString(lLanguage, j)
Else ' It's a node indicating what level of the volume structure.
' the following strings will apply to
lboTextStringTypes.AddItem stringType
End If
Next j
End Function
DVD Text String Types
This topic applies to Windows XP Service Pack 1 only.
The following tables list a subset of the DVD text string types. All types with a value 0x20 and below are empty strings that merely indicate the node level in the disc's content data structure. The other strings are content strings. Most title and song names are type 0x30. The types in the Title, SubTitle and Original categories help to further identify the particular genre. The exact meaning and intended use of these categories is defined in a public document that can be downloaded from the DVD Forum's Web site.
See Also
Structure Identifiers
Volume | 0x01 | Indicates that the strings that follow pertain to the DVD volume. |
Title | 0x02 | Indicates that the strings that follow pertain to a title. |
ParentalID | 0x03 | Indicates that the strings that follow pertain to a particular parental ID. |
Chapter | 0x04 | Indicates that the strings that follow pertain to a chapter. |
Cell | 0x05 | Indicates that the strings that follow pertain to a cell (typically consisting of one scene from a movie). |
Stream Identifiers
Audio | 0x10 | Indicates that the strings that follow pertain to an audio stream. |
Subpicture | 0x11 | Indicates that the strings that follow pertain to a subpicture stream. |
Angle | 0x12 | Indicates that the strings that follow pertain to an angle block. |
Audio Channel Identifiers
Channel | 0x20 | Indicates that the strings that follow pertain to one channel in an audio stream. |
General Content Strings
Name | 0x30 | The most common identifer for title names, chapter names, song names, and so on. |
Comments | 0x31 | General comments about the title, chapter, song, and so on. |
Title Content Strings
Series | 0x38 | Additional information about the title, chapter, song, and so on. |
Movie | 0x39 | Additional information about the title or chapter if this is a movie. |
Video | 0x3a | Additional information about the title or chapter if this is a video. |
Album | 0x3b | Additional information about the title or chapter if this is an album. |
Song | 0x3c | Additional information about the title or chapter if this is a song. |
Other | 0x3f | Additional information about the title or chapter if this belongs to some other genre or category. |
Secondary Title Content Strings
Series | 0x40 | Additional information about the title, chapter, song, and so on. |
Movie | 0x41 | Additional information about the title or chapter if this is a movie. |
Video | 0x42 | Additional information about the title or chapter if this is a video. |
Album | 0x43 | Additional information about the title or chapter if this is an album. |
Song | 0x44 | Additional information about the title or chapter if this is a song. |
Other | 0x45 | Additional information about the title or chapter if this belongs to some other genre or category. |
Original Content Strings
Series | 0x48 | Additional information about the title, chapter, song, and so on. |
Movie | 0x49 | Additional information about the title or chapter if this is a movie. |
Video | 0x4a | Additional information about the title or chapter if this is a video. |
Album | 0x4b | Additional information about the title or chapter if this is an album. |
Song | 0x4c | Additional information about the title or chapter if this is a song. |
Other | 0x4f | Additional information about the title or chapter if this belongs to some other genre or category. |
Other Info Content Strings
Other Scene | 0x50 | Additional information about an alternate scene in a movie title or chapter. |
Other Cut | 0x51 | Additional information about an alternate cut in a movie title or chapter. |
Other Take | 0x52 | Additional information about an alternate take in a movie title or chapter. |