Thread: Avisynth+
View Single Post
Old 23rd June 2016, 09:48   #1797  |  Link
pinterf
Registered User
 
Join Date: Jan 2014
Posts: 2,309
Quote:
Originally Posted by Myrsloik View Post
Btw, the size_t thing is also possibly the smallest problem ever. I just realized that I'd implemented my own x64 compatility with the plain 2.6 header. Guess what? IT WROKSKSKSSS!!!!!!!1111
For historical reasons my mvtools2 mod is also using that size_t version of the classic avs 2.6 header, and encountered no problem.
Why? Because these fields are accessed through methods instead of direct reference? I suppose it would break in a plugin running under avs+ x64 if we used avs 2.6 header and access pitch instead of calling GetPitch()?

Code:
	int GetPitch(int plane = 0) const AVS_BakedCode(return AVS_LinkCall(GetPitch)(plane))
Classic
Code:
class VideoFrame {
public:
	volatile long refcount;
	VideoFrameBuffer* const vfb;
	const size_t offset;
	const int pitch, row_size, height;
	const size_t offsetU, offsetV;  // U&V offsets are from top of picture.
	const int pitchUV, row_sizeUV, heightUV;
avs+
Code:
class VideoFrame {

  volatile long refcount;
  VideoFrameBuffer* vfb;

  // Due to technical reasons these members are not const, but should be treated as such.
  // That means do not modify them once the class has been constructed.
  int offset, pitch, row_size, height, offsetU, offsetV, pitchUV;  // U&V offsets are from top of picture.
  int row_sizeUV, heightUV;
pinterf is offline