diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-01-27 22:39:23 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-01-27 22:39:23 +0000 |
| commit | 95de247288c5abfd35347d8ad5fe4d5317eb2252 (patch) | |
| tree | 74b85f82006aaff61f966e007d0618c087d3a209 | |
| parent | 00e9647a9ede540f2d567c19025278c25a87c830 (diff) | |
Tweak mainpage.txt.
| -rw-r--r-- | doc/mainpage.txt | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/doc/mainpage.txt b/doc/mainpage.txt index 84c3c585..1e8a8c11 100644 --- a/doc/mainpage.txt +++ b/doc/mainpage.txt @@ -20,71 +20,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 <libdcp/dcp.h> -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> reel = dcp.reels.front (); -boost::shared_ptr<libdcp::PictureAsset> p = reel->main_picture (); -boost::shared_ptr<libdcp::MonoPictureAsset> mp = boost::dynamic_pointer_cast<libdcp::MonoPictureAsset> (p); -boost::shared_ptr<libdcp::ARGBFrame> 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 <code>dynamic_pointer_cast</code> from <code>libdcp::PictureAsset</code> -to <code>libdcp::MonoPictureAsset</code>, 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<libdcp::SoundAsset> s = reel->main_sound (); -cout << "Sound has " << s->channels() << " channels at " << s->sampling_rate() << "Hz\n"; -boost::shared_ptr<libdcp::SoundFrame> 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<SubtitleAsset> s = dcp.subtitle_asset (); -list<boost::shared_ptr<libdcp::Text> > 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 example/read_dcp.cc. */ |
