Difference between revisions of "Documentation/Nightly/Developers/CompressedVideo"

From Slicer Wiki
Jump to: navigation, search
(Add compressed video page)
Tag: 2017 source edit
 
m
Tag: 2017 source edit
Line 2: Line 2:
 
{{Clear}}{{TOC right}}
 
{{Clear}}{{TOC right}}
  
= Slicer Compressed Video Overview and Acknowledgements =  
+
=Slicer Compressed Video Overview and Acknowledgements=  
 
Slicer provides infrastructure for visualizing, and managing compressed video frames.
 
Slicer provides infrastructure for visualizing, and managing compressed video frames.
 
Compressed video data is stored in a volume node that performs automatic encoding and decoding as needed.
 
Compressed video data is stored in a volume node that performs automatic encoding and decoding as needed.
Line 8: Line 8:
 
These compressed video sequences can be read and written to a video container format that can be played back in any supporting media player.
 
These compressed video sequences can be read and written to a video container format that can be played back in any supporting media player.
  
Authors:<br>
+
Authors: <br>
 
<b>Kyle Sunderland</b> (PerkLab, Queen's University) <br>  
 
<b>Kyle Sunderland</b> (PerkLab, Queen's University) <br>  
 
<b>Andras Lasso</b> (PerkLab, Queen's University) <br>  
 
<b>Andras Lasso</b> (PerkLab, Queen's University) <br>  
  
Acknowledgements:  
+
Acknowledgements: <br>
 
Development was funded in part by CANARIE’s Research Software Program.
 
Development was funded in part by CANARIE’s Research Software Program.
  
= Architecture =
+
=Architecture=
== Frame Management ==  
+
==Frame Management==  
  
; [{{doxygen-class-url|vtkStreamingVolumeFrame}} vtkStreamingVolumeFrame]
+
;[{{doxygen-class-url|vtkStreamingVolumeFrame}} vtkStreamingVolumeFrame]
: Contains the frame data and metadata information.
+
:Contains the frame data and metadata information.
: Represents the [https://en.wikipedia.org/wiki/Video_compression_picture_types frame type], codec, decoded frame size, and a vtkUnsignedCharArray representing the encoded frame data.
+
:Represents the [https://en.wikipedia.org/wiki/Video_compression_picture_types frame type], codec, decoded frame size, and a vtkUnsignedCharArray representing the encoded frame data.
: The frame also contains a pointer to the previous frame that must be decoded before the current frame can be decoded.
+
:The frame also contains a pointer to the previous frame that must be decoded before the current frame can be decoded.
; [{{doxygen-class-url|vtkStreamingVolumeCodec}} vtkStreamingVolumeCodec]
+
;[{{doxygen-class-url|vtkStreamingVolumeCodec}} vtkStreamingVolumeCodec]
: Decodes/Encodes the vtkStreamingVolumeFrame to convert the contents to/from vtkImageData.
+
:Decodes/Encodes the vtkStreamingVolumeFrame to convert the contents to/from vtkImageData.
: When decoding a frame, it will compare against the last decoded frame and decode as many previous frames as necessary for the current frame.
+
:When decoding a frame, it will compare against the last decoded frame and decode as many previous frames as necessary for the current frame.
; [{{doxygen-class-url|vtkStreamingVolumeCodecFactory}} vtkStreamingVolumeCodecFactory]
+
;[{{doxygen-class-url|vtkStreamingVolumeCodecFactory}} vtkStreamingVolumeCodecFactory]
: Factory for registering availiable codecs.
+
:Factory for registering availiable codecs.
: Can create a new codec given a [http://www.fourcc.org/ FOURCC].
+
:Can create a new codec given a [http://www.fourcc.org/ FOURCC].
  
== MRML Nodes ==
+
==MRML Nodes==
; [{{doxygen-class-url|vtkMRMLStreamingVolumeNode}} vtkMRMLStreamingVolumeNode]
 
: Represents a volume created from a compressed video frame.
 
: Automatically decodes the frame when it is set and GetImageData() is called, or if there are observers on the vtkImageData.
 
  
= Available Codecs and Video Containers Formats =
+
;[{{doxygen-class-url|vtkMRMLStreamingVolumeNode}} vtkMRMLStreamingVolumeNode]
 +
:Represents a volume created from a compressed video frame.
 +
:Automatically decodes the frame when it is set and GetImageData() is called, or if there are observers on the vtkImageData.
 +
 
 +
=Available Codecs and Video Containers Formats=
 
The following codecs and video container formats are available in Slicer.
 
The following codecs and video container formats are available in Slicer.
<br/>
+
<br />
  
 
<b>Codecs</b>
 
<b>Codecs</b>
* Uncompressed RGB: Included in Slicer
+
 
* VP9: Included in the SlicerIGSIO extension
+
*Uncompressed RGB: Included in Slicer
<br/>
+
*VP9: Included in the SlicerIGSIO extension
 +
 
 +
<br />
  
 
<b>Video containers</b>
 
<b>Video containers</b>
* MKV: Included in the SlicerIGSIO extension
 
  
= Future Work =  
+
*MKV: Included in the SlicerIGSIO extension
* Add support for additional codecs
+
 
* Add support for additional video container formats
+
=Future Work=  
 +
 
 +
*Add support for additional codecs
 +
*Add support for additional video container formats

Revision as of 19:48, 14 November 2019

Home < Documentation < Nightly < Developers < CompressedVideo


For the latest Slicer documentation, visit the read-the-docs.


Slicer Compressed Video Overview and Acknowledgements

Slicer provides infrastructure for visualizing, and managing compressed video frames. Compressed video data is stored in a volume node that performs automatic encoding and decoding as needed. In conjunction with the Sequences and SlicerIGSIO modules, it is also possible to playback and record video sequences in a compressed format. These compressed video sequences can be read and written to a video container format that can be played back in any supporting media player.

Authors:
Kyle Sunderland (PerkLab, Queen's University)
Andras Lasso (PerkLab, Queen's University)

Acknowledgements:
Development was funded in part by CANARIE’s Research Software Program.

Architecture

Frame Management

vtkStreamingVolumeFrame
Contains the frame data and metadata information.
Represents the frame type, codec, decoded frame size, and a vtkUnsignedCharArray representing the encoded frame data.
The frame also contains a pointer to the previous frame that must be decoded before the current frame can be decoded.
vtkStreamingVolumeCodec
Decodes/Encodes the vtkStreamingVolumeFrame to convert the contents to/from vtkImageData.
When decoding a frame, it will compare against the last decoded frame and decode as many previous frames as necessary for the current frame.
vtkStreamingVolumeCodecFactory
Factory for registering availiable codecs.
Can create a new codec given a FOURCC.

MRML Nodes

vtkMRMLStreamingVolumeNode
Represents a volume created from a compressed video frame.
Automatically decodes the frame when it is set and GetImageData() is called, or if there are observers on the vtkImageData.

Available Codecs and Video Containers Formats

The following codecs and video container formats are available in Slicer.

Codecs

  • Uncompressed RGB: Included in Slicer
  • VP9: Included in the SlicerIGSIO extension


Video containers

  • MKV: Included in the SlicerIGSIO extension

Future Work

  • Add support for additional codecs
  • Add support for additional video container formats