+/** @return true if this PlayerVideo is definitely the same as another, false if it is probably not */
+bool
+PlayerVideo::same (shared_ptr<const PlayerVideo> other) const
+{
+ if (_crop != other->_crop ||
+ _fade.get_value_or(0) != other->_fade.get_value_or(0) ||
+ _inter_size != other->_inter_size ||
+ _out_size != other->_out_size ||
+ _eyes != other->_eyes ||
+ _part != other->_part ||
+ _colour_conversion != other->_colour_conversion) {
+ return false;
+ }
+
+ if ((!_subtitle && other->_subtitle) || (_subtitle && !other->_subtitle)) {
+ /* One has a subtitle and the other doesn't */
+ return false;
+ }
+
+ if (_subtitle && other->_subtitle && !_subtitle->same (other->_subtitle.get ())) {
+ /* They both have subtitles but they are different */
+ return false;
+ }
+
+ /* Now neither has subtitles */