ping. Anyone could review this ? > On Sep 18, 2021, at 20:40, Sun Zhenliang <hisunzhenli...@outlook.com> wrote: > > Ping. > 在 2021年9月17日 +0800 15:28,Sun Zhenliang <hisunzhenli...@outlook.com>,写道: >> 在 2021年9月17日 +0800 14:49,Paul B Mahol <one...@gmail.com>,写道: >>> Are stereo files available somewhere? Known way to encode? >> Here is the stereo file, >> https://github.com/HiSunzhenliang/patch/blob/main/ffmpeg/avformat-amr-Return-PATCHWELCOME-on-stereo-files/stereo.amr-nb >> >> It’s made by our internal amr codec tool which followed 3GPP specifications. >> >> FFmpeg did not recognize this audio before. With this patch, it will detect >> correctly and >> show patches welcome. >>> >>> On Fri, Sep 17, 2021 at 4:14 AM Sun Zhenliang <hisunzhenli...@outlook.com> >>> wrote: >>> >>>> Ping. >>>> >>>> Anyone could review this patch? >>>> >>>> Thx. >>>> 在 2021年9月16日 +0800 11:24,sunzhenliang <hisunzhenli...@outlook.com>,写道: >>>>> Signed-off-by: sunzhenliang <hisunzhenli...@outlook.com> >>>>> --- >>>>> libavformat/amr.c | 22 ++++++++++++++++++---- >>>>> 1 file changed, 18 insertions(+), 4 deletions(-) >>>>> >>>>> diff --git a/libavformat/amr.c b/libavformat/amr.c >>>>> index 836b276fd5..2762010ebe 100644 >>>>> --- a/libavformat/amr.c >>>>> +++ b/libavformat/amr.c >>>>> @@ -36,8 +36,10 @@ typedef struct { >>>>> uint64_t block_count; >>>>> } AMRContext; >>>>> >>>>> -static const char AMR_header[] = "#!AMR\n"; >>>>> -static const char AMRWB_header[] = "#!AMR-WB\n"; >>>>> +static const char AMR_header[] = "#!AMR\n"; >>>>> +static const char AMR_MC_header[] = "#!AMR_MC1.0\n"; >>>>> +static const char AMRWB_header[] = "#!AMR-WB\n"; >>>>> +static const char AMRWB_MC_header[] = "#!AMR-WB_MC1.0\n"; >>>>> >>>>> static const uint8_t amrnb_packed_size[16] = { >>>>> 13, 14, 16, 18, 20, 21, 27, 32, 6, 1, 1, 1, 1, 1, 1, 1 >>>>> @@ -82,7 +84,7 @@ static int amr_read_header(AVFormatContext *s) >>>>> { >>>>> AVIOContext *pb = s->pb; >>>>> AVStream *st; >>>>> - uint8_t header[9]; >>>>> + uint8_t header[15]; >>>>> >>>>> if (avio_read(pb, header, 6) != 6) >>>>> return AVERROR_INVALIDDATA; >>>>> @@ -94,7 +96,19 @@ static int amr_read_header(AVFormatContext *s) >>>>> if (avio_read(pb, header + 6, 3) != 3) >>>>> return AVERROR_INVALIDDATA; >>>>> if (memcmp(header, AMRWB_header, 9)) { >>>>> - return -1; >>>>> + if (avio_read(pb, header + 6 + 3, 3) != 3) >>>>> + return AVERROR_INVALIDDATA; >>>>> + if (memcmp(header, AMR_MC_header, 12)) { >>>>> + if (avio_read(pb, header + 6 + 3 + 3, 3) != 3) >>>>> + return AVERROR_INVALIDDATA; >>>>> + if (memcmp(header, AMRWB_MC_header, 15)) { >>>>> + return -1; >>>>> + } >>>>> + avpriv_report_missing_feature(s, "multi-channel AMRWB"); >>>>> + return AVERROR_PATCHWELCOME; >>>>> + } >>>>> + avpriv_report_missing_feature(s, "multi-channel AMR"); >>>>> + return AVERROR_PATCHWELCOME; >>>>> } >>>>> >>>>> st->codecpar->codec_tag = MKTAG('s', 'a', 'w', 'b'); >>>>> -- >>>>> 2.25.1 >>>>> >>>> _______________________________________________ >>>> ffmpeg-devel mailing list >>>> ffmpeg-devel@ffmpeg.org >>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>>> >>>> To unsubscribe, visit link above, or email >>>> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". >>>> >>> _______________________________________________ >>> ffmpeg-devel mailing list >>> ffmpeg-devel@ffmpeg.org >>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >>> >>> To unsubscribe, visit link above, or email >>> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".