On 03.12.2016 13:39, Michael Niedermayer wrote:
> On Sat, Dec 03, 2016 at 12:47:45PM +0100, Andreas Cadhalpun wrote:
>> On 03.12.2016 00:52, Michael Niedermayer wrote:
>>> @@ -400,16 +398,16 @@ static int ffm2_read_header(AVFormatContext *s)
>>>                  ret = AVERROR_INVALIDDATA;
>>>                  goto fail;
>>>              }
>>> -            codec->width = avio_rb16(pb);
>>> -            codec->height = avio_rb16(pb);
>>> -            ret = av_image_check_size(codec->width, codec->height, 0, s);
>>> +            codecpar->width = avio_rb16(pb);
>>> +            codecpar->height = avio_rb16(pb);
>>> +            ret = av_image_check_size(codecpar->width, codecpar->height, 
>>> 0, s);
>>>              if (ret < 0)
>>>                  goto fail;
>>>              avio_rb16(pb);
>>> -            codec->pix_fmt = avio_rb32(pb);
>>> -            if (!av_pix_fmt_desc_get(codec->pix_fmt)) {
>>> -                av_log(s, AV_LOG_ERROR, "Invalid pix fmt id: %d\n", 
>>> codec->pix_fmt);
>>> -                codec->pix_fmt = AV_PIX_FMT_NONE;
>>> +            codecpar->format = avio_rb32(pb);
>>
>> This change isn't as simple as it looks, because while the pix_fmt field 
>> exclusively
>> contains AVPixelFormat values, the format field is shared with 
>> AVSampleFormat.
>> Thus there now needs to be a check to ensure that codec_type is 
>> AVMEDIA_TYPE_VIDEO.
>>
>>> +            if (!av_pix_fmt_desc_get(codecpar->format)) {
>>> +                av_log(s, AV_LOG_ERROR, "Invalid pix fmt id: %d\n", 
>>> codecpar->format);
>>> +                codecpar->format = AV_PIX_FMT_NONE;
>>>                  goto fail;
>>>              }
>>>              avio_r8(pb);
>>
>>
> 
>>> @@ -610,15 +615,15 @@ static int ffm_read_header(AVFormatContext *s)
>>>                         codec->time_base.num, codec->time_base.den);
>>>                  goto fail;
>>>              }
>>> -            codec->width = avio_rb16(pb);
>>> -            codec->height = avio_rb16(pb);
>>> -            if (av_image_check_size(codec->width, codec->height, 0, s) < 0)
>>> +            codecpar->width = avio_rb16(pb);
>>> +            codecpar->height = avio_rb16(pb);
>>> +            if (av_image_check_size(codecpar->width, codecpar->height, 0, 
>>> s) < 0)
>>>                  goto fail;
>>>              avio_rb16(pb);
>>> -            codec->pix_fmt = avio_rb32(pb);
>>> -            if (!av_pix_fmt_desc_get(codec->pix_fmt)) {
>>> -                av_log(s, AV_LOG_ERROR, "Invalid pix fmt id: %d\n", 
>>> codec->pix_fmt);
>>> -                codec->pix_fmt = AV_PIX_FMT_NONE;
>>> +            codecpar->format = avio_rb32(pb);
>>
>> Same here.
> 
> not the same, this is under a codec_type check

Indeed.

Best regards,
Andreas

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

Reply via email to