Products | Support | Send comments on this topic. | Email a link to this topic. | Back to Getting Started | Help Version 18.0.10.24
LEADTOOLS Multimedia API Help

Also known as compressor, this is a module or algorithm to compress data. Playing that data back requires a decompressor, or decoder.compressor , this is a module or algorithm to compress data. Playing that data back requires a decompressor, or decoder .

Also known as an encoder, this is a module or algorithm to compress data. Playing that data back requires a decompressor, or decoder.

Also known as a decompressor, this is a module or algorithm to decompress data.

A set of files that contain all of the video and audio content for a DVD, organized with a table of contents (optional). See also: Title, Chapter, ISO Image .

An ISO image (.iso) is a disk image of a file system. It includes data files that are contained in the ISO image along with filesystem metadata. ISO images are an alternative to physical media for distribution of a "DVD" over the Internet. Most operating systems allow ISO images images to be "played" as if they were physical discs. See also: DVD Image.

The name for a group of related video files (called "Chapters") on your DVD. For example, for a DVD called "My Summer Vacation," you might have the titles "Water Skiing," "New Friends," and "Hiking." For each of those titles, you might have one or more different video files.

The name for each individual video file on a DVD. For example, under the title "Water Skiing", you might have the chapters "My first try," "My first wreck," and "My first jump."

Creating DVD Images for C

Show in webframe

The following code demonstrates how to create DVD images using LEAD Multimedia toolkit.

#define MAKE_MEDIA_PATH(pFileName) (TEXT("C:\\LEADTOOLS 18\\Media\\")TEXT(pFileName))


#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 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;
}
Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.