// include the LEAD Multimedia TOOLKIT header
#include "ltmm.h"
void SetDVDSettings()
{
// Create the converter object
IltmmConvert* pConvert;
IUnknown* punk;
IltmmDVDSource* pDVDSource;
HRESULT hr = CoCreateInstance(CLSID_ltmmConvert, NULL, CLSCTX_INPROC_SERVER, IID_IltmmConvert, (void**) &pConvert);
if(FAILED(hr))
{
AfxMessageBox(_T("Can't instantiate convert library"));
return;
}
// Force the DVD source to be used
pConvert->put_UseDVDSource(VARIANT_TRUE);
// Set the source DVD image
BSTR bstr = ::SysAllocString(MAKE_MEDIA_PATH("video_ts.ifo"));
pConvert->put_SourceFile(bstr);
SysFreeString(bstr);
bstr = ::SysAllocString(MAKE_MEDIA_PATH("DVDImage.avi"));
pConvert->put_TargetFile(bstr);
SysFreeString(bstr);
// Get the DVD source interface
pConvert->GetSubObject(ltmmConvert_Object_SourceFilter, &punk);
if(punk)
{
punk->QueryInterface(IID_IltmmDVDSource, (void**)&pDVDSource);
if(pDVDSource)
{
IltmmDVDTitle *pTitle;
long lCount;
long lVal;
VARIANT_BOOL vbVal;
double dVal;
BSTR strPlayList;
// Select the main title for the disk
pDVDSource->get_Selected(&lVal);
if (lVal != ltmmDVDSource_Main_Selected)
pDVDSource->put_Selected(ltmmDVDSource_Main_Selected);
// Get the disc duration
pDVDSource->get_TotalDuration(&dVal);
// Do something with the value
// Get the selected title duration
pDVDSource->get_SelectedDuration(&dVal);
// Do something with the value
// Get the play list settings
pDVDSource->get_PlayList(&strPlayList);
// You can save this to a file and restore the settings later
// Restore the playlist settings
pDVDSource->put_PlayList(strPlayList);
// Free the string
SysFreeString(strPlayList);
// Get the title count in the disc
pDVDSource->get_TitleCount(&lCount);
for (int i = 0; i < lCount; i++)
{
// Get the title interface
pDVDSource->GetTitle(i, &pTitle);
if (pTitle)
{
// Get the X aspect
pTitle->get_AspectX(&lVal);
// Do something with the value
// Get the Y aspect
pTitle->get_AspectY(&lVal);
// Do something with the value
// Determine whether the title is in film mode or camera mode
pTitle->get_IsFilmMode(&vbVal);
// Do something with the value
// Determine whether there is user data in line 21, field 1
pTitle->get_Line21Field1InGOP(&vbVal);
// Do something with the value
// Determine whether there is user data in line 21, field 2
pTitle->get_Line21Field2InGOP(&vbVal);
// Do something with the value
// Get the compression
pTitle->get_Compression(&lVal);
// Do something with the value
// Get the X source resolution
pTitle->get_SourceResolutionX(&lVal);
// Do something with the value
// Get the Y source resolution
pTitle->get_SourceResolutionY(&lVal);
// Do something with the value
// Get the Frame Height
pTitle->get_FrameHeight(&lVal);
// Do something with the value
// Get the Frame Rate
pTitle->get_FrameRate(&lVal);
// Do something with the value
// Determine whether the source is letter boxed
pTitle->get_IsSourceLetterboxed(&vbVal);
// Do something with the value
// Determine whether the picture can be shown as letterbox
pTitle->get_LetterboxPermitted(&vbVal);
// Do something with the value
// Determine whether the picture can be shown as pan-scan
pTitle->get_PanscanPermitted(&vbVal);
// Do something with the value
// Get the title duration
pTitle->get_TotalDuration(&dVal);
// Do something with the value
// Select all title chapters
pTitle->get_Selected(&lVal);
if (lVal != ltmmDVDSource_Selected)
pTitle->put_Selected(ltmmDVDSource_Selected);
// Get the selected chapter's duration
pTitle->get_SelectedDuration(&dVal);
// Do something with the value
// Get the audio stream count for the title
pTitle->get_AudioStreamCount(&lVal);
if (lVal > 0)
{
// Select the first audio stream
pTitle->get_SelectedAudioStream(&lVal);
if (lVal == -1)
pTitle->put_SelectedAudioStream(0);
// Get the first audio stream
IltmmDVDAudioStream* pAudioStream;
pTitle->GetAudioStream(0, &pAudioStream);
if (pAudioStream)
{
// Select the audio stream
pAudioStream->get_Selected(&vbVal);
if (vbVal == VARIANT_FALSE)
pAudioStream->put_Selected(VARIANT_TRUE);
// Get the application mode
pAudioStream->get_AppMode(&lVal);
// Do something with the value
// Get the application mode data
pAudioStream->get_AppModeData(&lVal);
// Do something with the value
// Get the audio format
pAudioStream->get_AudioFormat(&lVal);
// Do something with the value
// Get the number of channels
pAudioStream->get_Channels(&lVal);
// Do something with the value
// Get the frequency
pAudioStream->get_Frequency(&lVal);
// Do something with the value
// Get the language
pAudioStream->get_Language(&lVal);
// Do something with the value
// Get the language extension
pAudioStream->get_LanguageExtension(&lVal);
// Do something with the value
// Get the quantization
pAudioStream->get_Quantization(&lVal);
// Do something with the value
// Free the pointer
pAudioStream->Release();
}
}
// Get the subpicture stream count
pTitle->get_SubpictureStreamCount(&lVal);
if (lVal > 0)
{
// Select the first subpicture stream
pTitle->get_SelectedSubpictureStream(&lVal);
if (lVal == -1)
pTitle->put_SelectedSubpictureStream(0);
// Get the first subpicture stream
IltmmDVDSubpictureStream* pSubpictureStream;
pTitle->GetSubpictureStream(0, &pSubpictureStream);
if (pSubpictureStream)
{
// Select the subpicture stream
pSubpictureStream->get_Selected(&vbVal);
if (vbVal == VARIANT_FALSE)
pSubpictureStream->put_Selected(VARIANT_TRUE);
// Get the coding mode
pSubpictureStream->get_CodingMode(&lVal);
// Do something with the value
// Get the langauge
pSubpictureStream->get_Language(&lVal);
// Do something with the value
// Get the language extension
pSubpictureStream->get_LanguageExtension(&lVal);
// Do something with the value
// Get the type
pSubpictureStream->get_Type(&lVal);
// Do something with the value
// Free the pointer
pSubpictureStream->Release();
}
}
// Get the chapter count
pTitle->get_ChapterCount(&lVal);
if (lVal > 0)
{
// Get the first chapter
IltmmDVDChapter* pChapter;
pTitle->GetChapter(0, &pChapter);
// Get the chapter duration
pChapter->get_Duration(&dVal);
// Determine whether the chapter is selected
pChapter->get_Selected(&vbVal);
if (vbVal == VARIANT_FALSE)
pChapter->put_Selected(VARIANT_TRUE);
// Free the pointer
pChapter->Release();
}
pTitle->Release();
}
}
pDVDSource->Release();
}
punk->Release();
}
pConvert->Release();
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document