Esempio n. 1
0
LRESULT CTunerScanDlg::OnNewChannel(WPARAM wParam, LPARAM lParam)
{
    CDVBChannel Channel;
    CString strTemp;
    Channel.FromString((LPCTSTR)lParam);

    if (!m_bIgnoreEncryptedChannels || !Channel.IsEncrypted()) {
        int nItem, nChannelNumber;

        if (Channel.GetOriginNumber() != 0) { // LCN is available
            nChannelNumber = Channel.GetOriginNumber();
            // Insert new channel so that channels are sorted by their logical number
            for (nItem = 0; nItem < m_ChannelList.GetItemCount(); nItem++) {
                if ((int)m_ChannelList.GetItemData(nItem) > nChannelNumber || (int)m_ChannelList.GetItemData(nItem) == 0) {
                    break;
                }
            }
        } else {
            nChannelNumber = 0;
            nItem = m_ChannelList.GetItemCount();
        }

        strTemp.Format(_T("%d"), nChannelNumber);
        nItem = m_ChannelList.InsertItem(nItem, strTemp);

        m_ChannelList.SetItemData(nItem, Channel.GetOriginNumber());

        m_ChannelList.SetItemText(nItem, TSCC_NAME, Channel.GetName());

        strTemp.Format(_T("%d"), Channel.GetFrequency());
        m_ChannelList.SetItemText(nItem, TSCC_FREQUENCY, strTemp);

        strTemp = Channel.IsEncrypted() ? ResStr(IDS_DVB_CHANNEL_ENCRYPTED) : ResStr(IDS_DVB_CHANNEL_NOT_ENCRYPTED);
        m_ChannelList.SetItemText(nItem, TSCC_ENCRYPTED, strTemp);
        if (Channel.GetVideoType() == DVB_H264) {
            strTemp = _T(" H.264");
        } else if (Channel.GetVideoPID()) {
            strTemp = _T("MPEG-2");
        } else {
            strTemp = _T("   -  ");
        }
        m_ChannelList.SetItemText(nItem, TSCC_VIDEO_FORMAT, strTemp);
        strTemp = Channel.GetVideoFpsDesc();
        m_ChannelList.SetItemText(nItem, TSCC_VIDEO_FPS, strTemp);
        if (Channel.GetVideoWidth() || Channel.GetVideoHeight()) {
            strTemp.Format(_T("%dx%d"), Channel.GetVideoWidth(), Channel.GetVideoHeight());
        } else {
            strTemp = _T("   -   ");
        }
        m_ChannelList.SetItemText(nItem, TSCC_VIDEO_RES, strTemp);
        strTemp.Format(_T("%d/%d"), Channel.GetVideoARy(), Channel.GetVideoARx());
        m_ChannelList.SetItemText(nItem, TSCC_VIDEO_AR, strTemp);
        m_ChannelList.SetItemText(nItem, TSCC_CHANNEL, (LPCTSTR) lParam);
    }

    return TRUE;
}
Esempio n. 2
0
LRESULT CTunerScanDlg::OnNewChannel(WPARAM wParam, LPARAM lParam)
{
    CDVBChannel Channel;
    CString strTemp;
    Channel.FromString((LPCTSTR)lParam);

    if (!m_bIgnoreEncryptedChannels || !Channel.IsEncrypted()) {
        int nItem, nChannelNumber;

        if (Channel.GetOriginNumber() != 0) { // LCN is available
            nChannelNumber = Channel.GetOriginNumber();
            // Insert new channel so that channels are sorted by their logical number
            for (nItem = 0; nItem < m_ChannelList.GetItemCount(); nItem++) {
                if ((int)m_ChannelList.GetItemData(nItem) > nChannelNumber) {
                    break;
                }
            }
        } else {
            nChannelNumber = nItem = m_ChannelList.GetItemCount();
        }

        strTemp.Format(_T("%d"), nChannelNumber);
        nItem = m_ChannelList.InsertItem(nItem, strTemp);

        m_ChannelList.SetItemData(nItem, Channel.GetOriginNumber());

        m_ChannelList.SetItemText(nItem, TSCC_NAME, Channel.GetName());

        strTemp.Format(_T("%d"), Channel.GetFrequency());
        m_ChannelList.SetItemText(nItem, TSCC_FREQUENCY, strTemp);

        strTemp = Channel.IsEncrypted() ? ResStr(IDS_DVB_CHANNEL_ENCRYPTED) : ResStr(IDS_DVB_CHANNEL_NOT_ENCRYPTED);
        m_ChannelList.SetItemText(nItem, TSCC_ENCRYPTED, strTemp);

        m_ChannelList.SetItemText(nItem, TSCC_CHANNEL, (LPCTSTR) lParam);
    }

    return TRUE;
}
Esempio n. 3
0
HRESULT CMpeg2DataParser::ParseSDT(ULONG ulFreq)
{
	HRESULT					hr;
	CComPtr<ISectionList>	pSectionList;
	DWORD					dwLength;
	PSECTION				data;
	WORD					wTSID;
	WORD					wONID;
	WORD					wSectionLength;

	CheckNoLog (m_pData->GetSection (PID_SDT, SI_SDT, &m_Filter, 5000, &pSectionList));
	CheckNoLog (pSectionList->GetSectionData (0, &dwLength, &data));

	CGolombBuffer	gb ((BYTE*)data, dwLength);

	// service_description_section()
	CheckNoLog (ParseSIHeader (gb, SI_SDT, wSectionLength, wTSID));

	wONID = gb.BitRead(16);												// original_network_id
	gb.BitRead(8);														// reserved_future_use

	while (gb.GetSize() - gb.GetPos() > 4) {
		CDVBChannel			Channel;
		Channel.SetFrequency (ulFreq);
		Channel.SetTSID (wTSID);
		Channel.SetONID (wONID);
		Channel.SetSID  (gb.BitRead(16));								// service_id   uimsbf
		gb.BitRead(6);													// reserved_future_use   bslbf
		gb.BitRead(1);													// EIT_schedule_flag   bslbf
		Channel.SetNowNextFlag(!!gb.BitRead(1));						// EIT_present_following_flag   bslbf
		gb.BitRead(3);													// running_status   uimsbf
		Channel.SetEncrypted (!!gb.BitRead(1));							// free_CA_mode   bslbf

		// Descriptors:
		BeginEnumDescriptors(gb, nType, nLength) {
			switch (nType) {
				case DT_SERVICE :
					gb.BitRead(8);											// service_type
					nLength = gb.BitRead(8);								// service_provider_name_length
					gb.ReadBuffer (DescBuffer, nLength);					// service_provider_name

					nLength = gb.BitRead(8);								// service_name_length
					gb.ReadBuffer (DescBuffer, nLength);					// service_name
					DescBuffer[nLength] = 0;
					Channel.SetName (ConvertString (DescBuffer, nLength));
					TRACE ("%15S %d\n", Channel.GetName(), Channel.GetSID());
					break;
				default :
					SkipDescriptor (gb, nType, nLength);					// descriptor()
					break;
			}
		}
		EndEnumDescriptors


		if (!Channels.Lookup(Channel.GetSID())) {
			Channels [Channel.GetSID()] = Channel;
		}
	}

	return S_OK;
}