On 2021-06-29 12:25, Вадим Бездушный wrote:
Ping.
This patch will allow to encrypt streams, which were produced by
hevc_mp4toannexb or movenc muxer.
Currently, encryption doesn't work for HEVC AnnexB. The resulting mp4 is
not written correctly and can't be played.
The patch is quite small and it contains tests, which will allow
checking encryption before and after.
Feel free to ask any questions.

Eran LGTMed it on the 4th of June and FATE passes on Patchwork, so I'll push this in a few hours if no one objects.

Regards,
Gyan


чт, 17 июн. 2021 г. в 11:32, Вадим Бездушный <vadim.bezd...@gmail.com>:

Ping.
This patch will allow to encrypt streams, which were produced by
hevc_mp4toannexb or movenc muxer.
Currently, encryption doesn't work for HEVC AnnexB. The resulting mp4 is
not written correctly and can't be played.
The patch is quite small and it contains tests, which will allow
checking encryption before and after.
Feel free to ask any questions.

пт, 4 июн. 2021 г. в 11:08, Eran Kornblau <eran.kornb...@kaltura.com>:

-----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&amp;data=04%7C01%7C%7C724744e3bfed40c5995508d92725c852%7C0c503748de3f4e2597e26819d53a42b6%7C1%7C1%7C637583865496478909%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=l2rO0HEmDBCJ8RdN3keR0oGE1IZub2TZeN4o%2FdJKcfM%3D&amp;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".

_______________________________________________
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".

Reply via email to