-
Notifications
You must be signed in to change notification settings - Fork 46
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
document rotation use case with ProjectionPoseRoll Element #269
Comments
I'm unsure if a string tag is the best way to handle rotation. Perhaps we should consider other examples of handling this, such as the transformation matrix in QuickTime |
Speaking from a practical point of view: is QT's transformation matrix used widely, and specifically, for anything other than rotation? I can see 90/180/270 degree rotation being useful due to people misusing their cameras/phones, but other than that transformations don't sound useful to me at all. I agree that anything affecting the display/playback of content should not be done via tags but something else; if it's simple enough & static over the whole duration, the track headers. |
Good point, but still this may be better handled with a dedicated unsigned integer elements than a string in a tag. |
To rotate a video via ROTATE tags is supported in three software players.
For the moment is this the only way.
OK, why not. On the other hand it shows how "strong" Tags can be. Without to have a Matroska element for such case it is nevertheless possible to make it work.
Yes, a new Matroska element named TrackRotation with an integer value could be added. |
Actually, instead of considering a new Rotation Element, I think the existing Such as: <Projection>
<!-- '0' = 'rectangular' -->
<ProjectionType>0</ProjectionType>
<!-- unstored ProjectionPoseYaw and ProjectionPosePitch
provide defaults of 0 rotation on right and up vectors -->
<!-- ProjectionPoseRoll is a float in range of -180 to 180
for rotation around the forward vector -->
<ProjectionPoseRoll>$ROTATION</ProjectionPoseRoll>
</Projection> If this is sufficient, I can close #271 and add some documentation to cover a basic rotation example. |
Right, not surprising as the need is not new in video world and WebM needed it. |
OK, an element for rotation exists, but: I'm afraid no player today supports this element. I guess players which supports rotation via Tags will don't remove this feature. |
Having a standard method does not prevent tools to support pre-standard method, just that pre-standard method is not always what happens in the standard later. and IIUC this is from WebM so Google, more tools (e.g. Google tools) will use the Google method instead of the pre-standard stuff. |
Hi, I'm working on ExoPlayer. We found out that a partner is using a custom track name format to encode rotation information. We want them to use a standard method and while searching for one we found this thread. We discussed this solution with the authors of the Spherical Video V2. They said that these fields were not intended to be used for a rectangular video and they think it's odd to partially support the spec for just this use case. Also it won't support other use cases like scaling, translation, skewing so they recommend using a transformation matrix like MP4 and others use. |
So do you think it is worth reconsidering using #271 or a transformation matrix? |
I suppose I'm not sure I agree with the authors of the Spherical Video V2 on this. It seems to me that the spherical elements as defined do handle the situation of rotation quite simply. Interested in finding more consensus on which direction to proceed in. |
Adding @acolwell, one of the authors of the Spherical Video V2, in case he wants to add anything. |
@dericed @acolwell Currently ExoPlayer only supports some HTC-specific signaling for rotation in Matroska: google/ExoPlayer@42c3ff3. We'd like to support something more standardized, so what's the final decision on ProjectionPoseRoll vs. something else (e.g., a new element with a transform matrix like ISOBMFF)? |
nudging @robUx4 & @mbunkus to gather consensus here. IIUC the proposals here are:
|
For me is option 1 ok. |
Same for me This value is already supported for 360 videos in VLC it would be easy to support it for flat videos as well. |
Seems to be solved. |
What commit solved it? |
Ah I thought we agreed on the way it's supposed to be done and that's using existing elements. But yes, more doc might be needed if it's not clear... |
Looks like the majority is in favor of option 1. To allow progress on this issue, I withdraw my objection. I think the issue can be closed. We'll add support for rotations using ProjectionPoseRoll to ExoPlayer. |
Yes, we should close this issue. @erdemguven |
@hubblec4 I'm not aware of any plan for supporting any Matroska specific feature currently. |
@erdemguven, I'd like to make sure that the language of the specification still addresses your underlying reservation in option 1. Is there any particular warning or recommendation about the use of this option that you'd like expressed within the document? Also before closing the issue I'd suggest some documentation on this as using ProjectionPoseRoll for rotation isn't completely intuitive at first glace. |
Yes you are right @dericed.
Why not? Rotation is an extra feature and you will implement it. We have almost one million players which can play Matroska in a "boring normal way". |
@dericed, perhaps it would be useful to add an example on how to use ProjectionPoseRoll with flat videos. @hubblec4, you can make feature requests at https://github.com/google/ExoPlayer |
OK, I have open an issue for ExoPlayer..... |
See also ietf-wg-cellar/matroska-specification#269. PiperOrigin-RevId: 226758584
May I know why use ProjectionPoseRoll but ProjectionPoseYaw to rotate video? |
See also ietf-wg-cellar/matroska-specification#269. PiperOrigin-RevId: 226758584
The original thread was a question to add an unofficial TagName to the official TagName list. How to use ProjectionPosRoll element is another question/issue. |
IMHO, the ProjectionPosRoll element is already usable, but I think some documentation would be helpful to provide the rotation use case as an example. |
closed via #326 |
How complicated would it be to add new Matroska TagNames?
In my chatperEditor thread
is a user which uses this TagName to rotate the video while playback.
The text was updated successfully, but these errors were encountered: