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

Include timestamp of frame onRenderedFirstFrame #2986

Closed
wants to merge 1 commit into from

Conversation

botondbutuza
Copy link

As per #2533, the presentation timestamp of the first frame is passed on to onRenderedFirstFrame. This is helpful because the first available keyframe is rendered instantly, and is then followed by a visible delay before playback catches up with rendered frame.

@googlebot
Copy link

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://cla.developers.google.com/ to sign.

Once you've signed, please reply here (e.g. I signed it!) and we'll verify. Thanks.


  • If you've already signed a CLA, it's possible we don't have your GitHub username or you're using a different email address. Check your existing CLA data and verify that your email is set on your git commits.
  • If your company signed a CLA, they designated a Point of Contact who decides which employees are authorized to participate. You may need to contact the Point of Contact for your company and ask to be added to the group of authorized contributors. If you don't know who your Point of Contact is, direct the project maintainer to go/cla#troubleshoot.
  • In order to pass this check, please resolve this problem and have the pull request author add another comment and the bot will run again.

@botondbutuza
Copy link
Author

I signed it!

@googlebot
Copy link

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for the commit author(s). If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and have the pull request author add another comment and the bot will run again.

@botondbutuza
Copy link
Author

I signed it! Again!

@botondbutuza
Copy link
Author

Or maybe I didn't. Hmm. I signed the CLA with both possible email addresses.

@botondbutuza botondbutuza changed the title include timestamp of frame onRenderedFirstFrame Include timestamp of frame onRenderedFirstFrame Jun 22, 2017
Copy link
Contributor

@ojw28 ojw28 left a comment

Choose a reason for hiding this comment

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

Sorry for taking so long to look at this. Happy to merge the change if the requested modifications can be made. Thanks!

@@ -285,8 +285,8 @@ public void onVideoSizeChanged(int width, int height, int unappliedRotationDegre
}

@Override
public void onRenderedFirstFrame(Surface surface) {
Log.d(TAG, "renderedFirstFrame [" + surface + "]");
public void onRenderedFirstFrame(Surface surface, long framePosition) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we call it framePositionMs?

@@ -378,7 +378,7 @@ private void setSurface(Surface surface) throws ExoPlaybackException {
// The surface is set and unchanged. If we know the video size and/or have already rendered to
// the surface, report these again immediately.
maybeRenotifyVideoSizeChanged();
maybeRenotifyRenderedFirstFrame();
maybeRenotifyRenderedFirstFrame(0);
Copy link
Contributor

Choose a reason for hiding this comment

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

You should probably pass the timestamp of the last frame that was rendered here, since that's the frame that's currently displayed on the surface.

@@ -438,7 +438,7 @@ protected void onInputFormatChanged(Format newFormat) throws ExoPlaybackExceptio
@Override
protected void onQueueInputBuffer(DecoderInputBuffer buffer) {
if (Util.SDK_INT < 23 && tunneling) {
maybeNotifyRenderedFirstFrame();
maybeNotifyRenderedFirstFrame(0);
Copy link
Contributor

Choose a reason for hiding this comment

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

This needs to be correct also. I think you probably need buffer.timeUs - streamOffsetUs, where streamOffsetUs is somehow obtained from BaseRenderer. Would need to check this though.

@@ -679,16 +679,16 @@ private void clearRenderedFirstFrame() {
}
}

/* package */ void maybeNotifyRenderedFirstFrame() {
/* package */ void maybeNotifyRenderedFirstFrame(long framePosition) {
Copy link
Contributor

Choose a reason for hiding this comment

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

It's probably going to less error prone if this method and the one below receive framePositionUs and divide by 1000 internally (rather than having the callers need to divide).

*/
void onRenderedFirstFrame(Surface surface);
void onRenderedFirstFrame(Surface surface, long framePosition);
Copy link
Contributor

Choose a reason for hiding this comment

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

Please put Ms explicitly on the end of the variable name, for clarity. Ditto in a few places.

@@ -314,7 +314,7 @@ private void renderBuffer() {
outputBuffer = null;
consecutiveDroppedFrameCount = 0;
decoderCounters.renderedOutputBufferCount++;
maybeNotifyRenderedFirstFrame();
maybeNotifyRenderedFirstFrame(0);
Copy link
Contributor

Choose a reason for hiding this comment

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

Comments in MediaCodecVideoRenderer apply to this file too (but I haven't duplicated them all :)).

@ojw28 ojw28 self-assigned this Sep 4, 2017
@ojw28
Copy link
Contributor

ojw28 commented Jan 2, 2018

Closing due to inactivity. If you're still interested in getting this submitted, feel free to open a new pull request that addresses the pending comments. Thanks!

@ojw28 ojw28 closed this Jan 2, 2018
@google google locked and limited conversation to collaborators May 9, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants