www.pudn.com > vod2007.rar > TMPlayer.cpp


#include "tmplayer.h" 
/*-------------------------------------------------------------- 
*   FUNCTION    :   TMPOpenDriver() 
*   DESCRIPTION :   Opens IMPEG32.DLL 
*   RETURN      :   non-zero if successful, 0 if failed. 
---------------------------------------------------------------*/ 
void TMPlayer::TMPOpenDriver() 
{ 
   mciOpenParms.lpstrDeviceType = "REELMagic"; 
   mciErr = mciSendCommand(wDeviceID, MCI_OPEN, MCI_OPEN_TYPE /*| MCI_WAIT*/, 
     (DWORD) (LPMCI_OPEN_PARMS) &mciOpenParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } else 
      wDeviceID = mciOpenParms.wDeviceID; 
} 
 
/*-------------------------------------------------------------- 
*   procedure   :   TMPCloseDriver() 
*   DESCRIPTION :   Closes IMPEG32.DLL 
*   RETURN      :   NONE 
---------------------------------------------------------------*/ 
void TMPlayer::TMPCloseDriver() 
{ 
   mciGenericParms.dwCallback = 0/*DWORD(Handle)*/; 
   mciErr = mciSendCommand(wDeviceID, MCI_CLOSE, 0, 
              (DWORD) (LPMCI_GENERIC_PARMS) &mciGenericParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPOpen(AnsiString OpenFileName) 
{ 
    mciLoadParms.dwCallback = 0; 
    mciLoadParms.lpfilename = OpenFileName.c_str(); 
    mciErr = mciSendCommand(wDeviceID, MCI_LOAD, MCI_LOAD_FILE, 
                    (DWORD) (LPMCI_LOAD_PARMS) &mciLoadParms); 
    if(mciErr != 0) 
    { 
       mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
       MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
    } 
} 
void TMPlayer::TMPClose() 
{ 
   mciGenericParms.dwCallback = 0; 
   mciErr = mciSendCommand(wDeviceID, MCI_FREEZE, 0, 
              (DWORD) (LPMCI_GENERIC_PARMS) &mciGenericParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPPlay() 
{ 
   mciPlayParms.dwCallback = DWORD(Handle); 
   mciErr = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY/* | MCI_WAIT*/, 
               (DWORD) (LPMCI_PLAY_PARMS ) &mciPlayParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPStop() 
{ 
   mciGenericParms.dwCallback = DWORD(Handle); 
   mciErr = mciSendCommand(wDeviceID, MCI_STOP, MCI_NOTIFY, 
              (DWORD) (LPMCI_GENERIC_PARMS) &mciGenericParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPause() 
{ 
   mciGenericParms.dwCallback = 0; 
   mciErr = mciSendCommand(wDeviceID, MCI_PAUSE, 0, 
              (DWORD) (LPMCI_GENERIC_PARMS) &mciGenericParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetAudioLeft(int value) 
{ 
   mciErr = 0; 
   if(value == 0) 
   { 
      mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, 
                      MCI_DGV_SETAUDIO_LEFT | MCI_SET_OFF, 
                      (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   }else if(value == 1){ 
      mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, 
                      MCI_DGV_SETAUDIO_LEFT | MCI_SET_ON, 
                      (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   } 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetAudioRight(int value) 
{ 
  mciErr = 0; 
  if( value == 0 ) 
   { 
      mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, 
                      MCI_DGV_SETAUDIO_RIGHT | MCI_SET_OFF, 
                      (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   }else if( value == 1 ){ 
      mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, 
                      MCI_DGV_SETAUDIO_RIGHT | MCI_SET_ON, 
                      (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   } 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetAudioSourceLeft() 
{ 
   mciErr = 0; 
   mciDgvSetAudioParms.dwItem = MCI_DGV_SETAUDIO_SOURCE; 
   mciDgvSetAudioParms.dwValue = MCI_DGV_SETAUDIO_SOURCE_LEFT; 
   mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, 
                   MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, 
                   (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetAudioSourceRight() 
{ 
   mciErr = 0; 
   mciDgvSetAudioParms.dwItem = MCI_DGV_SETAUDIO_SOURCE; 
   mciDgvSetAudioParms.dwValue = MCI_DGV_SETAUDIO_SOURCE_RIGHT; 
   mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, 
                   MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, 
                   (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetAudioOn() 
{ 
   MCI_DGV_SETAUDIO_PARMS s; 
   mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, MCI_SET_ON, 
                   (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &s); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetAudioOff() 
{ 
   MCI_DGV_SETAUDIO_PARMS s; 
   mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, MCI_SET_OFF, 
                   (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &s); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetStream(int value) 
{ 
   mciDgvSetAudioParms.dwValue = value; 
   mciDgvSetAudioParms.dwItem = MCI_DGV_SETAUDIO_STREAM; 
 
   mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, 
                   (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetAudioVolume(int value) 
{ 
   mciDgvSetAudioParms.dwValue = value; 
   mciDgvSetAudioParms.dwItem = MCI_DGV_SETAUDIO_VOLUME; 
 
   mciErr = mciSendCommand(wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM, 
                   (DWORD) (LPMCI_DGV_SETAUDIO_PARMS) &mciDgvSetAudioParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
DWORD TMPlayer::TMPGetTimeFormat() 
{ 
   mciDgvStatusParms.dwItem = MCI_STATUS_TIME_FORMAT; 
 
   mciErr = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM, 
                   (DWORD) (LPMCI_DGV_STATUS_PARMS) &mciDgvStatusParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
      return 0; 
   } 
   return mciDgvStatusParms.dwReturn; 
} 
void TMPlayer::TMPSetTimeFormat(AnsiString strTimeFormat) 
{ 
   if(strTimeFormat == "MCI_FORMAT_BYTES") 
      mciSetParms.dwTimeFormat = MCI_FORMAT_BYTES; 
   else if(strTimeFormat == "MCI_FORMAT_FRAMES") 
      mciSetParms.dwTimeFormat = MCI_FORMAT_FRAMES; 
   if(strTimeFormat == "MCI_FORMAT_HMS") 
      mciSetParms.dwTimeFormat = MCI_FORMAT_HMS; 
   else if(strTimeFormat == "MCI_FORMAT_MILLISECONDS") 
      mciSetParms.dwTimeFormat = MCI_FORMAT_MILLISECONDS; 
   if(strTimeFormat == "MCI_FORMAT_MSF ") 
      mciSetParms.dwTimeFormat = MCI_FORMAT_MSF ; 
   else if(strTimeFormat == "MCI_FORMAT_SAMPLES") 
      mciSetParms.dwTimeFormat = MCI_FORMAT_SAMPLES; 
 
   mciErr = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, 
                   (DWORD) (LPMCI_SET_PARMS) &mciSetParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
void TMPlayer::TMPSetVideoOut(int value) 
{ //没有效果不能输出到vga, 
   
  mciDgvRmParms.dwCommand = 0x9; 
  mciDgvRmParms.dwFlag = 0x41b; 
  mciDgvRmParms.dwValue = value; 
 
  mciErr = mciSendCommand(wDeviceID, 0x900, 0x700002, 
                  (DWORD) (LPMCI_DGV_RM_PARMS) &mciDgvRmParms); 
  if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
DWORD TMPlayer::TMPGetStatusMode() 
{ 
   mciDgvStatusParms.dwItem = MCI_STATUS_MODE; 
 
   mciErr = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM, 
                   (DWORD) (LPMCI_DGV_STATUS_PARMS) &mciDgvStatusParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
      return 0; 
   } 
   return mciDgvStatusParms.dwReturn; 
} 
void TMPlayer::TMPStep() 
{ 
   DWORD Length = TMPLength(); 
   mciDgvStepParms.dwCallback = DWORD(Handle); 
   mciDgvStepParms.dwFrames = Length / 50; 
   mciErr = mciSendCommand(wDeviceID, MCI_STEP, MCI_DGV_STEP_FRAMES, 
              (DWORD) (LPMCI_DGV_STEP_PARMS) &mciDgvStepParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
} 
DWORD TMPlayer::TMPLength() 
{ 
   mciDgvStatusParms.dwItem = MCI_STATUS_LENGTH; 
   mciErr = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM, 
                   (DWORD) (LPMCI_DGV_STATUS_PARMS) &mciDgvStatusParms); 
 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
      return 0; 
   } 
   return mciDgvStatusParms.dwReturn; 
} 
DWORD TMPlayer::TMPPositon() 
{ 
   mciDgvStatusParms.dwItem = MCI_STATUS_POSITION; 
   mciErr = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM, 
                   (DWORD) (LPMCI_DGV_STATUS_PARMS) &mciDgvStatusParms); 
 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
      return 0; 
   } 
   return mciDgvStatusParms.dwReturn; 
} 
void TMPlayer::TMPSetDisplay(HWND handle) 
{ 
   mciOvlyWindowParms.hWnd = handle; 
   mciSendCommand(wDeviceID, MCI_WINDOW, MCI_WAIT | MCI_OVLY_WINDOW_HWND, 
          (DWORD) (LPMCI_OVLY_WINDOW_PARMS)&mciOvlyWindowParms); 
   if(mciErr != 0) 
   { 
      mciGetErrorString(mciErr, Ret, sizeof(Ret)); 
      MessageBox(0, Ret, AnsiString(mciErr).c_str(), MB_OK); 
   } 
}