ONVIF::...aStream(3)

πŸ“¦ version 1.38.6, in nixpkgs unstable

πŸ’… ONVIF::...aStream(3) β€” bestie edition πŸŽ€

Okay so this is the manual page for the ONVIF::...aStream(3) situation, and honestly? It's a whole vibe. Let me walk you through it, no cap.


✨ NAME ✨

ONVIF::Analytics::Elements::MetadataStream β€” that's the whole name, periodt. It's a Perl data type class for the XML Schema defined element MetadataStream from the namespace http://www.onvif.org/ver10/schema. That namespace URL? Copy it exactly, bestie, every character. 🫢


πŸ”₯ DESCRIPTION πŸ”₯

So basically this is a Perl data type class, and it exists for one job: representing the XML Schema defined element MetadataStream that lives in the namespace http://www.onvif.org/ver10/schema.

That's it. That's the whole gig. It's giving "small but mighty" and honestly we stan a focused class. πŸ‘‘


🌸 METHODS 🌸

πŸ¦‹ new

my $element = ONVIF::Analytics::Elements::MetadataStream->new($data);

Bestie. Listen. This is the constructor. It makes you a brand new shiny element object, and it will accept the following data structure β€” and oh my god, look at it. It's huge. It's iconic. It's a little unhinged. πŸ’€

Heads up: nested inside there are notes saying "One of the following elements." and "No occurrence checks yet, so be sure to pass just one..." β€” that's real, that's the module talking, and it means exactly what it says. There are no occurrence checks. So please, for the love of everything, pass just one. πŸ™ˆ
{ # ONVIF::Analytics::Types::MetadataStream
  # One of the following elements.
  # No occurrence checks yet, so be sure to pass just one...
  VideoAnalytics =>    { # ONVIF::Analytics::Types::VideoAnalyticsStream
    # One of the following elements.
    # No occurrence checks yet, so be sure to pass just one...
    Frame =>  { # ONVIF::Analytics::Types::Frame
      PTZStatus =>  { # ONVIF::Analytics::Types::PTZStatus
        Position =>  { # ONVIF::Analytics::Types::PTZVector
          PanTilt => ,
          Zoom => ,
        },
        MoveStatus =>  { # ONVIF::Analytics::Types::PTZMoveStatus
          PanTilt => $some_value, # MoveStatus
          Zoom => $some_value, # MoveStatus
        },
        Error =>  $some_value, # string
        UtcTime =>  $some_value, # dateTime
      },
      Transformation =>  { # ONVIF::Analytics::Types::Transformation
        Translate => ,
        Scale => ,
        Extension =>  { # ONVIF::Analytics::Types::TransformationExtension
        },
      },
      Object =>  { # ONVIF::Analytics::Types::Object
        Appearance =>  { # ONVIF::Analytics::Types::Appearance
          Transformation =>  { # ONVIF::Analytics::Types::Transformation
            Translate => ,
            Scale => ,
            Extension =>  { # ONVIF::Analytics::Types::TransformationExtension
            },
          },
          Shape =>  { # ONVIF::Analytics::Types::ShapeDescriptor
            BoundingBox => ,
            CenterOfGravity => ,
            Polygon =>  { # ONVIF::Analytics::Types::Polygon
              Point => ,
            },
            Extension =>  { # ONVIF::Analytics::Types::ShapeDescriptorExtension
            },
          },
          Color =>  { # ONVIF::Analytics::Types::ColorDescriptor
            ColorCluster =>  {
              Color => ,
              Weight =>  $some_value, # float
              Covariance => ,
            },
            Extension =>  { # ONVIF::Analytics::Types::ColorDescriptorExtension
            },
          },
          Class =>  { # ONVIF::Analytics::Types::ClassDescriptor
            ClassCandidate =>  {
              Type => $some_value, # ClassType
              Likelihood =>  $some_value, # float
            },
            Extension =>  { # ONVIF::Analytics::Types::ClassDescriptorExtension
              OtherTypes =>  { # ONVIF::Analytics::Types::OtherType
                Type =>  $some_value, # string
                Likelihood =>  $some_value, # float
              },
              Extension =>  { # ONVIF::Analytics::Types::ClassDescriptorExtension2
              },
            },
          },
          Extension =>  { # ONVIF::Analytics::Types::AppearanceExtension
          },
        },
        Behaviour =>  { # ONVIF::Analytics::Types::Behaviour
          Removed =>  {
          },
          Idle =>  {
          },
          Extension =>  { # ONVIF::Analytics::Types::BehaviourExtension
          },
        },
        Extension =>  { # ONVIF::Analytics::Types::ObjectExtension
        },
      },
      ObjectTree =>  { # ONVIF::Analytics::Types::ObjectTree
        Rename =>  { # ONVIF::Analytics::Types::Rename
          from => ,
          to => ,
        },
        Split =>  { # ONVIF::Analytics::Types::Split
          from => ,
          to => ,
        },
        Merge =>  { # ONVIF::Analytics::Types::Merge
          from => ,
          to => ,
        },
        Delete => ,
        Extension =>  { # ONVIF::Analytics::Types::ObjectTreeExtension
        },
      },
      Extension =>  { # ONVIF::Analytics::Types::FrameExtension
        MotionInCells =>  { # ONVIF::Analytics::Types::MotionInCells
        },
        Extension =>  { # ONVIF::Analytics::Types::FrameExtension2
        },
      },
    },
    Extension =>  { # ONVIF::Analytics::Types::VideoAnalyticsStreamExtension
    },
  },
  PTZ =>    { # ONVIF::Analytics::Types::PTZStream
    # One of the following elements.
    # No occurrence checks yet, so be sure to pass just one...
    PTZStatus =>  { # ONVIF::Analytics::Types::PTZStatus
      Position =>  { # ONVIF::Analytics::Types::PTZVector
        PanTilt => ,
        Zoom => ,
      },
      MoveStatus =>  { # ONVIF::Analytics::Types::PTZMoveStatus
        PanTilt => $some_value, # MoveStatus
        Zoom => $some_value, # MoveStatus
      },
      Error =>  $some_value, # string
      UtcTime =>  $some_value, # dateTime
    },
    Extension =>  { # ONVIF::Analytics::Types::PTZStreamExtension
    },
  },
  Event =>  $some_value, # anyType
  Extension =>  { # ONVIF::Analytics::Types::MetadataStreamExtension
    AudioAnalyticsStream =>  { # ONVIF::Analytics::Types::AudioAnalyticsStream
      AudioDescriptor =>  { # ONVIF::Analytics::Types::AudioDescriptor
      },
      Extension =>  { # ONVIF::Analytics::Types::AudioAnalyticsStreamExtension
      },
    },
    Extension =>  { # ONVIF::Analytics::Types::MetadataStreamExtension2
    },
  },
},

