void AVIDecoder::checkTruemotion1() { // If we got here from loadStream(), we know the track is valid assert(!_videoTracks.empty()); TrackStatus &status = _videoTracks[0]; AVIVideoTrack *track = (AVIVideoTrack *)status.track; // Ignore non-truemotion tracks if (!track->isTruemotion1()) return; // Read the next video packet handleNextPacket(status); const Graphics::Surface *frame = track->decodeNextFrame(); if (!frame) { rewind(); return; } // Fill in the width/height based on the frame's width/height _header.width = frame->w; _header.height = frame->h; track->forceDimensions(frame->w, frame->h); // Rewind us back to the beginning rewind(); }
const Graphics::Surface *AVIDecoder::decodeNextTransparency() { if (!_transparencyTrack.track) return nullptr; AVIVideoTrack *track = static_cast<AVIVideoTrack *>(_transparencyTrack.track); return track->decodeNextFrame(); }