Bug #1038 » patch-exiv2-0.24-fix-mp4.diff
exiv2-0.24/src/basicio.cpp | ||
---|---|---|
1145 | 1145 |
case BasicIo::end: newIdx = p_->size_ + offset; break; |
1146 | 1146 |
} |
1147 | 1147 | |
1148 |
if ( /*newIdx < 0 || */ newIdx > static_cast<uint64_t>(p_->size_) ) return 1; |
|
1149 | 1148 |
p_->idx_ = static_cast<long>(newIdx); //not very sure about this. need more test!! - note by Shawn fly2xj@gmail.com //TODO |
1150 | 1149 |
p_->eof_ = false; |
1151 | 1150 |
return 0; |
... | ... | |
1161 | 1160 |
case BasicIo::end: newIdx = p_->size_ + offset; break; |
1162 | 1161 |
} |
1163 | 1162 | |
1164 |
if (newIdx < 0 || newIdx > p_->size_) return 1;
|
|
1163 |
if (newIdx < 0) return 1; |
|
1165 | 1164 |
p_->idx_ = newIdx; |
1166 | 1165 |
p_->eof_ = false; |
1167 | 1166 |
return 0; |
... | ... | |
1215 | 1214 | |
1216 | 1215 |
long MemIo::read(byte* buf, long rcount) |
1217 | 1216 |
{ |
1218 |
long avail = p_->size_ - p_->idx_;
|
|
1217 |
long avail = EXV_MAX(p_->size_ - p_->idx_, 0);
|
|
1219 | 1218 |
long allow = EXV_MIN(rcount, avail); |
1220 | 1219 |
std::memcpy(buf, &p_->data_[p_->idx_], allow); |
1221 | 1220 |
p_->idx_ += allow; |
... | ... | |
1225 | 1224 | |
1226 | 1225 |
int MemIo::getb() |
1227 | 1226 |
{ |
1228 |
if (p_->idx_ == p_->size_) {
|
|
1227 |
if (p_->idx_ >= p_->size_) {
|
|
1229 | 1228 |
p_->eof_ = true; |
1230 | 1229 |
return EOF; |
1231 | 1230 |
} |
exiv2-0.24/src/quicktimevideo.cpp | ||
---|---|---|
1456 | 1456 |
else if (currentStream_ == Audio) |
1457 | 1457 |
xmpData_["Xmp.audio.MediaTimeScale"] = returnBufValue(buf); |
1458 | 1458 |
time_scale = returnBufValue(buf); |
1459 |
if (time_scale <= 0) |
|
1460 |
time_scale = 1; |
|
1459 | 1461 |
break; |
1460 | 1462 |
case MediaDuration: |
1461 | 1463 |
if(currentStream_ == Video) |
... | ... | |
1571 | 1573 |
xmpData_["Xmp.video.ModificationDate"] = returnUnsignedBufValue(buf); break; |
1572 | 1574 |
case TimeScale: |
1573 | 1575 |
xmpData_["Xmp.video.TimeScale"] = returnBufValue(buf); |
1574 |
timeScale_ = returnBufValue(buf); break; |
|
1576 |
timeScale_ = returnBufValue(buf); |
|
1577 |
if (timeScale_ <= 0) timeScale_ = 1; |
|
1578 |
break; |
|
1575 | 1579 |
case Duration: |
1576 | 1580 |
xmpData_["Xmp.video.Duration"] = returnBufValue(buf) * 1000 / timeScale_; break; |
1577 | 1581 |
case PreferredRate: |
exiv2-0.24/src/quicktimevideo.hpp | ||
---|---|---|
223 | 223 | |
224 | 224 |
private: |
225 | 225 |
//! Variable which stores Time Scale unit, used to calculate time. |
226 |
uint64_t timeScale_; |
|
226 |
uint64_t timeScale_ = 1;
|
|
227 | 227 |
//! Variable which stores current stream being processsed. |
228 | 228 |
int currentStream_; |
229 | 229 |
//! Variable to check the end of metadata traversing. |
- « Previous
- 1
- 2
- 3
- Next »