The following code demonstrates how to create DVD images using LEAD Multimedia toolkit.
#include "ltmm.h"
#include "ILTDvdWriter2.h"
#include <TChar.h>
LPOLESTR T2OLE(LPCTSTR lpt)
{
static OLECHAR lpw[512];
if(!lpt)
return NULL;
lpw[0] = L'\0';
MultiByteToWideChar(CP_ACP, 0, lpt, -1, lpw, 512);
return lpw;
}
LPTSTR OLE2T(LPCOLESTR lpw)
{
static TCHAR lpt[512];
if(!lpw)
return NULL;
lpt[0] = _T('\0');
WideCharToMultiByte(CP_ACP, 0, lpw, -1, lpt, 512, NULL, NULL);
return lpt;
}
void WaitForCompletion(IltmmConvert *pConvert)
{
long lState = ltmmConvert_State_Running;
MSG msg;
IltmmConvert_get_State(pConvert, &lState);
while( lState != ltmmConvert_State_Stopped )
{
if( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
IltmmConvert_get_State(pConvert, &lState);
}
}
void CreateDVDImageExample ( )
{
IltmmConvert *pConvert = NULL;
IUnknown *pDvdWriter = NULL;
ILTDvdWriter *pIDvdWriter = NULL;
BSTR szFileName = NULL;
IltmmCompressors *pCompressors;
long lIndex = 0;
HRESULT hr;
CoInitialize(NULL);
// create a converter object
hr = CoCreateInstance(&CLSID_ltmmConvert, NULL, CLSCTX_INPROC_SERVER, &IID_IltmmConvert, (void**) &pConvert);
// set up the converter:
IltmmConvert_put_TargetFormat(pConvert, ltmmConvert_TargetFormat_DVD);
IltmmConvert_get_VideoCompressors(pConvert, &pCompressors);
hr = IltmmCompressors_Find(pCompressors, L"@device:sw:{33D9A760-90C8-11D0-BD43-00A0C911CE86}\\LEAD MPEG2 Encoder (2.0)", &lIndex);
hr = IltmmCompressors_put_Selection(pCompressors, lIndex);
IltmmCompressors_Release(pCompressors);
IltmmConvert_get_AudioCompressors(pConvert, &pCompressors);
hr = IltmmCompressors_Find(pCompressors, L"@device:sw:{33D9A761-90C8-11D0-BD43-00A0C911CE86}\\LEAD MPEG Audio Encoder (2.0)", &lIndex);
hr = IltmmCompressors_put_Selection(pCompressors, lIndex);
IltmmCompressors_Release(pCompressors);
// 1- Create a DVD image with 1 title that contains 1 chapter:
szFileName = SysAllocString(T2OLE(MAKE_MEDIA_PATH("DaDa_CMP.avi"))); // Source video
IltmmConvert_put_SourceFile(pConvert, szFileName);
SysFreeString(szFileName);
szFileName = SysAllocString(T2OLE(MAKE_MEDIA_PATH(""))); // Destination image folder
IltmmConvert_put_TargetFile(pConvert, szFileName);
SysFreeString(szFileName);
IltmmConvert_StartConvert(pConvert);
// Wait for the conversion to finish. You can use a window to receive notifications
WaitForCompletion(pConvert);
// Done
IltmmConvert_ResetTarget(pConvert);
IltmmConvert_ResetSource(pConvert);
// 2- Create a DVD image with 1 title that contains 2 chapters:
szFileName = SysAllocString(T2OLE(MAKE_MEDIA_PATH("DaDa_CMP.avi"))); // Source video
IltmmConvert_put_SourceFile(pConvert, szFileName);
SysFreeString(szFileName);
szFileName = SysAllocString(T2OLE(MAKE_MEDIA_PATH(""))); // Destination image folder
IltmmConvert_put_TargetFile(pConvert, szFileName);
SysFreeString(szFileName);
// Retrieve the DVD Writer interface
IltmmConvert_GetSubObject(pConvert, ltmmConvert_Object_Sink, &pDvdWriter);
IUnknown_QueryInterface(pDvdWriter, &IID_ILTDvdWriter, (void**)&pIDvdWriter);
// Set the DVD temporary files folder
szFileName = SysAllocString(T2OLE(MAKE_MEDIA_PATH(""))); // Destination image folder
ILTDvdWriter_put_TempPath(pIDvdWriter, szFileName);
SysFreeString(szFileName);
// Set the TitleBreak property to FALSE.
// This will prevent the title from being written immediately after the conversion
ILTDvdWriter_put_TitleBreak(pIDvdWriter, VARIANT_FALSE);
// write the first chapter
IltmmConvert_StartConvert(pConvert);
// Wait for the conversion to finish. You can use a window to receive notifications
WaitForCompletion(pConvert);
// You can change the source file before this step.
// This demonstration code uses the same file for all chapters.
// Create chapter 2.
IltmmConvert_StartConvert(pConvert);
WaitForCompletion(pConvert);
// Close the title
ILTDvdWriter_put_TitleBreak(pIDvdWriter, VARIANT_TRUE);
// Done
IUnknown_Release(pDvdWriter);
pDvdWriter = NULL;
ILTDvdWriter_Release(pIDvdWriter);
pIDvdWriter = NULL;
IltmmConvert_ResetTarget(pConvert);
IltmmConvert_ResetSource(pConvert);
// 3- Create a DVD image with 2 titles, each containing 2 chapters:
szFileName = SysAllocString(T2OLE(MAKE_MEDIA_PATH("DaDa_CMP.avi"))); // Source video
IltmmConvert_put_SourceFile(pConvert, szFileName);
SysFreeString(szFileName);
szFileName = SysAllocString(T2OLE(MAKE_MEDIA_PATH(""))); // Destination image folder
IltmmConvert_put_TargetFile(pConvert, szFileName);
SysFreeString(szFileName);
// Retrieve the DVD Writer interface
IltmmConvert_GetSubObject(pConvert, ltmmConvert_Object_Sink, &pDvdWriter);
IUnknown_QueryInterface(pDvdWriter, &IID_ILTDvdWriter, (void**)&pIDvdWriter);
// Set the TitleBreak property to FALSE.
// This will prevent the title from being written immediately after the conversion
ILTDvdWriter_put_TitleBreak(pIDvdWriter, VARIANT_FALSE);
// Write the first chapter in the first title
IltmmConvert_StartConvert(pConvert);
// Wait for the conversion to finish. You can use a window to receive notifications
WaitForCompletion(pConvert);
// Write the second chapter in the first title
// You can change the source file before this step, this demonstration code uses the same file for all chapters.
IltmmConvert_StartConvert(pConvert);
WaitForCompletion(pConvert);
// Prepare for the second title
// Set the TitleBreak property to TRUE, so the current title can be flushed
ILTDvdWriter_put_TitleBreak(pIDvdWriter, VARIANT_TRUE);
// Set the TitleBreak property to FALSE.
// This will prevent the title from being written immediately after the conversion
ILTDvdWriter_put_TitleBreak(pIDvdWriter, VARIANT_FALSE);
// Disable Overwrite so the title will be appended to an existing dvd image
ILTDvdWriter_put_Overwrite(pIDvdWriter, VARIANT_FALSE);
// Write the first chapter in the second title
IltmmConvert_StartConvert(pConvert);
// Wait for the conversion to finish. You can use a window to receive notifications
WaitForCompletion(pConvert);
// Write the second chapter in the second title
IltmmConvert_StartConvert(pConvert);
WaitForCompletion(pConvert);
// Close the second title
ILTDvdWriter_put_TitleBreak(pIDvdWriter, VARIANT_TRUE);
// restore the overwrite property
ILTDvdWriter_put_Overwrite(pIDvdWriter, VARIANT_TRUE);
// Done
IUnknown_Release(pDvdWriter);
pDvdWriter = NULL;
ILTDvdWriter_Release(pIDvdWriter);
pIDvdWriter = NULL;
IltmmConvert_ResetTarget(pConvert);
IltmmConvert_ResetSource(pConvert);
IltmmConvert_Release(pConvert);
CoUninitialize();
}
int main()
{
CreateDVDImageExample ( ) ;
return 0;
}
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