> > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> On Behalf Of ????? > ????????? > Sent: Friday, June 4, 2021 9:27 AM > To: ffmpeg-devel@ffmpeg.org > Subject: Re: [FFmpeg-devel] [PATCH] libavformat/movenc: Support encryption of > H265 stream in AnnexB format > > > Ping. > > This change is quite simple and should be quick to review. Feel free to ask > any questions
Looks good to me Eran > пн, 22 мар. 2021 г. в 11:29, Вадим Бездушный <vadim.bezd...@gmail.com>: > > > Ping. > > > > чт, 11 мар. 2021 г. в 10:14, Вадим Бездушный <vadim.bezd...@gmail.com>: > > > >> Ping. > >> > >> вт, 9 мар. 2021 г. в 00:05, Вадим Бездушный <vadim.bezd...@gmail.com>: > >> > >>> Ping. > >>> > >>> This change is quite simple and should be quick to review. Feel free > >>> to ask any questions > >>> > >>> On Mon, 1 Mar 2021, 14:54 Vadym Bezdushnyi, > >>> <vadim.bezd...@gmail.com> > >>> wrote: > >>> > >>>> Add an ability to accept H265 AnnexB stream at encryption similar > >>>> to how its done for H264 AnnexB stream. > >>>> > >>>> Steps to test: > >>>> > >>>> 1. Create h265 test files - mp4 and h265 AnnexB streams: > >>>> ffmpeg -f lavfi -i testsrc=duration=10:size=640x480:rate=30 -c:v > >>>> hevc > >>>> input_h265.mp4 > >>>> ffmpeg -f lavfi -i testsrc=duration=10:size=640x480:rate=30 -c:v > >>>> hevc -bsf:v hevc_mp4toannexb input_h265.h265 > >>>> > >>>> 2. Encrypt and decrypt files. Put appropriate input file name here: > >>>> input_h265.mp4 or input_h265.h265 > >>>> ffmpeg -i input_h265.h265 -vcodec copy -acodec copy > >>>> -encryption_scheme cenc-aes-ctr \ -encryption_key > >>>> 00000000000000000000000000000000 -encryption_kid > >>>> 00000000000000000000000000000000 \ > >>>> encrypted_h265.mp4 > >>>> ffplay -i encrypted_h265.mp4 -decryption_key > >>>> 00000000000000000000000000000000 > >>>> > >>>> Signed-off-by: Vadym Bezdushnyi <vadim.bezd...@gmail.com> > >>>> --- > >>>> libavformat/movenc.c | 16 ++++++++++++++-- > >>>> 1 file changed, 14 insertions(+), 2 deletions(-) > >>>> > >>>> diff --git a/libavformat/movenc.c b/libavformat/movenc.c index > >>>> 545b0885ae..0433968cd2 100644 > >>>> --- a/libavformat/movenc.c > >>>> +++ b/libavformat/movenc.c > >>>> @@ -5685,7 +5685,15 @@ int ff_mov_write_packet(AVFormatContext *s, > >>>> AVPacket *pkt) > >>>> return ret; > >>>> avio_write(pb, reformatted_data, size); > >>>> } else { > >>>> - size = ff_hevc_annexb2mp4(pb, pkt->data, pkt->size, 0, > >>>> NULL); > >>>> + if (trk->cenc.aes_ctr) { > >>>> + size = ff_mov_cenc_avc_parse_nal_units(&trk->cenc, > >>>> + pb, > >>>> pkt->data, size); > >>>> + if (size < 0) { > >>>> + ret = size; > >>>> + goto err; > >>>> + } > >>>> + } else { > >>>> + size = ff_hevc_annexb2mp4(pb, pkt->data, > >>>> + pkt->size, 0, > >>>> NULL); > >>>> + } > >>>> } > >>>> } else if (par->codec_id == AV_CODEC_ID_AV1) { > >>>> if (trk->hint_track >= 0 && trk->hint_track < > >>>> mov->nb_streams) { @@ -5727,6 +5735,9 @@ int > >>>> ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) > >>>> if (par->codec_id == AV_CODEC_ID_H264 && > >>>> par->extradata_size > 4) { > >>>> int nal_size_length = (par->extradata[4] & 0x3) + 1; > >>>> ret = ff_mov_cenc_avc_write_nal_units(s, > >>>> &trk->cenc, nal_size_length, pb, pkt->data, size); > >>>> + } else if(par->codec_id == AV_CODEC_ID_HEVC && > >>>> par->extradata_size > 21) { > >>>> + int nal_size_length = (par->extradata[21] & 0x3) + 1; > >>>> + ret = ff_mov_cenc_avc_write_nal_units(s, > >>>> + &trk->cenc, > >>>> nal_size_length, pb, pkt->data, size); > >>>> } else { > >>>> ret = ff_mov_cenc_write_packet(&trk->cenc, pb, > >>>> pkt->data, size); > >>>> } > >>>> @@ -6711,7 +6722,8 @@ static int mov_init(AVFormatContext *s) > >>>> > >>>> if (mov->encryption_scheme == MOV_ENC_CENC_AES_CTR) { > >>>> ret = ff_mov_cenc_init(&track->cenc, mov->encryption_key, > >>>> - track->par->codec_id == AV_CODEC_ID_H264, s->flags & > >>>> AVFMT_FLAG_BITEXACT); > >>>> + (track->par->codec_id == AV_CODEC_ID_H264 || > >>>> track->par->codec_id == AV_CODEC_ID_HEVC), > >>>> + s->flags & AVFMT_FLAG_BITEXACT); > >>>> if (ret) > >>>> return ret; > >>>> } > >>>> -- > >>>> 2.30.0 > >>>> > >>>> > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fffmpeg.org%2Fmailman%2Flistinfo%2Fffmpeg-devel&data=04%7C01%7C%7C724744e3bfed40c5995508d92725c852%7C0c503748de3f4e2597e26819d53a42b6%7C1%7C1%7C637583865496478909%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=l2rO0HEmDBCJ8RdN3keR0oGE1IZub2TZeN4o%2FdJKcfM%3D&reserved=0 > > 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".