Like, the way MetadataStream can hold a VideoAnalytics (which is a VideoAnalyticsStream, which holds a Frame, which holds PTZStatus, Transformation, Object, ObjectTree, and an Extension...) β€” it's giving nesting dolls. It's giving "I contain multitudes." And then PTZ is its own PTZStream with its own PTZStatus and Extension, and Event is just $some_value typed as anyType, and Extension opens up into MetadataStreamExtension with an AudioAnalyticsStream in it. πŸŒ€

And under Object β†’ Appearance β†’ Class β†’ Extension (ClassDescriptorExtension) you get OtherTypes (OtherType) with Type as a string and Likelihood as a float, plus an Extension of type ClassDescriptorExtension2. Ngl, the type names are so long they're basically a personality trait. 😭

Also lowkey obsessed with the Rename, Split, and Merge entries under ObjectTree β€” all three with lowercase from and to keys, plus a bare Delete. Copy the case exactly, bestie, because from β‰  From and Perl will NOT be forgiving. πŸ’…


πŸ‘‘ AUTHOR πŸ‘‘

Generated by SOAP::WSDL. That's it. That's the author. A program did this. Honestly? Slay, king. πŸ€–βœ¨


Okay so that's the whole page, and you ate that. Go forth and pass exactly one element, bestie. πŸ’–

<div align="center">β€” cute lil sign-off: this page is from perl v5.42.3, dated 1980-01-01, and the header said ONVIF::...aStream(3) β€” see you in the group chat πŸŽ€πŸ¦‹</div>

πŸ“¦ where this page comes from