The application/oipfRecordingScheduler embedded object

Support in HbbTV

Available since: HbbTV 1.0 (ETSI TS 102 796 V1.1.1, OIPF DAE V1.1)

See clause A.2.24.

Support for repeated recordings with the recordAt() method is not included and hence the repeatDays argument may be ignored.

Comment

Security: Trusted

Mandatory only if PVR feature is supported.

In clause 7.10.1.1 of the OIPF DAE specification [1]:

Firstly the description of the getScheduledRecordings() method is modified as shown:

ScheduledRecordingCollection getScheduledRecordings()
DescriptionReturns a subset of all the those recordings that are scheduled but which have not yet started and which were scheduled by an application from the same origin as the caller. The subset SHALL include only scheduled recordings that were scheduled using a service from the same FQDN as the domain of the service that calls the method.

Secondly the description of the remove() method is modified as shown:

void remove( ScheduledRecording recording )
DescriptionRemove a recording.

For non-privileged applications, recordings SHALL only be removed when they are

scheduled but not yet started and the recording was scheduled by the current service.

Recordings SHALL only be removed when they are scheduled but not yet started. Additionally for terminals with the attribute manageRecordings set in the <recording> element of their capabilities set to “samedomain”, recordings shall only be removed when the recording was scheduled by applications from the same origin as the caller.

As with the record() method, only the programmeID property of the scheduled recording SHALL be used to identify the scheduled recording to remove where this property is available. The other data contained in the scheduled recording SHALL NOT be used when removing a recording scheduled using methods other than recordAt(). For recordings scheduled using recordAt(), the data used to identify the recording to remove is implementation dependent.

If the programmeIDType property has the value ID_TVA_GROUP_CRID then the OITF

SHALL cancel the recording of the specified group.

If an A/V Control object is presenting the indicated recording then the state of the A/V

Control object SHALL be automatically changed to 6 (the error state).

ArgumentsrecordingThe recording to be removed

Thirdly the getInProgressRecordings() method is added as shown:

ScheduledRecordingCollection getInProgressRecordings()
DescriptionReturns those recordings that are currently in progress (i.e. those where recording has started but has not yet completed) and which were scheduled by an application from the same origin as the caller.

In clause 9.3.3 of the OIPF DAE specification[1], the following two modifications are made as shown:

  • The Boolean attribute manageRecordings specifies whether or not the OITF supports managing recordings through the JavaScript APIs defined in sections 7.10.4 and 7.10.1 of the OIPF DAE specification [1].
  • “samedomain”: indicates that recordings initiated by applications from the same fully-qualified domain origin may be managed.

The OITF SHALL support the scheduling of recordings of broadcasts through the use of the following non-visual embedded object:

<object type=”application/oipfRecordingScheduler”/>

Note that the functionality in this section SHALL adhere to the security model as specified in section 10.1.

Which channels can be recorded SHALL be indicated by the ipBroadcast, DASH and HAS attributes in the PVR capability indication (see section 9.3.3). Within the channels indicated by these attributes, recording of both channels stored in the channel list and locally defined channels SHALL be supported.

Methods

ScheduledRecording record( Programme programme )

Description

Requests the scheduler to schedule the recording of the programme identified by the programmeID property of the programme.

If the programmeIDType of the programme has the value ID_TVA_GROUP_CRID then the ScheduledRecording object returned by this method SHALL be a “parent” scheduled recording object that conceptually represents the recording. Each individual programme in the SHALL be represented by a separate ScheduledRecording object. Note that ScheduledRecording objects for individual programmes may not be created until the CRID has been partially or completely resolved. The start time, duration and other properties of the programme SHALL NOT be used for scheduling any recording.

Individual programmes SHALL be recorded if any entries in a programme’s associated groupCRIDs collection matches the group CRID specified in the programmeID property of any “parent” recording.

The other data contained in the programme object is used solely for annotation of the (scheduled) recording. If such programme metadata is provided, it SHALL be retained in the ScheduledRecording object that is returned if the recording of the programme was scheduled successfully, reflecting the possibility that not all relevant metadata might be available to the scheduler. When the programme is recorded, the metadata in the associated Recording object SHALL be updated with the metadata from the broadcast stream if such metadata is available. If the recording could not be scheduled due to a scheduling conflict or lack of resources the value null is returned.

