mirror of
				https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
				synced 2023-10-19 15:58:31 +00:00 
			
		
		
		
	extend detection of isHD and isUHD in case of stored EPG info (event) is missing any information regarding video (e.g. if EPG is missing on a channel)
This commit is contained in:
		@@ -207,8 +207,8 @@
 | 
				
			|||||||
    tokenContainer->AddStringToken((int)token_st::shorttext, info->ShortText());                                    \
 | 
					    tokenContainer->AddStringToken((int)token_st::shorttext, info->ShortText());                                    \
 | 
				
			||||||
    tokenContainer->AddStringToken((int)token_st::description, info->Description());                                \
 | 
					    tokenContainer->AddStringToken((int)token_st::description, info->Description());                                \
 | 
				
			||||||
    tokenContainer->AddIntToken((int)token_it::framesPerSecond, info->FramesPerSecond());                           \
 | 
					    tokenContainer->AddIntToken((int)token_it::framesPerSecond, info->FramesPerSecond());                           \
 | 
				
			||||||
    tokenContainer->AddIntToken((int)token_it::isHD, RecordingIsHD(event)); /* detect HD from 'info' */             \
 | 
					    tokenContainer->AddIntToken((int)token_it::isHD, RecordingIsHD(event, channelID)); /* detect HD from 'info' */     \
 | 
				
			||||||
    tokenContainer->AddIntToken((int)token_it::isUHD, RecordingIsUHD(event)); /* detect UHD from 'info' */          \
 | 
					    tokenContainer->AddIntToken((int)token_it::isUHD, RecordingIsUHD(event, channelID)); /* detect UHD from 'info' */  \
 | 
				
			||||||
    tokenContainer->AddIntToken((int)token_it::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); /* detect Radio from 'info' and FPS */ \
 | 
					    tokenContainer->AddIntToken((int)token_it::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); /* detect Radio from 'info' and FPS */ \
 | 
				
			||||||
    tokenContainer->AddIntToken((int)token_it::isRecording, usedRecording->IsInUse() & ruTimer);                    \
 | 
					    tokenContainer->AddIntToken((int)token_it::isRecording, usedRecording->IsInUse() & ruTimer);                    \
 | 
				
			||||||
    tokenContainer->AddIntToken((int)token_it::isInUse, usedRecording->IsInUse());                                  \
 | 
					    tokenContainer->AddIntToken((int)token_it::isInUse, usedRecording->IsInUse());                                  \
 | 
				
			||||||
