// 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
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.