⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qsdlwidget.cpp

📁 强大的QT,GTK的学习Demo.包含DSP驱动以及所使用库文件资源。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
 */
char* QSDLWidget::RetFilePosition()
{
    return RetMDDEMO(SelectPort)->filename;
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
int QSDLWidget::RetSoundPort()
{
    return playSoundPort;
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
int QSDLWidget::PlaySound()
{
    int ret = -1;

    if(playSoundPort == SelectPort)
        return 0;

    if(playSoundPort == -1)
    {
        ret = HW_PlaySound(RetMDDEMO(SelectPort)->ChannelHandle);
        if(ret < 0)
        {
            fprintf(stderr, "sorry, SetAudioPreview failed\n");
            return -1;
        }

        ret = HW_SetVolume(RetMDDEMO(SelectPort)->ChannelHandle, 0xffff);
        if(ret < 0)
        {
            fprintf(stderr, "sorry, SetAudioPreview failed\n");
            return -1;
        }

        ret = HW_SetAudioPreview(RetMDDEMO(SelectPort)->ChannelHandle, 1);
        if(ret < 0)
        {
            fprintf(stderr, "sorry, SetAudioPreview failed\n");
            return -1;
        }

        playSoundPort = SelectPort;
        return 0;
    }

    ret = HW_SetAudioPreview(RetMDDEMO(playSoundPort)->ChannelHandle, 0);
    if(ret < 0)
    {
        fprintf(stderr, "sorry, SetAudioPreview failed\n");
        return -1;
    }

    HW_StopSound(RetMDDEMO(playSoundPort)->ChannelHandle);
    if(ret < 0)
    {
        fprintf(stderr, "sorry, SetAudioPreview failed\n");
        return -1;
    }

    HW_PlaySound(RetMDDEMO(SelectPort)->ChannelHandle);
    if(ret < 0)
    {
        fprintf(stderr, "sorry, SetAudioPreview failed\n");
        return -1;
    }

    HW_SetAudioPreview(RetMDDEMO(SelectPort)->ChannelHandle, 1);
    if(ret < 0)
    {
        fprintf(stderr, "sorry, SetAudioPreview failed\n");
        return -1;
    }

    playSoundPort = SelectPort;
    return 0;
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
int QSDLWidget::StopSound()
{
    int ret = -1;

    ret = HW_SetAudioPreview(RetMDDEMO(playSoundPort)->ChannelHandle, 0);
    if(ret < 0)
    {
        fprintf(stderr, "sorry, SetAudioPreview failed\n");
        return -1;
    }

    ret = HW_StopSound(RetMDDEMO(playSoundPort)->ChannelHandle);
    if(ret < 0)
    {
        fprintf(stderr, "sorry, SetAudioPreview failed\n");
        return -1;
    }

    playSoundPort = -1;

    return 0;
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
void QSDLWidget::StringtoChar(const QString& aFile, char* cstr)
{
    int     m = aFile.length();
    QChar   da;

    int     k;

    for(k = 0; k < m; k++)
    {
        da = aFile.at(k);
        cstr[k] = da.latin1();
    }

    cstr[m] = '\0';
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
void QSDLWidget::IPChange(const QString& ipaddress)
{
    int k;
    if(sameSetting)
    {
        for(k = 0; k < totalport; k++)
        {
            StringtoChar(ipaddress, RetMDDEMO(k)->serverip);
            OutputDebugString(RetMDDEMO(k)->serverip);
            OutputDebugString("\n");
        }
    }
    else
    {
        StringtoChar(ipaddress, RetMDDEMO(SelectPort)->serverip);
        OutputDebugString(RetMDDEMO(SelectPort)->serverip);
        OutputDebugString("\n");
    }
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
void QSDLWidget::ServerChanSet(int chan)
{
    int k;

    if(sameSetting)
    {
        for(k = 0; k < totalport; k++)
        {
            RetMDDEMO(k)->serverchan = chan;
            OutputDebugString("Channel %2d Change Serverchan to %d\n", k, RetMDDEMO(k)->serverchan);
        }
    }
    else
    {
        RetMDDEMO(SelectPort)->serverchan = chan;
        OutputDebugString("Channel %2d Change Serverchan to %d\n", SelectPort,
                          RetMDDEMO(SelectPort)->serverchan);
    }
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
void QSDLWidget::FileOpen(const QString& aFile)
{
    OutputDebugString("here is in function QSDLWidget::FileOpen\n");

    int k;

    FileName = aFile;

    if(sameSetting)
    {
        for(k = 0; k < totalport; k++)
        {
            StringtoChar(aFile, RetMDDEMO(k)->filename);
            OutputDebugString("*******Open File %s\n", RetMDDEMO(k)->filename);

            if(RetMDDEMO(k)->bDisplayOpen)
                mddemoclass[k]->StopPlay();
            timer[k]->start(200);
            time[k]->restart();
            mddemoclass[k]->StartFilePlay();
        }

#ifdef circle
        sameSetting = 0;    /* 临时加上 */
#endif
    }
    else
    {
        OutputDebugString("here sameSetting = 0 \n");
        StringtoChar(aFile, RetMDDEMO(SelectPort)->filename);
        OutputDebugString(RetMDDEMO(SelectPort)->filename);
        OutputDebugString("\n");

        if(RetMDDEMO(SelectPort)->bDisplayOpen)
            mddemoclass[SelectPort]->StopPlay();
        OutputDebugString("before  StartFilePlay\n");
        timer[SelectPort]->start(200);
        time[SelectPort]->restart();
        mddemoclass[SelectPort]->StartFilePlay();
    }
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
void QSDLWidget::FileStreamClose(int style)
{
    int k;

    if(sameSetting)
    {
        for(k = 0; k < totalport; k++)
        {
            if(RetMDDEMO(k)->bDisplayOpen && (RetMDDEMO(k)->playType == style))
            {
                mddemoclass[k]->StopPlay();
                timer[k]->stop();

                emit    RateChange(k, 0);
                emit    FrameChange(k, 0);
            }
        }
    }
    else
    {
        if(RetMDDEMO(SelectPort)->bDisplayOpen && (RetMDDEMO(SelectPort)->playType == style))
        {
            mddemoclass[SelectPort]->StopPlay();
            timer[SelectPort]->stop();

            emit    RateChange(SelectPort, 0);
            emit    FrameChange(SelectPort, 0);
        }
    }

    for(k = 0; k < totalport; k++)
    {
        if(RetMDDEMO(k)->playType == DECODESTREAM)
            break;
    }

    if(RunStream == 1 && (k == 9))
    {
        RunStream = 0;
        MP4_ClientCleanup();
    }

    OutputDebugString("<demo_info> file close\n");
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
void QSDLWidget::ReadDataCallBack(int StockHandle, char* pPacketBuffer, int nPacketSize)
{
    int temp, port;

    for(temp = 0; temp < totalport; temp++)
    {
        if(!RetMDDEMO(temp))
            return;

        if(RetMDDEMO(temp)->clienthandle == StockHandle)
            break;
    }

    port = temp;

    RetMDDEMO(port)->datasum += nPacketSize;
    if(RetMDDEMO(port)->playType)
    {
        if(HW_InputData(RetMDDEMO(port)->ChannelHandle, pPacketBuffer, nPacketSize) < 0)
        {
            OutputErrorString("<demo_info> input data error:0x%x, port%d, Channel%d\n",
                              GetLastErrorNum(), port, RetMDDEMO(port)->ChannelHandle);
        }
    }
}

/*
 =======================================================================================================================
 *
 =======================================================================================================================
 */
int QSDLWidget::OpenStream()
{
    int             temp;
    int             retval;
    CLIENTSHOWRECT  clientrect;
    memset(&clientrect, 0x0, sizeof(CLIENTSHOWRECT));

    CLIENT_VIDEOINFO    Clientinfo;
    char                streamheader[128];
    int                 header_len;

    /* init the net client connect */
    MP4_ClientSetNetPort(5050, 6050);
    MP4_SetDecoder(0);                  /* disable the client sdk to decode stream */

    retval = MP4_ClientStartup(clientrect, NULL);
    OutputDebugString("ClientStartup successful, retval = %d, uWidth = %d, uHeight = %d\n", retval,
                      clientrect.uWidth, clientrect.uHeight);

    Clientinfo.m_bRight = 0;
    Clientinfo.m_sUserName = "username1234567890";
    Clientinfo.m_sUserPassword = "userpassword1234567890";
    Clientinfo.m_bUserCheck = 0;
    Clientinfo.subshow_x = 0;
    Clientinfo.subshow_y = 0;
    Clientinfo.subshow_uWidth = 0;
    Clientinfo.subshow_uHeight = 0;
    Clientinfo.m_bSendMode = PTOPTCPMODE;

    if(sameSetting)
    {
        for(temp = 0; temp < totalport; temp++)
        {
            if(RetMDDEMO(temp)->bDisplayOpen)
                mddemoclass[temp]->StopPlay();

            Clientinfo.m_bRemoteChannel = RetMDDEMO(temp)->serverchan;

            /*
             * strcpy(Clientinfo.m_sIPAddress, RetMDDEMO(i)->serverip);
             */
            Clientinfo.m_sIPAddress = RetMDDEMO(temp)->serverip;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -