diff --git a/FFmpegSource/ffmatroskasource.cpp b/FFmpegSource/ffmatroskasource.cpp index 223a2ee18..155427a0d 100644 --- a/FFmpegSource/ffmatroskasource.cpp +++ b/FFmpegSource/ffmatroskasource.cpp @@ -281,6 +281,14 @@ FFMatroskaSource::FFMatroskaSource(const char *ASource, int AVideoTrack, int AAu if (!SaveTimecodesToFile(ATimecodes, mkv_TruncFloat(VideoTI->TimecodeScale), 1000000)) Env->ThrowError("FFmpegSource: Failed to write timecodes"); + + // Set AR variables + int ffsar_num = VideoTI->AV.Video.DisplayWidth * VideoTI->AV.Video.PixelHeight; + int ffsar_den = VideoTI->AV.Video.DisplayHeight * VideoTI->AV.Video.PixelWidth; + Env->SetVar("FFSAR_NUM", ffsar_num); + Env->SetVar("FFSAR_DEN", ffsar_den); + Env->SetVar("FFSAR", ffsar_num / (double)ffsar_den); + } } diff --git a/FFmpegSource/ffmpegsource.cpp b/FFmpegSource/ffmpegsource.cpp index a3ef7915c..8febfc0ef 100644 --- a/FFmpegSource/ffmpegsource.cpp +++ b/FFmpegSource/ffmpegsource.cpp @@ -219,6 +219,11 @@ FFmpegSource::FFmpegSource(const char *ASource, int AVideoTrack, int AAudioTrack unsigned int DTSDiff = (unsigned int)FFMAX(Frames[1].DTS - Frames[0].DTS, 1); VI.fps_denominator *= DTSDiff; } + + // Set AR variables + Env->SetVar("FFSAR_NUM", VideoCodecContext->sample_aspect_ratio.num); + Env->SetVar("FFSAR_DEN", VideoCodecContext->sample_aspect_ratio.den); + Env->SetVar("FFSAR", av_q2d(VideoCodecContext->sample_aspect_ratio)); } } diff --git a/FFmpegSource/ffmpegsource.html b/FFmpegSource/ffmpegsource.html index 78134c523..dc78ff307 100644 --- a/FFmpegSource/ffmpegsource.html +++ b/FFmpegSource/ffmpegsource.html @@ -166,9 +166,10 @@ Note that --enable-w32threads is required for multithreaded decoding to work.

Changes