[vlc-devel] [PATCH 06/18] matroska_segment_parse: use vlc_viewpoint_from_euler

Alexandre Janniaux ajanni at videolabs.io
Wed Mar 31 09:25:38 UTC 2021


From: Alexandre Janniaux <alexandre.janniaux at gmail.com>

---
 modules/demux/mkv/matroska_segment_parse.cpp | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp
index 1a312a9256..fba6bcd58e 100644
--- a/modules/demux/mkv/matroska_segment_parse.cpp
+++ b/modules/demux/mkv/matroska_segment_parse.cpp
@@ -254,8 +254,14 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
         unsigned int chroma_sit_horizontal;
       } track_video_info;
 
+      struct {
+          float yaw;
+          float pitch;
+          float roll;
+      } pose;
+
     } metadata_payload = {
-      this, p_track, &sys.demuxer, bSupported, 3, { }
+      this, p_track, &sys.demuxer, bSupported, 3, { }, { }
     };
 
     MKV_SWITCH_CREATE( EbmlTypeDispatcher, MetaDataHandlers, MetaDataCapture )
@@ -570,17 +576,17 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
         E_CASE( KaxVideoProjectionPoseYaw, pose )
         {
             ONLY_FMT(VIDEO);
-            vars.tk->fmt.video.pose.yaw = static_cast<float>( pose );
+            vars.pose.yaw = static_cast<float>( pose );
         }
         E_CASE( KaxVideoProjectionPosePitch, pose )
         {
             ONLY_FMT(VIDEO);
-            vars.tk->fmt.video.pose.pitch = static_cast<float>( pose );
+            vars.pose.pitch = static_cast<float>( pose );
         }
         E_CASE( KaxVideoProjectionPoseRoll, pose )
         {
             ONLY_FMT(VIDEO);
-            vars.tk->fmt.video.pose.roll = static_cast<float>( pose );
+            vars.pose.roll = static_cast<float>( pose );
         }
 #endif
         E_CASE( KaxVideoFlagInterlaced, fint ) // UNUSED
@@ -1009,6 +1015,11 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
         }
     };
 
+    vlc_viewpoint_from_euler( &p_track->fmt.video.pose,
+                              metadata_payload.pose.yaw,
+                              metadata_payload.pose.pitch,
+                              metadata_payload.pose.roll);
+
     MetaDataHandlers::Dispatcher().iterate ( m->begin(), m->end(), &metadata_payload );
 
     if( p_track->i_number == 0 )
-- 
2.31.0



More information about the vlc-devel mailing list