Ping. This change is quite simple and should be quick to review. Feel free to ask any questions
пн, 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://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".