comparison data/model/RangeSummarisableTimeValueModel.h @ 300:5877d68815c7

* Change WaveFileModel API from getValues(start,end) to getData(start,count). It's much less error-prone to pass in frame counts instead of start/end locations. Should have done this ages ago. This closes #1794563. * Add option to apply a transform to only the selection region, instead of the whole audio. * (to make the above work properly) Add start frame offset to wave models
author Chris Cannam
date Mon, 01 Oct 2007 13:48:38 +0000
parents c022976d18e8
children 3ff8f571da09
comparison
equal deleted inserted replaced
299:576be0d0d218 300:5877d68815c7
51 }; 51 };
52 52
53 typedef std::vector<Range> RangeBlock; 53 typedef std::vector<Range> RangeBlock;
54 54
55 /** 55 /**
56 * Return ranges between the given start and end frames, 56 * Return ranges from the given start frame, corresponding to the
57 * summarised at the given block size. ((end - start + 1) / 57 * given number of underlying sample frames, summarised at the
58 * blockSize) ranges should ideally be returned. 58 * given block size. duration / blockSize ranges should ideally
59 * be returned.
59 * 60 *
60 * If the given block size is not supported by this model 61 * If the given block size is not supported by this model
61 * (according to its zoom constraint), also modify the blockSize 62 * (according to its zoom constraint), also modify the blockSize
62 * parameter so as to return the block size that was actually 63 * parameter so as to return the block size that was actually
63 * obtained. 64 * obtained.
64 */ 65 */
65 virtual void getRanges(size_t channel, size_t start, size_t end, 66 virtual void getSummaries(size_t channel, size_t start, size_t count,
66 RangeBlock &ranges, 67 RangeBlock &ranges,
67 size_t &blockSize) const = 0; 68 size_t &blockSize) const = 0;
68 69
69 /** 70 /**
70 * Return the range between the given start and end frames, 71 * Return the range from the given start frame, corresponding to
71 * summarised at a block size equal to the distance between start 72 * the given number of underlying sample frames, summarised at a
72 * and end frames. 73 * block size equal to the distance between start and end frames.
73 */ 74 */
74 virtual Range getRange(size_t channel, size_t start, size_t end) const = 0; 75 virtual Range getSummary(size_t channel, size_t start, size_t count) const = 0;
75 76
76 virtual void setAlignment(AlignmentModel *alignment); // I take ownership 77 virtual void setAlignment(AlignmentModel *alignment); // I take ownership
77 virtual const Model *getAlignmentReference() const; 78 virtual const Model *getAlignmentReference() const;
78 virtual size_t alignToReference(size_t frame) const; 79 virtual size_t alignToReference(size_t frame) const;
79 virtual size_t alignFromReference(size_t referenceFrame) const; 80 virtual size_t alignFromReference(size_t referenceFrame) const;