[Declared in "../apps/compressed_io/jp2.h"]
This object manages interaction with any data source conforming to the JP2 family file format. To interact with such a source, you first call one of the overloaded jp2_family_src::open functions, depending on where the data is coming from (file, other compressed source, or dynamic cache). You then pass a pointer to the jp2_family_src object into jp2_input_box or any of the higher level objects designed to manage JP2-family sources, including jp2_source and mj2_source.
Importantly, you can have multiple portals to boxes in a single jp2_family_src object. Thus, you can pass the jp2_family_src object into jp2_source::open to gain access to JP2 header information and the first contiguous code-stream box, but you can concurrently open boxes within the source directly by passing the same object into another jp2_input_box object. This allows you to walk through boxes in the source, recursing into sub-boxes as desired. In this way, you can open additional code-streams (if any), examine IPR, UUID, or XML boxes, etc.
Note that you should not directly assign a jp2_family_src object to another, since it is not an interface.
jp2_family_src {Java: Jp2_family_src}
~jp2_family_src [virtual] {Java: Native_destroy}
exists {Java: Exists}
open (3 forms) {Java: Open}
close {Java: Close}
uses_cache {Java: Uses_cache}
is_top_level_complete {Java: Is_top_level_complete}
get_id {Java: Get_id}
acquire_lock [virtual] {Java: Acquire_lock}
release_lock [virtual] {Java: Release_lock}