X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=doc%2Fmainpage.txt;h=c59c764708b99555dc709d63b967d7aa80845e27;hb=HEAD;hp=b4cb21d57cefc6c4b346c4fc85ee246587161e1d;hpb=41daa5821b3d3b0f450094fbf0d1e37a449f482c;p=libdcp.git diff --git a/doc/mainpage.txt b/doc/mainpage.txt index b4cb21d5..c59c7647 100644 --- a/doc/mainpage.txt +++ b/doc/mainpage.txt @@ -2,11 +2,12 @@ @mainpage libdcp -libdcp is a library to create Digital Cinema Packages (DCPs) from JPEG2000 and WAV files, and also to -read and process existing DCPs. +libdcp is a library to create Digital Cinema Packages (DCPs) from +video, audio and subtitle data, and also to read and process existing +DCPs. -Most of the hard work is done by a (slightly patched) version of asdcplib (http://www.cinecert.com/asdcplib/) -which is included in the source distribution for libdcp. +Most of the hard work is done by a (slightly patched) version of +asdcplib (http://www.cinecert.com/asdcplib/). libdcp is distributed under the GNU GPL. @@ -18,71 +19,7 @@ An example of DCP creation is given in examples/make_dcp.cc. Reading existing DCPs -- -libdcp can be used to read existing DCPs and examine their content. You might do - -@code -#include -using namespace std; - -libdcp::DCP dcp ("some-DCP-directory"); -@endcode - -libdcp will look at the XML files that make up the DCP and find its assets. You can then -do things like - -@code -boost::shared_ptr reel = dcp.reels.front (); -boost::shared_ptr p = reel->main_picture (); -boost::shared_ptr mp = boost::dynamic_pointer_cast (p); -boost::shared_ptr f = mp->get_frame(42)->argb_frame (); -uint8_t* data = f->data (); -int size = f->size (); -@endcode - -This will extract the image of frame 42 from the first reel of the DCP and make its ARGB data available -for examination. We have to do a dynamic_pointer_cast from libdcp::PictureAsset -to libdcp::MonoPictureAsset, as the picture asset may be either 2D (monoscopic) or 3D (stereoscopic). - -Audio data is accessed in chunks equal in length to the duration of a video frame. To -get the audio that accompanies frame 66, you can do - -@code -boost::shared_ptr s = reel->main_sound (); -cout << "Sound has " << s->channels() << " channels at " << s->sampling_rate() << "Hz\n"; -boost::shared_ptr f = s->get_frame(66); -uint8_t* data = f->data (); -int size = f->size (); -@endcode - -The returned data are interleaved 24-bit samples, so that - -@code -int left = data[0] | (data[1] << 8) | (data[2] << 16); -data += 3; -int right = data[0] | (data[1] << 8) | (data[2] << 16); -data += 3; -int centre = data[0] | (data[1] << 8) | (data[2] << 16); -data += 3; -int lfe = data[0] | (data[1] << 8) | (data[2] << 16); -data += 3; -int ls = data[0] | (data[1] << 8) | (data[2] << 16); -data += 3; -int rs = data[0] | (data[1] << 8) | (data[2] << 16); -data += 3; -@endcode - -would obtain the first sample from each of the 6 channels for that frame. - -Subtitles can be read using code like - -@code -boost::shared_ptr s = dcp.subtitle_asset (); -list > texts = s->subtitles_at (libdcp::Time (0, 3, 2, 5)); -@endcode - -This returns the subtitles that should be shown at 3 minutes, 2 -seconds, 5 ticks (where 1 tick is 4ms) into the DCP. - +An example of DCP reading is given in examples/read_dcp.cc. */