Add FrameInfo::write for FILE *; test it.
[libdcp.git] / src / picture_asset_writer.cc
1 /*
2     Copyright (C) 2012-2013 Carl Hetherington <cth@carlh.net>
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 */
19
20 #include <inttypes.h>
21 #include <stdint.h>
22 #include "AS_DCP.h"
23 #include "KM_fileio.h"
24 #include "picture_asset_writer.h"
25 #include "exceptions.h"
26 #include "picture_asset.h"
27
28 using std::istream;
29 using std::ostream;
30 using std::string;
31 using boost::shared_ptr;
32 using namespace libdcp;
33
34 FrameInfo::FrameInfo (istream& s)
35         : offset (0)
36         , size (0)
37 {
38         s >> offset >> size;
39
40         if (!s.good ()) {
41                 /* Make sure we zero these if something bad happened, otherwise
42                    the caller might try to alloc lots of RAM.
43                 */
44                 offset = size = 0;
45         }
46
47         s >> hash;
48 }
49
50 void
51 FrameInfo::write (ostream& s) const
52 {
53         s << offset << " " << size << " " << hash;
54 }
55
56 void
57 FrameInfo::write (FILE* f) const
58 {
59         fprintf (f, "%" PRId64 " %" PRId64 " %s", offset, size, hash.c_str ());
60 }
61
62
63 PictureAssetWriter::PictureAssetWriter (PictureAsset* asset, bool overwrite)
64         : _asset (asset)
65         , _frames_written (0)
66         , _started (false)
67         , _finalized (false)
68         , _overwrite (overwrite)
69 {
70
71 }