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

DVD Source for C++

Show in webframe

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


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