Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding missing manifest information on to segments (EXT-X-PROGRAM-DATE-TIME) #236

Merged
merged 3 commits into from
Nov 30, 2018

Conversation

rart
Copy link
Contributor

@rart rart commented Sep 20, 2018

Description

The segment metadata is currently missing the information that comes from the EXT-X-PROGRAM-DATE-TIME.

Specific Changes proposed

I've added the dateTimeObject & dateTimeString to the segment data object. The information as already coming through from the buffer, only missing to be added to the segment data object that's published.

Requirements Checklist

  • Feature implemented / Bug fixed
  • If necessary, more likely in a feature request than a bug fix
  • Reviewed by Two Core Contributors

@welcome
Copy link

welcome bot commented Sep 20, 2018

💖 Thanks for opening this pull request! 💖

Things that will help get your PR across the finish line:

  • Run npm run lint -- --errors locally to catch formatting errors earlier.
  • Include tests when adding/changing behavior.
  • Include screenshots and animated GIFs whenever possible.

We get a lot of pull requests on this repo, so please be patient and we will get back to you as soon as we can.

@@ -1371,6 +1371,8 @@ export default class SegmentLoader extends videojs.EventTarget {

const Cue = window.WebKitDataCue || window.VTTCue;
const value = {
dateTimeObject: (segment && segment.dateTimeObject) || null,
dateTimeString: (segment && segment.dateTimeString) || null,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should probably default to the empty string.

Copy link
Contributor Author

@rart rart Sep 20, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't seem accurate to me. I felt null was a better representation of the value not being there (e.g. manifest doesn't have that information). I can change if '' is preferred, though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should either be a string to match the type of that property when a value is present, or, maybe better yet, not have the property at all if a value is absent.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I disagree; but ok :) I'll make the update.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you think having null values would be better?

Copy link
Contributor Author

@rart rart Sep 20, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the consistency in the segment object plus think it could avoid issues of developer not checking if the property is there and getting a error like "cannot read property getTime of undefined" — trying to do dateTimeObject.getTime — for example not knowing that the prop won't be there sometimes. Ultimately, one way or another devs will need to check but just it felt more reliable to be that way.

Not sure if all of the other props there will always be in manifests but according to the code, the other properties are not skipped if not in.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If a property is missing, it'll still be the same null-check:

if (cue.dataTimeObject) {
}
if (cue.dateTimeString) {
}

Also, I only was saying that the dateTimeString should have defaulted to an empty string (which is a falsey value) and not the dateTimeObject

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so you're ok with dateTimeObject being null? You just want dateTimeString to be ''?

or are we sticking with removing them all together when not present?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gkatsev where do we stand on this adjustment?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rart I believe what you have is fine, if the program date time tag has no value for some reason (not sure if this is allowed in the HLS spec) I don't think we should have the property be present with an empty string but rather use null.

@forbesjo forbesjo merged commit a35dd09 into videojs:master Nov 30, 2018
@welcome
Copy link

welcome bot commented Nov 30, 2018

Congrats on merging your first pull request! 🎉🎉🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants