Skip to main content

How to get the PMT Descriptors from a recorded content?

5 replies [Last post]
sivakumaran
Offline
Joined: 2006-05-05
Points: 0

For a broadcast content, we are able to retrieve the destriptors like CA, DTCP etc from the PMT elementary stream using the below code.

Descriptor[] descriptors = PMT.getOuterDescriptorLoop();
or
PMTElementaryStreamInfo[] elementaryStreams = pmt.getPMTElementaryStreamInfoLoop();
Descriptor[] descriptors = elementaryStreams[i].getDescriptorLoop();

When the same content is recorded, how we can get the descriptors from the recorded content? Did the RI Simulator stores the PMT descriptors of the content?

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
cpratt
Offline
Joined: 2008-12-18
Points: 0

OCAP doesn't provide application-level access to recorded PMTs (including the descriptors). And in fact, neither OCAP or the RI presume that the PAT or PMT is recorded on-disk as some platforms have historically only recorded the AV PIDs.

Additionally, it would need to be clarified how the org.ocap.si APIs (and DAVIC section filters) should operate when running under trick mode playback and random access, as it's intended for broadcast content only. And there would need to be additional accommodation for platform capabilities.

pradeepngupta
Offline
Joined: 2011-07-03
Points: 0

Thanks Pratt for the information.

But What will happen if the application by mistake tries to retrieve PMT for the recorded Content using ProgramMapTableManager.getInstance().retrieveInBand() API.
Internally on validating the locator, the RI will cancel the request but Application is not getting any notification of success / failure / cancellation.

I know the application needs to be corrected, but I think RI should also notifies the application of cancelling the request in this case.

Please let me know, if my thinking is incorrect.

cpratt
Offline
Joined: 2008-12-18
Points: 0

Really, the implementation should be throwing an exception when a non-broadcast Locator is provided to this method.

Unfortunately, this API isn't declared to throw InvalidLocatorException. But illegalArgumentException would be just as valid in this case, unless you believe that it would cause issues for the given application (and that invoking SIRequestor.notifyFailure() would be more appropriate).

Either way, this should be filed as a bug as this is definitely a legitimate issue with the API and/or implementation.

pradeepngupta
Offline
Joined: 2011-07-03
Points: 0

Thanks Pratt.

I have raised JIRA ticket for this: http://java.net/jira/browse/OCAP_RI-668

cpratt
Offline
Joined: 2008-12-18
Points: 0

Thanks Pradeep.

Any opinions on what solution will be least disruptive to your application?

(e.g. IllegalArgumentException vs. SIRequestor.notifyFailure()?)