X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fbdwrite.C;h=93b656904734ab4080980bc40a90b15b6c03f9a6;hb=e3c81d537528ce9e4300d54fc5c89e20c21070a0;hp=2eb20f71b67f878f2393cb9d691be75e52d567e8;hpb=73e5d54a5068f6a355158691a9c8849103f89564;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/bdwrite.C b/cinelerra-5.0/cinelerra/bdwrite.C index 2eb20f71..93b65690 100644 --- a/cinelerra-5.0/cinelerra/bdwrite.C +++ b/cinelerra-5.0/cinelerra/bdwrite.C @@ -2448,12 +2448,13 @@ static int bd_video_rate(double rate) exit(1); } -static int bd_aspect_ratio(int w, double ratio) +static int bd_aspect_ratio(int w, int h, double ratio) { - if( fabs(ratio-1.333) < 0.01 ) return BLURAY_ASPECT_RATIO_4_3; - if( fabs(ratio-1.777) < 0.01 ) return BLURAY_ASPECT_RATIO_16_9; + double aspect = (w * ratio) / h; + if( fabs(aspect-1.333) < 0.01 ) return BLURAY_ASPECT_RATIO_4_3; + if( fabs(aspect-1.777) < 0.01 ) return BLURAY_ASPECT_RATIO_16_9; return w == 720 ? BLURAY_ASPECT_RATIO_4_3 : BLURAY_ASPECT_RATIO_16_9; - fprintf(stderr, "unknown bluray aspect ratio %5.3f\n",ratio); + fprintf(stderr, "unknown bluray aspect ratio %5.3f\n",aspect); exit(1); } @@ -2495,8 +2496,9 @@ int media_info::scan() st->codec->flags & CODEC_FLAG_INTERLACED_ME); s->rate = bd_video_rate(!st->codec->framerate.den ? 0 : (double)st->codec->framerate.num / st->codec->framerate.den); - s->aspect = bd_aspect_ratio(st->codec->width,!st->sample_aspect_ratio.den ? 0 : - (double)st->sample_aspect_ratio.num / st->sample_aspect_ratio.den); + s->aspect = bd_aspect_ratio(st->codec->width, st->codec->height, + !st->sample_aspect_ratio.num || !st->sample_aspect_ratio.den ? 1. : + (double)st->sample_aspect_ratio.num / st->sample_aspect_ratio.den); break; } case AVMEDIA_TYPE_AUDIO: { s->coding_type = bd_stream_type(codec_id);