@@ -2018,6 +2018,7 @@ bool cLeMenuRecordings::Parse(bool forced) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const cEvent *event = NULL;
 | 
					    const cEvent *event = NULL;
 | 
				
			||||||
    const cRecordingInfo *info = usedRecording->Info();
 | 
					    const cRecordingInfo *info = usedRecording->Info();
 | 
				
			||||||
 | 
					    tChannelID channelID = tChannelID::InvalidID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!info) {
 | 
					    if (!info) {
 | 
				
			||||||
        delete[] recName;
 | 
					        delete[] recName;
 | 
				
			||||||
@@ -2035,6 +2036,7 @@ bool cLeMenuRecordings::Parse(bool forced) {
 | 
				
			|||||||
        if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) {
 | 
					        if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) {
 | 
				
			||||||
            ADD_TOKEN_LMR_ST(recchannelname, info->ChannelName());
 | 
					            ADD_TOKEN_LMR_ST(recchannelname, info->ChannelName());
 | 
				
			||||||
            ADD_TOKEN_LMR_ST(recchannelid, info->ChannelID().ToString());
 | 
					            ADD_TOKEN_LMR_ST(recchannelid, info->ChannelID().ToString());
 | 
				
			||||||
 | 
					            channelID = info->ChannelID();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
					#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
				
			||||||
            LOCK_CHANNELS_READ;
 | 
					            LOCK_CHANNELS_READ;
 | 
				
			||||||
@@ -2045,6 +2047,7 @@ bool cLeMenuRecordings::Parse(bool forced) {
 | 
				
			|||||||
            if (channel) {
 | 
					            if (channel) {
 | 
				
			||||||
                ADD_TOKEN_LMR_ST(recchannelname, channel->Name());
 | 
					                ADD_TOKEN_LMR_ST(recchannelname, channel->Name());
 | 
				
			||||||
                ADD_TOKEN_LMR_ST(recchannelid, *channel->GetChannelID().ToString());
 | 
					                ADD_TOKEN_LMR_ST(recchannelid, *channel->GetChannelID().ToString());
 | 
				
			||||||
 | 
					                channelID = channel->GetChannelID();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -2246,6 +2249,7 @@ bool cCeMenuRecordings::Parse(bool forced) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const cEvent *event = NULL;
 | 
					    const cEvent *event = NULL;
 | 
				
			||||||
    const cRecordingInfo *info = usedRecording->Info();
 | 
					    const cRecordingInfo *info = usedRecording->Info();
 | 
				
			||||||
 | 
					    tChannelID channelID = tChannelID::InvalidID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!info) return true;
 | 
					    if (!info) return true;
 | 
				
			||||||
    event = info->GetEvent();
 | 
					    event = info->GetEvent();
 | 
				
			||||||
@@ -2255,6 +2259,7 @@ bool cCeMenuRecordings::Parse(bool forced) {
 | 
				
			|||||||
        if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) {
 | 
					        if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) {
 | 
				
			||||||
            ADD_TOKEN_CMR_ST(recchannelname, info->ChannelName());
 | 
					            ADD_TOKEN_CMR_ST(recchannelname, info->ChannelName());
 | 
				
			||||||
            ADD_TOKEN_CMR_ST(recchannelid, info->ChannelID().ToString());
 | 
					            ADD_TOKEN_CMR_ST(recchannelid, info->ChannelID().ToString());
 | 
				
			||||||
 | 
					            channelID = info->ChannelID();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
					#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
				
			||||||
            LOCK_CHANNELS_READ;
 | 
					            LOCK_CHANNELS_READ;
 | 
				
			||||||
@@ -2265,6 +2270,7 @@ bool cCeMenuRecordings::Parse(bool forced) {
 | 
				
			|||||||
            if (channel) {
 | 
					            if (channel) {
 | 
				
			||||||
                ADD_TOKEN_CMR_ST(recchannelname, channel->Name());
 | 
					                ADD_TOKEN_CMR_ST(recchannelname, channel->Name());
 | 
				
			||||||
                ADD_TOKEN_CMR_ST(recchannelid, *channel->GetChannelID().ToString());
 | 
					                ADD_TOKEN_CMR_ST(recchannelid, *channel->GetChannelID().ToString());
 | 
				
			||||||
 | 
					                channelID = channel->GetChannelID();
 | 
				
			||||||
	        }
 | 
						        }
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -705,8 +705,8 @@ bool cViewDetailRec::Parse(bool forced) {
 | 
				
			|||||||
            tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationevent, duration);
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationevent, duration);
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationeventhours, duration / 60);
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedRecIT::durationeventhours, duration / 60);
 | 
				
			||||||
            tokenContainer->AddStringToken((int)eDmDetailedRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
 | 
					            tokenContainer->AddStringToken((int)eDmDetailedRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isHD, RecordingIsHD(event)); // detect HD from 'info'
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isHD, RecordingIsHD(event, tChannelID::InvalidID)); // detect HD from 'info', no fallback to channelID
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info'
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isUHD, RecordingIsUHD(event, tChannelID::InvalidID)); // detect UHD from 'info', no fallback to channelID
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRecording, recording->IsInUse() & ruTimer);
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRecording, recording->IsInUse() & ruTimer);
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isInUse, recording->IsInUse());
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedRecIT::isInUse, recording->IsInUse());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -587,18 +587,19 @@ void cViewElement::StopAnimation(void) {
 | 
				
			|||||||
/******************************************************************
 | 
					/******************************************************************
 | 
				
			||||||
 * helper function (did not find any other common place)
 | 
					 * helper function (did not find any other common place)
 | 
				
			||||||
 ******************************************************************/
 | 
					 ******************************************************************/
 | 
				
			||||||
bool RecordingIsHD(const cEvent* event) {
 | 
					bool RecordingIsHD(const cEvent* event, const tChannelID channelID) {
 | 
				
			||||||
    // detect HD from 'info'
 | 
					    // detect HD from 'info'
 | 
				
			||||||
    bool isHD = false;
 | 
					    bool isHD = false;
 | 
				
			||||||
    cComponents *Components = (cComponents *)event->Components();
 | 
					    int type = -1;
 | 
				
			||||||
    if (Components) {
 | 
					
 | 
				
			||||||
 | 
					    if (event) {
 | 
				
			||||||
 | 
					      cComponents *Components = (cComponents *)event->Components();
 | 
				
			||||||
 | 
					      if (Components) {
 | 
				
			||||||
	// detect HD (see also ETSI EN 300 468)
 | 
						// detect HD (see also ETSI EN 300 468)
 | 
				
			||||||
	// Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio, 7 = DTS/DTS HD audio, 8 = SRM/CPCM data, 9 = HEVC Video, AC4 Audio
 | 
						// Stream: 1 = MPEG2-Video, 2 = MPEG2 Audio, 3 = Untertitel, 4 = AC3-Audio, 5 = H.264-Video, 6 = HEAAC-Audio, 7 = DTS/DTS HD audio, 8 = SRM/CPCM data, 9 = HEVC Video, AC4 Audio
 | 
				
			||||||
	// Stream == Video(1|5): 01 = 05 = 4:3, 02 = 03 = 06 = 07 = 16:9, 04 = 08 = >16:9, 09 = 0D = HD 4:3, 0A = 0B = 0E = 0F = HD 16:9, 0C = 10 = HD >16:9
 | 
						// Stream == Video(1|5): 01 = 05 = 4:3, 02 = 03 = 06 = 07 = 16:9, 04 = 08 = >16:9, 09 = 0D = HD 4:3, 0A = 0B = 0E = 0F = HD 16:9, 0C = 10 = HD >16:9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tComponent *Component;
 | 
						tComponent *Component;
 | 
				
			||||||
	int type = -1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// #1: HVEC (stream content: 9)
 | 
						// #1: HVEC (stream content: 9)
 | 
				
			||||||
	Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
 | 
						Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
 | 
				
			||||||
	if (Component) {
 | 
						if (Component) {
 | 
				
			||||||
@@ -628,22 +629,45 @@ bool RecordingIsHD(const cEvent* event) {
 | 
				
			|||||||
	    case 0x10:
 | 
						    case 0x10:
 | 
				
			||||||
		isHD = true;
 | 
							isHD = true;
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((isHD == false) && (type == -1) && (!(channelID == tChannelID::InvalidID))) {
 | 
				
			||||||
 | 
						dsyslog("skindesigner: Title='%s' ShortText='%s' isHD=%d type=%d channelID=%s", event->Title(), event->ShortText(), isHD, type, *channelID.ToString());
 | 
				
			||||||
 | 
						// fallback to retrieve via channel (in case of EPG issues)
 | 
				
			||||||
 | 
					#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
				
			||||||
 | 
					        LOCK_CHANNELS_READ;
 | 
				
			||||||
 | 
					        const cChannel *channel = Channels->GetByChannelID(channelID);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        const cChannel *channel = Channels.GetByChannelID(channelID);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						if (channel) {
 | 
				
			||||||
 | 
						    dsyslog("skindesigner: Title='%s' ShortText='%s' isHD=%d type=%d Channel='%s'", event->Title(), event->ShortText(), isHD, type, channel->Name());
 | 
				
			||||||
 | 
						    switch (channel->Vtype()) {
 | 
				
			||||||
 | 
							case 0x1b: // H.264
 | 
				
			||||||
 | 
							case 0x24: // H.265
 | 
				
			||||||
 | 
							    isHD = true;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						    };
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return isHD;
 | 
					    return isHD;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool RecordingIsUHD(const cEvent* event) {
 | 
					bool RecordingIsUHD(const cEvent* event, const tChannelID channelID) {
 | 
				
			||||||
    // detect UHD from 'info'
 | 
					    // detect UHD from 'info'
 | 
				
			||||||
    bool isUHD = false;
 | 
					    bool isUHD = false;
 | 
				
			||||||
    cComponents *Components = (cComponents *)event->Components();
 | 
					    int type = -1;
 | 
				
			||||||
    if (Components) {
 | 
					
 | 
				
			||||||
 | 
					    if (event) {
 | 
				
			||||||
 | 
					      cComponents *Components = (cComponents *)event->Components();
 | 
				
			||||||
 | 
					      if (Components) {
 | 
				
			||||||
	// detect UHD (see also ETSI EN 300 468)
 | 
						// detect UHD (see also ETSI EN 300 468)
 | 
				
			||||||
	// Stream: 9 = HEVC Video, AC4 Audio
 | 
						// Stream: 9 = HEVC Video, AC4 Audio
 | 
				
			||||||
	// Stream == Video(9): 00|01|02|03 = HD, 04|05|06|07 = UHD
 | 
						// Stream == Video(9): 00|01|02|03 = HD, 04|05|06|07 = UHD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tComponent *Component;
 | 
						tComponent *Component;
 | 
				
			||||||
	int type = -1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// HVEC (stream content: 9)
 | 
						// HVEC (stream content: 9)
 | 
				
			||||||
	Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
 | 
						Component = Components->GetComponent(0, 9, 0); // recording info: "X 9 <type>"
 | 
				
			||||||
	if (Component) {
 | 
						if (Component) {
 | 
				
			||||||
@@ -657,7 +681,26 @@ bool RecordingIsUHD(const cEvent* event) {
 | 
				
			|||||||
	    case 0x07:
 | 
						    case 0x07:
 | 
				
			||||||
		isUHD = true;
 | 
							isUHD = true;
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((isUHD == false) && (type == -1) && (!(channelID == tChannelID::InvalidID))) {
 | 
				
			||||||
 | 
						// fallback to retrieve via channel (in case of EPG issues)
 | 
				
			||||||
 | 
					#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
				
			||||||
 | 
					        LOCK_CHANNELS_READ;
 | 
				
			||||||
 | 
					        const cChannel *channel = Channels->GetByChannelID(channelID);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        const cChannel *channel = Channels.GetByChannelID(channelID);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						if (channel) {
 | 
				
			||||||
 | 
						    switch (channel->Vtype()) {
 | 
				
			||||||
 | 
							case 0x24: // H.265
 | 
				
			||||||
 | 
							    isUHD = true;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						    };
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return isUHD;
 | 
					    return isUHD;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -113,8 +113,8 @@ public:
 | 
				
			|||||||
/******************************************************************
 | 
					/******************************************************************
 | 
				
			||||||
* helper function (did not find any other common place)
 | 
					* helper function (did not find any other common place)
 | 
				
			||||||
******************************************************************/
 | 
					******************************************************************/
 | 
				
			||||||
bool RecordingIsHD(const cEvent* event);
 | 
					bool RecordingIsHD(const cEvent* event, const tChannelID channelID);
 | 
				
			||||||
bool RecordingIsUHD(const cEvent* event);
 | 
					bool RecordingIsUHD(const cEvent* event, const tChannelID channelID);
 | 
				
			||||||
bool RecordingIsRadio(const cEvent* event, const double FramesPerSecond);
 | 
					bool RecordingIsRadio(const cEvent* event, const double FramesPerSecond);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif //__VIEWELEMENT_H
 | 
					#endif //__VIEWELEMENT_H
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1236,6 +1236,7 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
        tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::errors, errors);
 | 
					        tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::errors, errors);
 | 
				
			||||||
        const cEvent *event = info->GetEvent();
 | 
					        const cEvent *event = info->GetEvent();
 | 
				
			||||||
 | 
						tChannelID channelID = tChannelID::InvalidID;
 | 
				
			||||||
        if (event) {
 | 
					        if (event) {
 | 
				
			||||||
            cString recDate = event->GetDateString();
 | 
					            cString recDate = event->GetDateString();
 | 
				
			||||||
            cString recTime = event->GetTimeString();
 | 
					            cString recTime = event->GetTimeString();
 | 
				
			||||||
@@ -1260,8 +1261,6 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
 | 
				
			|||||||
            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationevent, duration);
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationevent, duration);
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationeventhours, duration / 60);
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::durationeventhours, duration / 60);
 | 
				
			||||||
            tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
 | 
					            tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::durationeventminutes, *cString::sprintf("%.2d", duration%60));
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isHD, RecordingIsHD(event)); // detect HD from 'info'
 | 
					 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info'
 | 
					 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRecording, recording->IsInUse() & ruTimer);
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRecording, recording->IsInUse() & ruTimer);
 | 
				
			||||||
            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isInUse, recording->IsInUse());
 | 
					            tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isInUse, recording->IsInUse());
 | 
				
			||||||
@@ -1271,6 +1270,7 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
 | 
				
			|||||||
	    tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, info->ChannelName());
 | 
						    tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, info->ChannelName());
 | 
				
			||||||
	    tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, info->ChannelID().ToString());
 | 
						    tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, info->ChannelID().ToString());
 | 
				
			||||||
	    tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, 0); // cannot be provided, for backward compatibility only
 | 
						    tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, 0); // cannot be provided, for backward compatibility only
 | 
				
			||||||
 | 
						    channelID = info->ChannelID();
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
					#if defined (APIVERSNUM) && (APIVERSNUM >= 20301)
 | 
				
			||||||
            LOCK_CHANNELS_READ;
 | 
					            LOCK_CHANNELS_READ;
 | 
				
			||||||
@@ -1282,8 +1282,12 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
 | 
				
			|||||||
	        tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, channel->Name());
 | 
						        tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelname, channel->Name());
 | 
				
			||||||
		tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, *channel->GetChannelID().ToString());
 | 
							tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::recchannelid, *channel->GetChannelID().ToString());
 | 
				
			||||||
		tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, channel->Number());
 | 
							tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::recchannelnumber, channel->Number());
 | 
				
			||||||
 | 
							channelID = channel->GetChannelID();
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isHD, RecordingIsHD(event, channelID)); // detect HD from 'info'
 | 
				
			||||||
 | 
					        tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isUHD, RecordingIsUHD(event, channelID)); // detect UHD from 'info'
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    string recImage = "";
 | 
					    string recImage = "";
 | 
				
			||||||
    string path = recording->FileName() ? recording->FileName() : "";
 | 
					    string path = recording->FileName() ? recording->FileName() : "";
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user