Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: calculate and store DAR from user SAR

2018-12-10 Thread Tomas Härdin
mån 2018-12-10 klockan 10:17 +0100 skrev Paul B Mahol:
> > Signed-off-by: Paul B Mahol 
> ---
>  libavformat/mxfenc.c | 5 +
>  1 file changed, 5 insertions(+)
> 
> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> index 3549b4137d..006a9da1f8 100644
> --- a/libavformat/mxfenc.c
> +++ b/libavformat/mxfenc.c
> @@ -2368,6 +2368,11 @@ static int mxf_write_header(AVFormatContext *s)
>  sc->v_chroma_sub_sample = 2;
>  sc->color_siting = 0xFF;
>  
> +if (st->codecpar->sample_aspect_ratio.num && 
> st->codecpar->sample_aspect_ratio.den) {
> +sc->aspect_ratio = 
> av_mul_q(st->codecpar->sample_aspect_ratio,
> +av_make_q(st->codecpar->width, 
> st->codecpar->height));
> +}
> +

Nice, look OK of course

/Tomas
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avformat/mxfenc: calculate and store DAR from user SAR

2018-12-10 Thread Paul B Mahol
Signed-off-by: Paul B Mahol 
---
 libavformat/mxfenc.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index 3549b4137d..006a9da1f8 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -2368,6 +2368,11 @@ static int mxf_write_header(AVFormatContext *s)
 sc->v_chroma_sub_sample = 2;
 sc->color_siting = 0xFF;
 
+if (st->codecpar->sample_aspect_ratio.num && 
st->codecpar->sample_aspect_ratio.den) {
+sc->aspect_ratio = av_mul_q(st->codecpar->sample_aspect_ratio,
+av_make_q(st->codecpar->width, 
st->codecpar->height));
+}
+
 if (pix_desc) {
 sc->component_depth = pix_desc->comp[0].depth;
 sc->h_chroma_sub_sample = 1 << pix_desc->log2_chroma_w;
-- 
2.17.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: calculate and store DAR from user SAR

2018-12-09 Thread Nicolas George
Paul B Mahol (2018-12-09):
> >> +if (st->codecpar->sample_aspect_ratio.num &&
> >> st->codecpar->sample_aspect_ratio.den) {
> >> +av_reduce(>aspect_ratio.num, >aspect_ratio.den,
> >> +  st->codecpar->sample_aspect_ratio.num *
> >> st->codecpar->width,
> >> +  st->codecpar->sample_aspect_ratio.den *
> >> st->codecpar->height, INT_MAX);

> There is no av_reduce_q.

But there are av_mul_q() and av_div_q(), that would make these
computations much more readable, and are protected from overflow.

Regards,

-- 
  Nicolas George


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: calculate and store DAR from user SAR

2018-12-09 Thread Paul B Mahol
On 12/9/18, Tomas Härdin  wrote:
> fre 2018-12-07 klockan 21:30 +0100 skrev Paul B Mahol:
>> Fixes #5155
>>
>> > Signed-off-by: Paul B Mahol 
>> ---
>>  libavformat/mxfenc.c | 8 
>>  1 file changed, 8 insertions(+)
>>
>> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
>> index 3549b4137d..8f762c7eaf 100644
>> --- a/libavformat/mxfenc.c
>> +++ b/libavformat/mxfenc.c
>> @@ -2726,6 +2726,14 @@ static int mxf_write_packet(AVFormatContext *s,
>> AVPacket *pkt)
>>  }
>>  }
>>
>> +if (st->codecpar->sample_aspect_ratio.num &&
>> st->codecpar->sample_aspect_ratio.den) {
>> +av_reduce(>aspect_ratio.num, >aspect_ratio.den,
>> +  st->codecpar->sample_aspect_ratio.num *
>> st->codecpar->width,
>> +  st->codecpar->sample_aspect_ratio.den *
>> st->codecpar->height, INT_MAX);
>
> Can these multiplications ever overflow? av_reduce_q might be a better
> choice.

There is no av_reduce_q.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: calculate and store DAR from user SAR

2018-12-09 Thread Tomas Härdin
fre 2018-12-07 klockan 21:30 +0100 skrev Paul B Mahol:
> Fixes #5155
> 
> > Signed-off-by: Paul B Mahol 
> ---
>  libavformat/mxfenc.c | 8 
>  1 file changed, 8 insertions(+)
> 
> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> index 3549b4137d..8f762c7eaf 100644
> --- a/libavformat/mxfenc.c
> +++ b/libavformat/mxfenc.c
> @@ -2726,6 +2726,14 @@ static int mxf_write_packet(AVFormatContext *s, 
> AVPacket *pkt)
>  }
>  }
>  
> +if (st->codecpar->sample_aspect_ratio.num && 
> st->codecpar->sample_aspect_ratio.den) {
> +av_reduce(>aspect_ratio.num, >aspect_ratio.den,
> +  st->codecpar->sample_aspect_ratio.num * 
> st->codecpar->width,
> +  st->codecpar->sample_aspect_ratio.den * 
> st->codecpar->height, INT_MAX);

Can these multiplications ever overflow? av_reduce_q might be a better
choice.

/Tomas
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avformat/mxfenc: calculate and store DAR from user SAR

2018-12-07 Thread Paul B Mahol
Fixes #5155

Signed-off-by: Paul B Mahol 
---
 libavformat/mxfenc.c | 8 
 1 file changed, 8 insertions(+)

diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index 3549b4137d..8f762c7eaf 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -2726,6 +2726,14 @@ static int mxf_write_packet(AVFormatContext *s, AVPacket 
*pkt)
 }
 }
 
+if (st->codecpar->sample_aspect_ratio.num && 
st->codecpar->sample_aspect_ratio.den) {
+av_reduce(>aspect_ratio.num, >aspect_ratio.den,
+  st->codecpar->sample_aspect_ratio.num * st->codecpar->width,
+  st->codecpar->sample_aspect_ratio.den * 
st->codecpar->height, INT_MAX);
+} else if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
+av_reduce(>aspect_ratio.num, >aspect_ratio.den, 
st->codecpar->width, st->codecpar->height, INT_MAX);
+}
+
 if (st->codecpar->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
 if (!mxf_parse_mpeg2_frame(s, st, pkt, )) {
 av_log(s, AV_LOG_ERROR, "could not get mpeg2 profile and level\n");
-- 
2.17.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel