add a new patch. https://patchwork.ffmpeg.org/project/ffmpeg/patch/sl2pr06mb3052edb34939522d15655affc1...@sl2pr06mb3052.apcprd06.prod.outlook.com/
Thanks and regards, SunZhenliang ________________________________ 发件人: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> 代表 Gyan Doshi <ffm...@gyani.pro> 发送时间: 2020年12月10日 14:31 收件人: ffmpeg-devel@ffmpeg.org <ffmpeg-devel@ffmpeg.org> 主题: Re: [FFmpeg-devel] 回复: 回复: [PATCH] libavformat/movenc: add support for HEVC in .3gp Patchwork hasn't picked it up. Send without non-Latin characters, and as plaintext encoding, same as your original patch. Regards, Gyan On 10-12-2020 11:41 am, Sun Zhenliang wrote: > In 3GPP TS 26.244 V16.1.0 (2020-09) 5.3 and 5.4, there was no clear > explanation of HEVC bands. But I think it's fine to use h264 bands, due to > 5.5 in 3GPP TS 26.244. > > these modifications should be enough. > > diff --git a/libavformat/movenc.c b/libavformat/movenc.c > index 8715cb6e5c..2dd8c8789d 100644 > --- a/libavformat/movenc.c > +++ b/libavformat/movenc.c > @@ -4923,7 +4923,7 @@ static int mov_write_mdat_tag(AVIOContext *pb, > MOVMuxContext *mov) > } > > static void mov_write_ftyp_tag_internal(AVIOContext *pb, AVFormatContext *s, > - int has_h264, int has_video, int > write_minor) > + int has_h26_, int has_video, int > write_minor) > { > MOVMuxContext *mov = s->priv_data; > int minor = 0x200; > @@ -4931,11 +4931,11 @@ static void mov_write_ftyp_tag_internal(AVIOContext > *pb, AVFormatContext *s, > if (mov->major_brand && strlen(mov->major_brand) >= 4) > ffio_wfourcc(pb, mov->major_brand); > else if (mov->mode == MODE_3GP) { > - ffio_wfourcc(pb, has_h264 ? "3gp6" : "3gp4"); > - minor = has_h264 ? 0x100 : 0x200; > + ffio_wfourcc(pb, has_h26_ ? "3gp6" : "3gp4"); > + minor = has_h26_ ? 0x100 : 0x200; > } else if (mov->mode & MODE_3G2) { > - ffio_wfourcc(pb, has_h264 ? "3g2b" : "3g2a"); > - minor = has_h264 ? 0x20000 : 0x10000; > + ffio_wfourcc(pb, has_h26_ ? "3g2b" : "3g2a"); > + minor = has_h26_ ? 0x20000 : 0x10000; > } else if (mov->mode == MODE_PSP) > ffio_wfourcc(pb, "MSNV"); > else if (mov->mode == MODE_MP4 && mov->flags & FF_MOV_FLAG_FRAGMENT && > @@ -4964,7 +4964,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, > AVFormatContext *s) > { > MOVMuxContext *mov = s->priv_data; > int64_t pos = avio_tell(pb); > - int has_h264 = 0, has_av1 = 0, has_video = 0; > + int has_h264 = 0, has_h265 = 0, has_av1 = 0, has_video = 0; > int i; > > for (i = 0; i < s->nb_streams; i++) { > @@ -4975,6 +4975,8 @@ static int mov_write_ftyp_tag(AVIOContext *pb, > AVFormatContext *s) > has_video = 1; > if (st->codecpar->codec_id == AV_CODEC_ID_H264) > has_h264 = 1; > + if (st->codecpar->codec_id == AV_CODEC_ID_H265) > + has_h265 = 1; > if (st->codecpar->codec_id == AV_CODEC_ID_AV1) > has_av1 = 1; > } > @@ -4983,9 +4985,9 @@ static int mov_write_ftyp_tag(AVIOContext *pb, > AVFormatContext *s) > ffio_wfourcc(pb, "ftyp"); > > // Write major brand > - mov_write_ftyp_tag_internal(pb, s, has_h264, has_video, 1); > + mov_write_ftyp_tag_internal(pb, s, has_h264 || has_h265 , has_video, 1); > // Write the major brand as the first compatible brand as well > - mov_write_ftyp_tag_internal(pb, s, has_h264, has_video, 0); > + mov_write_ftyp_tag_internal(pb, s, has_h264 || has_h265, has_video, 0); > > // Write compatible brands, ensuring that we don't write the major brand > as a > // compatible brand a second time. > @@ -5018,6 +5020,8 @@ static int mov_write_ftyp_tag(AVIOContext *pb, > AVFormatContext *s) > ffio_wfourcc(pb, "iso2"); > if (has_h264) > ffio_wfourcc(pb, "avc1"); > + if (has_h265) > + ffio_wfourcc(pb, "hev1"); > } > } > > > > diff --git a/libavformat/movenc.c b/libavformat/movenc.c > index 18fa3f9b5e..8715cb6e5c 100644 > --- a/libavformat/movenc.c > +++ b/libavformat/movenc.c > @@ -7103,6 +7103,7 @@ static int mov_check_bitstream(struct AVFormatContext > *s, const AVPacket *pkt) > static const AVCodecTag codec_3gp_tags[] = { > { AV_CODEC_ID_H263, MKTAG('s','2','6','3') }, > { AV_CODEC_ID_H264, MKTAG('a','v','c','1') }, > + { AV_CODEC_ID_HEVC, MKTAG('h','e','v','1') }, > { AV_CODEC_ID_MPEG4, MKTAG('m','p','4','v') }, > { AV_CODEC_ID_AAC, MKTAG('m','p','4','a') }, > { AV_CODEC_ID_AMR_NB, MKTAG('s','a','m','r') }, > > Regards, > SunZhenliang > > ________________________________ > 发件人: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> 代表 Gyan Doshi > <ffm...@gyani.pro> > 发送时间: 2020年12月10日 00:06 > 收件人: ffmpeg-devel@ffmpeg.org <ffmpeg-devel@ffmpeg.org> > 主题: Re: [FFmpeg-devel] 回复: [PATCH] libavformat/movenc: add support for HEVC > in .3gp > > > > On 09-12-2020 07:33 pm, Sun Zhenliang wrote: >> 1) 3GPP TS 26.244 V16.1.0 (2020-09) and ISO/IEC 14496-15: "Information >> technology �C Coding of audio-visual objects �C Part 15: Carriage of NAL >> unit structured video in the ISO base media file format" states HEVC's >> sample entry in 3GPP file format. I think these documentations says we can >> store hevc in 3gp files. > Ok. How should the major and minor brands be set? See the function > mov_write_ftyp_tag_internal(), starting lines 4933. There might be some > modifications for HEVC as well. > > >> 2) I just found that I could encode hevc into 3gp files by adding tags to >> 3GP tag list. By just adding one line, ffmpeg could make 3gp file with hevc >> and ffplay can also play it correctly. That's enough for me. Because I >> don't set parameters very much, I didn't find any parameter restrictions. > ffplay / libavformat is not very picky and won't be the common player > consuming these files once this is merged. > > > Regards, > Gyan > _______________________________________________ > 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".