[FFmpeg-devel] [PATCH] avformat: add mca demuxer

liushuyu at aosc.io liushuyu at aosc.io
Wed Sep 2 02:54:01 EEST 2020


On 2020-09-01 17:21, Carl Eugen Hoyos wrote:
> Am Mi., 2. Sept. 2020 um 01:17 Uhr schrieb <liushuyu at aosc.io>:
>> 
>> On 2020-09-01 17:07, Carl Eugen Hoyos wrote:
>> > Am Mi., 2. Sept. 2020 um 00:58 Uhr schrieb <liushuyu at aosc.io>:
>> >
>> >> +static int probe(const AVProbeData *p)
>> >> +{
>> >> +    if (AV_RL32(p->buf) == MKTAG('M', 'A', 'D', 'P') &&
>> >> +        (AV_RL16(p->buf + 4) > 0x00 || AV_RL16(p->buf + 4) <= 0xff))
>> >> +        return AVPROBE_SCORE_MAX / 3 * 2;
>> >> +    return 0;
>> >
>> > At least add the version check from read_header(),
>> > you could also add the "sanity checks" you do
>> > there to this function.
> 
>> Thanks for the extremely quick response! I agree I can probably move 
>> the
>> version check to `probe()`.
> 
> You can copy it.
> 
>> However the other checks require reading far into the header, I don't
>> know if it's appropriate to do that in `probe()`.
> 
> You can check the size.
> 
> Carl Eugen

Thanks for the advice! However, I discovered I made a mistake that led 
to this issue: the version field should be a `uint16_t` instead of 
`int16_t`. Also, I actually checked the version in `probe()` with 
`AV_RL16(p->buf + 4) <= 0xff`.

For the other checks, I have referenced other demuxers that decode 
similar formats (namely `fsb` and `brstm`), and I found that they didn't 
do these checks in `probe` but rather in `read_header`.

I am very sorry for the confusion. I have fixed these issues in my local 
repository and I will send a new version of the patch if no further 
issues are discovered.

Thanks,
Zixing


More information about the ffmpeg-devel mailing list