Hi
If one is just going to store and regurgitate but not view
(e.g., you have dedicated video player that isn't in the
PACS), then your limiting factor may not be memory but
rather parsing the DICOM "header" (which is required for
database insertion); that said, not all parsers will skip
the pixel data cleanly if some limits are not observed (or
in the worst case, not skip it at all, which may result in
terrible performance).
In terms of the underlying toolkits for parsing DICOM objects,
theoretically uncompressed pixel data of (2^32)-2 (just under
4GB) can be supported, but many toolkits have problems with
the sign bit for 32 bit data, so 2^31 is a better limit (2GB)
to stick to.
Theoretically compressed pixel data can be larger, as long as
each fragment in the encapsulated pixel data bitstream observes
the above limit (set by fixed length sequence item length field).
There is also a practical limit imposed by Rows (16 bit unsigned
value), Columns (unsigned 16 bit value) and Number of Frames
(unsigned 16 bit value). Since the number of rows and columns
is fixed for a video stream, the limit of (2^16)-1 frames
(65,535) may be what constrains the maximum video stream length,
depending on how heavily it is compressed.
All that said, most PACS do not accept any of the MPEG video
transfer syntaxes (.100 and .101 MPEG2 or .102 and .103 MPEG4)
yet anyhow, though theoretically they can be configured to do
so, but you may instead need to resort to per-frame lossy JPEG,
which is much more widely supported (given its historical use
for ultrasound cine loops).
Same goes for the SOP Class; like Harry said, the Video SOP
Classes are preferable, but you may need to fall back (during
association negotiation) to the MF True Color Secondary Capture,
if the PACS is not or cannot be configured to accept the video.
Don't forget to consider the impact on the WADO and XDS-I.b
gateways serving up the PACS content, and on CD/DVD media
export and import.
Since users do not like limits, do not do what they are
told, and will want to set the level of compression based
on quality not arbitrary system limits, if I were building
this I would certainly anticipate the need to quietly fragment
a video stream of any length into chunks that would fit into
separate instances, and reassemble them (unobtrusively) when
retrieving them for display, though obviously it would be
preferable if such fragmentation were based on user actions
(like starting and stopping the recording).
David