DVD Source for C
void SetDVDSettings()
L_MULTIMEDIATEX_API void SetDVDSettingsExample (void) { // 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)) { return; } // Force the DVD source to be used IltmmConvert_put_UseDVDSource(pConvert, VARIANT_TRUE); // Set the source DVD image IltmmConvert_put_SourceFile(pConvert, L"C:\\DVDImage\\VIDEO_TS\\VIDEO_TS.IFO"); IltmmConvert_put_TargetFile(pConvert, L"C:\\DVDImage.avi"); // Get the DVD source interface IltmmConvert_GetSubObject(pConvert, ltmmConvert_Object_SourceFilter, &punk); if (punk) { IUnknown_QueryInterface(punk, &IID_IltmmDVDSource, (void**)&pDVDSource); if (pDVDSource) { IltmmDVDTitle *pTitle; long lCount; long lVal; VARIANT_BOOL vbVal; double dVal; BSTR strPlayList; int i; // Select the mian title in the dics IltmmDVDSource_get_Selected (pDVDSource, &lVal); if (lVal != ltmmDVDSource_Main_Selected) IltmmDVDSource_put_Selected(pDVDSource, ltmmDVDSource_Main_Selected); // Get the disc duration IltmmDVDSource_get_TotalDuration (pDVDSource, &dVal); // Do something with the value // Get the selected title duration IltmmDVDSource_get_SelectedDuration (pDVDSource, &dVal); // Do something with the value // Get the play list settings IltmmDVDSource_get_PlayList(pDVDSource, &strPlayList); // You can save this to a file and restore the settings later // Restore the playlist settings IltmmDVDSource_put_PlayList(pDVDSource, strPlayList); // Free the string SysFreeString(strPlayList); // Get the title count in the disc IltmmDVDSource_get_TitleCount (pDVDSource, &lCount); for (i = 0; i < lCount; i++) { // Get the title interface IltmmDVDSource_GetTitle(pDVDSource, i, &pTitle); if (pTitle) { // Get the X aspect IltmmDVDTitle_get_AspectX (pTitle, &lVal); // Do something with the value // Get the Y aspect IltmmDVDTitle_get_AspectY (pTitle, &lVal); // Do something with the value // Get if the title is a film mode or camera mode IltmmDVDTitle_get_IsFilmMode (pTitle, &vbVal); // Do something with the value // Get if there is user data in line 21, field 1 IltmmDVDTitle_get_Line21Field1InGOP (pTitle, &vbVal); // Do something with the value // Get if there is user data in line 21, field 2 IltmmDVDTitle_get_Line21Field2InGOP (pTitle, &vbVal); // Do something with the value // Get the compression IltmmDVDTitle_get_Compression (pTitle, &lVal); // Do something with the value // Get the X source resolution IltmmDVDTitle_get_SourceResolutionX (pTitle, &lVal); // Do something with the value // Get the Y source resolution IltmmDVDTitle_get_SourceResolutionY (pTitle, &lVal); // Do something with the value // Get the Frame Height IltmmDVDTitle_get_FrameHeight (pTitle, &lVal); // Do something with the value // Get the Frame Rate IltmmDVDTitle_get_FrameRate (pTitle, &lVal); // Do something with the value // Get if the source is letter boxed IltmmDVDTitle_get_IsSourceLetterboxed (pTitle, &vbVal); // Do something with the value // Get if the picture can be shown as letterbox IltmmDVDTitle_get_LetterboxPermitted (pTitle, &vbVal); // Do something with the value // Get if the picture can be shown as pan-scan IltmmDVDTitle_get_PanscanPermitted (pTitle, &vbVal); // Do something with the value // Get the title duration IltmmDVDTitle_get_TotalDuration (pTitle, &dVal); // Do something with the value // Select all title chapters IltmmDVDTitle_get_Selected (pTitle, &lVal); if (lVal != ltmmDVDSource_Selected) IltmmDVDTitle_put_Selected (pTitle, ltmmDVDSource_Selected); // Get the selected chapter duration IltmmDVDTitle_get_SelectedDuration (pTitle, &dVal); // Do something with the value // Get the audio stream count in the title IltmmDVDTitle_get_AudioStreamCount (pTitle, &lVal); if (lVal > 0) { IltmmDVDAudioStream* pAudioStream; // Select the first audio stream IltmmDVDTitle_get_SelectedAudioStream (pTitle, &lVal); if (lVal == -1) IltmmDVDTitle_put_SelectedAudioStream (pTitle, 0); // Get the first audio stream IltmmDVDTitle_GetAudioStream (pTitle, 0, &pAudioStream); if (pAudioStream) { // Select the audio stream IltmmDVDAudioStream_get_Selected (pAudioStream, &vbVal); if (vbVal == VARIANT_FALSE) IltmmDVDAudioStream_put_Selected (pAudioStream, VARIANT_TRUE); // Get the application mode IltmmDVDAudioStream_get_AppMode (pAudioStream, &lVal); // Do something with the value // Get the application mode data IltmmDVDAudioStream_get_AppModeData (pAudioStream, &lVal); // Do something with the value // Get the auido format IltmmDVDAudioStream_get_AudioFormat (pAudioStream, &lVal); // Do something with the value // Get the number of channels IltmmDVDAudioStream_get_Channels (pAudioStream, &lVal); // Do something with the value // Get the frequency IltmmDVDAudioStream_get_Frequency (pAudioStream, &lVal); // Do something with the value // Get the language IltmmDVDAudioStream_get_Language (pAudioStream, &lVal); // Do something with the value // Get the language extension IltmmDVDAudioStream_get_LanguageExtension (pAudioStream, &lVal); // Do something with the value // Get the quantization IltmmDVDAudioStream_get_Quantization (pAudioStream, &lVal); // Do something with the value // Free the pointer IltmmDVDAudioStream_Release(pAudioStream); } } // Get the subpicture stream count IltmmDVDTitle_get_SubpictureStreamCount (pTitle, &lVal); if (lVal > 0) { IltmmDVDSubpictureStream* pSubpictureStream; // Select the first subpicture stream IltmmDVDTitle_get_SelectedSubpictureStream (pTitle, &lVal); if (lVal == -1) IltmmDVDTitle_put_SelectedSubpictureStream (pTitle, 0); // Get the first subpicture stream IltmmDVDTitle_GetSubpictureStream (pTitle, 0, &pSubpictureStream); if (pSubpictureStream) { // Select the subpicture stream IltmmDVDSubpictureStream_get_Selected (pSubpictureStream, &vbVal); if (vbVal == VARIANT_FALSE) IltmmDVDSubpictureStream_put_Selected (pSubpictureStream, VARIANT_TRUE); // Get the coding mode IltmmDVDSubpictureStream_get_CodingMode (pSubpictureStream, &lVal); // Do something with the value // Get the langauge IltmmDVDSubpictureStream_get_Language (pSubpictureStream, &lVal); // Do something with the value // Get the language extension IltmmDVDSubpictureStream_get_LanguageExtension (pSubpictureStream, &lVal); // Do something with the value // Get the type IltmmDVDSubpictureStream_get_Type (pSubpictureStream, &lVal); // Do something with the value // Free the pointer IltmmDVDSubpictureStream_Release(pSubpictureStream); } } // Get the chapter count IltmmDVDTitle_get_ChapterCount (pTitle, &lVal); if (lVal > 0) { // Get the first chapter IltmmDVDChapter* pChapter; IltmmDVDTitle_GetChapter (pTitle, 0, &pChapter); // Get the chapter duration IltmmDVDChapter_get_Duration(pChapter, &dVal); // Get if the chapter is selected IltmmDVDChapter_get_Selected (pChapter, &vbVal); if (vbVal == VARIANT_FALSE) IltmmDVDChapter_put_Selected (pChapter, VARIANT_TRUE); // Free the pointer IltmmDVDChapter_Release(pChapter); } IltmmDVDTitle_Release(pTitle); } } IltmmDVDSource_Release(pDVDSource); } IUnknown_Release(punk); } }