//--------------------------------------------------------------------------- #include #include "AppGlobalF.h" #include "FrmCameraPlayerF.h" #include "FrmCameraFullScreenF.h" #include "FrmCameraInfoF.h" #include "FrmCameraScreenF.h" #pragma hdrstop //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "dxGDIPlusClasses" #pragma link "PasLibVlcPlayerUnit" #pragma resource "*.dfm" TFrmCameraPlayer *FrmCameraPlayer = NULL; //--------------------------------------------------------------------------- __fastcall TFrmCameraPlayer::TFrmCameraPlayer(TComponent* Owner) : TForm(Owner) { IsTerm = false; FPlay = false; FAutoPlay = true; FUserStop = false; FConHandle = 0; FFullScreen = false; FParent = this->Parent; PnlCamera->Tag = (int)this; //mmLog->Lines->Clear(); } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; if (IsTerm) { return; } if (Installed) { PopupMenu = PopupMenu1; ImgNoData->Visible = false; PnlName->Caption = CTLR_NMBR + ": " + NAME; Play(); } else { PasLibVlcPlayer1->Visible = false; PopupMenu = NULL; PnlCamera->Caption = NAME; LoadEmptyImage(); } } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::LoadEmptyImage() { try { String sImageFile = g_AppCfg.sEmptyImg; if (sImageFile != "") { ImgNoData->Picture->LoadFromFile(sImageFile); ImgNoData->Align = alClient; } ImgNoData->Visible = true; } catch(Exception &e) { ImgNoData->Visible = true; } } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::FormShow(TObject *Sender) { Refresh(); this->FLastBounds = this->BoundsRect; // TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::FormClose(TObject *Sender, TCloseAction &Action) { try { Stop(); } catch(...) {} Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::FormDestroy(TObject *Sender) { try { Stop(); } catch(...) {} } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::MnuConnectClick(TObject *Sender) { FAutoPlay = true; Play(); } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::MnuDisconnectClick(TObject *Sender) { PasLibVlcPlayer1->Visible = false; PasLibVlcPlayer1->Refresh(); PnlCamera->Refresh(); FUserStop = true; FAutoPlay = false; Stop(); } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::AutoPlay() { FAutoPlay = true; TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::CameraLog(String ALogMsg) { PnlCamera->Caption = ALogMsg; PnlCamera->Refresh(); Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::Play() { if (PasLibVlcPlayer1->Visible) { PasLibVlcPlayer1->Visible = false; } Stop(); if (STRM_ADDR == "") { CameraLog("### There is no video information ###"); return; } CameraLog("--- Connecting video ---"); try { //PasLibVlcPlayer1->VLC->Path = "plugins"; PasLibVlcPlayer1->Play(STRM_ADDR); FConHandle = 1; Application->ProcessMessages(); AdjustVideoFit(); if (FConHandle > 0) { if (ImgNoData->Visible == true) { ImgNoData->Visible = false; } } Application->ProcessMessages(); } catch(Exception &e) { } FPlay = true; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::Stop() { if (!FPlay) return; FPlay = false; if (STRM_ADDR == "") { return; } CameraLog("--- Disconnect video ---"); try { if (FConHandle > 0) { PasLibVlcPlayer1->Stop(); } Application->ProcessMessages(); FConHandle = 0; } catch(Exception &e) { } CameraLog("*** Video connection terminated ***"); FConHandle = 0; FPlay = false; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::AdjustVideoFit() { try { if (FConHandle > 0) { String ratioData = IntToStr(PasLibVlcPlayer1->Width) + ":" + IntToStr(PasLibVlcPlayer1->Height); PasLibVlcPlayer1->SetVideoAspectRatio(ratioData); } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::Term() { IsTerm = true; Stop(); } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::InitCamera(bool AInstalled, String ACtlrNmbr, String AName, String AStrmAddr, String AFullStrmAddr, int AViewMode) { FAutoPlay = true; Installed = AInstalled; CTLR_NMBR = ACtlrNmbr; NAME = AName; STRM_ADDR = AStrmAddr; FULL_STRM_ADDR = AFullStrmAddr; VIEW_MODE = AViewMode; Caption = NAME; PnlName->Caption = NAME; PnlCamera->Caption = AStrmAddr; FUserStop = false; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PnlCameraDblClick(TObject *Sender) { // ¿©±â¼­ ´õºíŬ¸¯Àº ÃÖ´ëÈ­¸éÀ» È£ÃâÇÏ´Â °ÍÀÓ #if 0 FrmCameraScreen->TmrFullScreen->Enabled = false; FrmCameraScreen->FFullScreenIdx = Tag; FrmCameraScreen->TmrFullScreen->Enabled = true; #endif } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PasLibVlcPlayer1DblClick(TObject *Sender) { FrmCameraScreen->TmrFullScreen->Enabled = false; FrmCameraScreen->FFullScreenIdx = Tag; FrmCameraScreen->TmrFullScreen->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::MnuInfoClick(TObject *Sender) { FrmCameraInfo = new TFrmCameraInfo(this); FrmCameraInfo->Edit1->Text = CTLR_NMBR; FrmCameraInfo->Edit2->Text = NAME; FrmCameraInfo->Edit3->Text = STRM_ADDR; FrmCameraInfo->Edit4->Text = FULL_STRM_ADDR; FrmCameraInfo->ShowModal(); FrmCameraInfo = NULL; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PasLibVlcPlayer1MediaPlayerPlaying(TObject *Sender) { // Ç¥Ãâ½ÃÀÛ #if 0 if (FConHandle > 0) { if (PasLibVlcPlayer1->Visible == false) { PasLibVlcPlayer1->Visible = true; } if (ImgNoData->Visible == true) { ImgNoData->Visible = false; } } #endif AdjustVideoFit(); FUserStop = false; } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PasLibVlcPlayer1MediaPlayerMediaChanged(TObject *Sender, UnicodeString mrl) { // ½ºÆ®¸®¹Ö º¯°æµÊ AdjustVideoFit(); } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PasLibVlcPlayer1MediaPlayerStopped(TObject *Sender) { if (FAutoPlay && FUserStop) { if (PasLibVlcPlayer1->Visible) { PasLibVlcPlayer1->Visible = false; } CameraLog("@@@ End of video display @@@"); TmrShow->Enabled = false; TmrShow->Interval = 500; TmrShow->Enabled = true; } } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PasLibVlcPlayer1MediaPlayerEncounteredError(TObject *Sender) { if (PasLibVlcPlayer1->Visible) { PasLibVlcPlayer1->Visible = false; } CameraLog("@@@ Video display error @@@"); } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PasLibVlcPlayer1MediaPlayerOpening(TObject *Sender) { #if 0 // Ç¥Ãâ½ÃÀÛ if (FConHandle > 0) { if (PasLibVlcPlayer1->Visible == false) { PasLibVlcPlayer1->Visible = true; } if (ImgNoData->Visible == true) { ImgNoData->Visible = false; } } AdjustVideoFit(); #endif } //--------------------------------------------------------------------------- void __fastcall TFrmCameraPlayer::PasLibVlcPlayer1MediaPlayerPositionChanged(TObject *Sender, float position) { if (PasLibVlcPlayer1->Visible == false) { PasLibVlcPlayer1->Visible = true; PnlCamera->Refresh(); AdjustVideoFit(); } if (ImgNoData->Visible == true) { ImgNoData->Visible = false; } } //---------------------------------------------------------------------------