Note that the actual implementation of this method should enable the scheduler to identify the domain of the service that issues the scheduling request in order to support future retrieval of the scheduled recording through the getScheduledRecordings method.

Arguments

programme

The programme to be recorded, as defined in section 7.16.2.

ScheduledRecording recordAt( Integer startTime, Integer duration,
Integer repeatDays, String channelID )

Description

Requests the scheduler to schedule the recording of the broadcast to be received over the channel identified by channelID, starting at startTime and stopping at startTime + duration. If the recording was scheduled successfully, the resulting ScheduledRecording object is returned. If the recording could not be scheduled due to a scheduling conflict or lack of resources the value null is returned.

The OITF SHOULD associate metadata with recordings scheduled using this method. This metadata MAY be obtained from the broadcast being recorded (for example DVB-SI in an MPEG-2 transport stream) or from other sources of metadata. If an application anticipates that the OITF may not be able to obtain any metadata, it SHOULD instead of using this method;

· create a Programme object (using the createProgramme() method) containing the channelID, startTime and duration

· populate that Programme object with metadata

· pass that Programme object to the record(Programme) method.

Note that the actual implementation of this method should enable the scheduler to identify the domain of the service that issues the scheduling request in order to support future retrieval of the scheduled recording through the getScheduledRecordings() method.

Arguments

startTime

The start of the time period of the recording measured in seconds since midnight (GMT) on 1/1/1970. If the start time occurs in the past and the current time is within the specified duration of the recording, the OITF SHALL start recording immediately and MAY record any earlier content from the current programme that is available (e.g. stored in a time-shift buffer).

duration

The duration of the recording in seconds.

repeatDays

Bitfield indicating which days of the week the recording SHOULD be repeated. Values are as follows:

Day

Bitfield Value

Sunday

0x01 (i.e. 00000001)

Monday

0x02 (i.e. 00000010)

Tuesday

0x04 (i.e. 00000100)

Wednesday

0x08 (i.e. 00001000)

Thursday

0x10 (i.e. 00010000)

Friday

0x20 (i.e. 00100000)

Saturday

0x40 (i.e. 01000000)

These bitfield values can be ‘OR’-ed together to repeat a recording on more than one day of a week (e.g. weekdays)

A value of 0x00 indicates that the recording will not be repeated.

channelID

The identifier of the channel from which the broadcasted content is to be recorded. Specifies either a ccid or ipBroadcastID (as defined by the Channel object in section 7.13.11)

ScheduledRecordingCollection getScheduledRecordings()

Description

Returns a subset of all the recordings that are scheduled but which have not yet started. The subset SHALL include only scheduled recordings that were scheduled using a service from the same FQDN as the domain of the service that calls the method.

ChannelConfig getChannelConfig()

Description

Returns the channel line-up of the OITF in the form of a ChannelConfig object as defined in section 7.13.9. The ChannelConfig object returned from this function SHALL be identical to the ChannelConfig object returned from the getChannelConfig() method on the video/broadcast object as defined in section 7.13.1.3.

void remove( ScheduledRecording recording )

Description

Remove a recording (either scheduled, in-progress or completed).

For non-privileged applications, recordings SHALL only be removed when they are scheduled but not yet started and the recording was scheduled by the current service.

As with the record() method, only the programmeID property of the scheduled recording SHALL be used to identify the scheduled recording to remove where this property is available. The other data contained in the scheduled recording SHALL NOT be used when removing a recording scheduled using methods other than recordAt(). For recordings scheduled using recordAt(), the data used to identify the recording to remove is implementation dependent.

If the programmeIDType property has the value ID_TVA_GROUP_CRID then the OITF SHALL cancel the recording of the specified group.

If an A/V Control object is presenting the indicated recording then the state of the A/V Control object SHALL be automatically changed to 6 (the error state).

Arguments

recording

The scheduled recording to be removed.

Programme createProgrammeObject()

Description

Factory method to create an instance of Programme.