Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-09-07 Thread Carl Eugen Hoyos
2018-09-06 22:43 GMT+02:00, Jacob Trimble :

[...]

Given the number of (non-trivial!) commits you have in FFmpeg, I
suggest you ask Michael for commit rights (and send him your
public key), you can then threaten to apply the patch yourself.

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-09-06 Thread Jacob Trimble
On Tue, Aug 28, 2018 at 12:56 PM Jacob Trimble  wrote:
>
> On Mon, Aug 20, 2018 at 11:39 AM Jacob Trimble  wrote:
> >
> > On Thu, Aug 9, 2018 at 9:14 AM Jacob Trimble  wrote:
> > >
> > > On Wed, Aug 1, 2018 at 1:46 PM Jacob Trimble  wrote:
> > > >
> > > > On Mon, Jul 23, 2018 at 2:01 PM Jacob Trimble  
> > > > wrote:
> > > > >
> > > > > On Thu, Jul 12, 2018 at 5:05 PM Jacob Trimble  
> > > > > wrote:
> > > > > >
> > > > > > Signed-off-by: Jacob Trimble 
> > > > > > ---
> > > > > >  libavformat/matroskadec.c | 43 
> > > > > > +--
> > > > > >  1 file changed, 32 insertions(+), 11 deletions(-)
> > > > > >
> > > > > > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> > > > > > index 1ded431b80..bfef329e59 100644
> > > > > > --- a/libavformat/matroskadec.c
> > > > > > +++ b/libavformat/matroskadec.c
> > > > > > @@ -2080,7 +2080,8 @@ static int 
> > > > > > matroska_parse_tracks(AVFormatContext *s)
> > > > > >  int extradata_offset = 0;
> > > > > >  uint32_t fourcc = 0;
> > > > > >  AVIOContext b;
> > > > > > -char* key_id_base64 = NULL;
> > > > > > +char* key_id = NULL;
> > > > > > +int key_id_size = 0;
> > > > > >  int bit_depth = -1;
> > > > > >
> > > > > >  /* Apply some sanity checks. */
> > > > > > @@ -2133,14 +2134,8 @@ static int 
> > > > > > matroska_parse_tracks(AVFormatContext *s)
> > > > > >  if (encodings[0].encryption.key_id.size > 0) {
> > > > > >  /* Save the encryption key id to be stored 
> > > > > > later as a
> > > > > > metadata tag. */
> > > > > > -const int b64_size = 
> > > > > > AV_BASE64_SIZE(encodings[0].encryption.key_id.size);
> > > > > > -key_id_base64 = av_malloc(b64_size);
> > > > > > -if (key_id_base64 == NULL)
> > > > > > -return AVERROR(ENOMEM);
> > > > > > -
> > > > > > -av_base64_encode(key_id_base64, b64_size,
> > > > > > - 
> > > > > > encodings[0].encryption.key_id.data,
> > > > > > - 
> > > > > > encodings[0].encryption.key_id.size);
> > > > > > +key_id = encodings[0].encryption.key_id.data;
> > > > > > +key_id_size = 
> > > > > > encodings[0].encryption.key_id.size;
> > > > > >  } else {
> > > > > >  encodings[0].scope = 0;
> > > > > >  av_log(matroska->ctx, AV_LOG_ERROR,
> > > > > > @@ -2198,14 +2193,40 @@ static int 
> > > > > > matroska_parse_tracks(AVFormatContext *s)
> > > > > >
> > > > > >  st = track->stream = avformat_new_stream(s, NULL);
> > > > > >  if (!st) {
> > > > > > -av_free(key_id_base64);
> > > > > >  return AVERROR(ENOMEM);
> > > > > >  }
> > > > > >
> > > > > > -if (key_id_base64) {
> > > > > > +if (key_id) {
> > > > > > +AVEncryptionInitInfo *init_info;
> > > > > > +uint8_t *side_data;
> > > > > > +size_t side_data_size;
> > > > > > +const int b64_size = AV_BASE64_SIZE(key_id_size);
> > > > > > +char *key_id_base64 = av_malloc(b64_size);
> > > > > > +if (!key_id_base64)
> > > > > > +return AVERROR(ENOMEM);
> > > > > > +av_base64_encode(key_id_base64, b64_size, key_id, 
> > > > > > key_id_size);
> > > > > > +
> > > > > >  /* export encryption key id as base64 metadata tag */
> > > > > >  av_dict_set(>metadata, "enc_key_id", 
> > > > > > key_id_base64, 0);
> > > > > >  av_freep(_id_base64);
> > > > > > +
> > > > > > +
> > > > > > +/* Convert the key ID to a generic encryption init 
> > > > > > info */
> > > > > > +init_info = av_encryption_init_info_alloc(/* 
> > > > > > system_id_size */ 0, /* num_key_ids */ 1,
> > > > > > +  /* 
> > > > > > key_id_size */ key_id_size, /* data_size */ 0);
> > > > > > +if (!init_info)
> > > > > > +return AVERROR(ENOMEM);
> > > > > > +memcpy(init_info->key_ids[0], key_id, key_id_size);
> > > > > > +side_data = 
> > > > > > av_encryption_init_info_add_side_data(init_info, _data_size);
> > > > > > +av_encryption_init_info_free(init_info);
> > > > > > +if (!side_data)
> > > > > > +return AVERROR(ENOMEM);
> > > > > > +ret = av_stream_add_side_data(st, 
> > > > > > AV_PKT_DATA_ENCRYPTION_INIT_INFO,
> > > > > > +  side_data, 
> > > > > > side_data_size);
> > > > > > +if (ret < 0) {
> > > > > > +av_free(side_data);
> > > > > > +return ret;
> > > > > > +}
> > > > > >  }
> > > > > >
> > > > > >  if 

Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-08-28 Thread Jacob Trimble
On Mon, Aug 20, 2018 at 11:39 AM Jacob Trimble  wrote:
>
> On Thu, Aug 9, 2018 at 9:14 AM Jacob Trimble  wrote:
> >
> > On Wed, Aug 1, 2018 at 1:46 PM Jacob Trimble  wrote:
> > >
> > > On Mon, Jul 23, 2018 at 2:01 PM Jacob Trimble  wrote:
> > > >
> > > > On Thu, Jul 12, 2018 at 5:05 PM Jacob Trimble  
> > > > wrote:
> > > > >
> > > > > Signed-off-by: Jacob Trimble 
> > > > > ---
> > > > >  libavformat/matroskadec.c | 43 
> > > > > +--
> > > > >  1 file changed, 32 insertions(+), 11 deletions(-)
> > > > >
> > > > > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> > > > > index 1ded431b80..bfef329e59 100644
> > > > > --- a/libavformat/matroskadec.c
> > > > > +++ b/libavformat/matroskadec.c
> > > > > @@ -2080,7 +2080,8 @@ static int 
> > > > > matroska_parse_tracks(AVFormatContext *s)
> > > > >  int extradata_offset = 0;
> > > > >  uint32_t fourcc = 0;
> > > > >  AVIOContext b;
> > > > > -char* key_id_base64 = NULL;
> > > > > +char* key_id = NULL;
> > > > > +int key_id_size = 0;
> > > > >  int bit_depth = -1;
> > > > >
> > > > >  /* Apply some sanity checks. */
> > > > > @@ -2133,14 +2134,8 @@ static int 
> > > > > matroska_parse_tracks(AVFormatContext *s)
> > > > >  if (encodings[0].encryption.key_id.size > 0) {
> > > > >  /* Save the encryption key id to be stored later 
> > > > > as a
> > > > > metadata tag. */
> > > > > -const int b64_size = 
> > > > > AV_BASE64_SIZE(encodings[0].encryption.key_id.size);
> > > > > -key_id_base64 = av_malloc(b64_size);
> > > > > -if (key_id_base64 == NULL)
> > > > > -return AVERROR(ENOMEM);
> > > > > -
> > > > > -av_base64_encode(key_id_base64, b64_size,
> > > > > - 
> > > > > encodings[0].encryption.key_id.data,
> > > > > - 
> > > > > encodings[0].encryption.key_id.size);
> > > > > +key_id = encodings[0].encryption.key_id.data;
> > > > > +key_id_size = 
> > > > > encodings[0].encryption.key_id.size;
> > > > >  } else {
> > > > >  encodings[0].scope = 0;
> > > > >  av_log(matroska->ctx, AV_LOG_ERROR,
> > > > > @@ -2198,14 +2193,40 @@ static int 
> > > > > matroska_parse_tracks(AVFormatContext *s)
> > > > >
> > > > >  st = track->stream = avformat_new_stream(s, NULL);
> > > > >  if (!st) {
> > > > > -av_free(key_id_base64);
> > > > >  return AVERROR(ENOMEM);
> > > > >  }
> > > > >
> > > > > -if (key_id_base64) {
> > > > > +if (key_id) {
> > > > > +AVEncryptionInitInfo *init_info;
> > > > > +uint8_t *side_data;
> > > > > +size_t side_data_size;
> > > > > +const int b64_size = AV_BASE64_SIZE(key_id_size);
> > > > > +char *key_id_base64 = av_malloc(b64_size);
> > > > > +if (!key_id_base64)
> > > > > +return AVERROR(ENOMEM);
> > > > > +av_base64_encode(key_id_base64, b64_size, key_id, 
> > > > > key_id_size);
> > > > > +
> > > > >  /* export encryption key id as base64 metadata tag */
> > > > >  av_dict_set(>metadata, "enc_key_id", key_id_base64, 
> > > > > 0);
> > > > >  av_freep(_id_base64);
> > > > > +
> > > > > +
> > > > > +/* Convert the key ID to a generic encryption init info 
> > > > > */
> > > > > +init_info = av_encryption_init_info_alloc(/* 
> > > > > system_id_size */ 0, /* num_key_ids */ 1,
> > > > > +  /* key_id_size 
> > > > > */ key_id_size, /* data_size */ 0);
> > > > > +if (!init_info)
> > > > > +return AVERROR(ENOMEM);
> > > > > +memcpy(init_info->key_ids[0], key_id, key_id_size);
> > > > > +side_data = 
> > > > > av_encryption_init_info_add_side_data(init_info, _data_size);
> > > > > +av_encryption_init_info_free(init_info);
> > > > > +if (!side_data)
> > > > > +return AVERROR(ENOMEM);
> > > > > +ret = av_stream_add_side_data(st, 
> > > > > AV_PKT_DATA_ENCRYPTION_INIT_INFO,
> > > > > +  side_data, side_data_size);
> > > > > +if (ret < 0) {
> > > > > +av_free(side_data);
> > > > > +return ret;
> > > > > +}
> > > > >  }
> > > > >
> > > > >  if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") &&
> > > > > --
> > > > > 2.18.0.203.gfac676dfb9-goog
> > > > >
> > > >
> > > > Ping.
> > >
> > > Ping.
> >
> > Ping (only 43 lines changed, in "review" for 28 days...)
>
> Ping.

Ping.  (initially sent 47 days ago, attached again for your 

Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-08-20 Thread Jacob Trimble
On Thu, Aug 9, 2018 at 9:14 AM Jacob Trimble  wrote:
>
> On Wed, Aug 1, 2018 at 1:46 PM Jacob Trimble  wrote:
> >
> > On Mon, Jul 23, 2018 at 2:01 PM Jacob Trimble  wrote:
> > >
> > > On Thu, Jul 12, 2018 at 5:05 PM Jacob Trimble  wrote:
> > > >
> > > > Signed-off-by: Jacob Trimble 
> > > > ---
> > > >  libavformat/matroskadec.c | 43 +--
> > > >  1 file changed, 32 insertions(+), 11 deletions(-)
> > > >
> > > > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> > > > index 1ded431b80..bfef329e59 100644
> > > > --- a/libavformat/matroskadec.c
> > > > +++ b/libavformat/matroskadec.c
> > > > @@ -2080,7 +2080,8 @@ static int matroska_parse_tracks(AVFormatContext 
> > > > *s)
> > > >  int extradata_offset = 0;
> > > >  uint32_t fourcc = 0;
> > > >  AVIOContext b;
> > > > -char* key_id_base64 = NULL;
> > > > +char* key_id = NULL;
> > > > +int key_id_size = 0;
> > > >  int bit_depth = -1;
> > > >
> > > >  /* Apply some sanity checks. */
> > > > @@ -2133,14 +2134,8 @@ static int matroska_parse_tracks(AVFormatContext 
> > > > *s)
> > > >  if (encodings[0].encryption.key_id.size > 0) {
> > > >  /* Save the encryption key id to be stored later 
> > > > as a
> > > > metadata tag. */
> > > > -const int b64_size = 
> > > > AV_BASE64_SIZE(encodings[0].encryption.key_id.size);
> > > > -key_id_base64 = av_malloc(b64_size);
> > > > -if (key_id_base64 == NULL)
> > > > -return AVERROR(ENOMEM);
> > > > -
> > > > -av_base64_encode(key_id_base64, b64_size,
> > > > - 
> > > > encodings[0].encryption.key_id.data,
> > > > - 
> > > > encodings[0].encryption.key_id.size);
> > > > +key_id = encodings[0].encryption.key_id.data;
> > > > +key_id_size = encodings[0].encryption.key_id.size;
> > > >  } else {
> > > >  encodings[0].scope = 0;
> > > >  av_log(matroska->ctx, AV_LOG_ERROR,
> > > > @@ -2198,14 +2193,40 @@ static int 
> > > > matroska_parse_tracks(AVFormatContext *s)
> > > >
> > > >  st = track->stream = avformat_new_stream(s, NULL);
> > > >  if (!st) {
> > > > -av_free(key_id_base64);
> > > >  return AVERROR(ENOMEM);
> > > >  }
> > > >
> > > > -if (key_id_base64) {
> > > > +if (key_id) {
> > > > +AVEncryptionInitInfo *init_info;
> > > > +uint8_t *side_data;
> > > > +size_t side_data_size;
> > > > +const int b64_size = AV_BASE64_SIZE(key_id_size);
> > > > +char *key_id_base64 = av_malloc(b64_size);
> > > > +if (!key_id_base64)
> > > > +return AVERROR(ENOMEM);
> > > > +av_base64_encode(key_id_base64, b64_size, key_id, 
> > > > key_id_size);
> > > > +
> > > >  /* export encryption key id as base64 metadata tag */
> > > >  av_dict_set(>metadata, "enc_key_id", key_id_base64, 0);
> > > >  av_freep(_id_base64);
> > > > +
> > > > +
> > > > +/* Convert the key ID to a generic encryption init info */
> > > > +init_info = av_encryption_init_info_alloc(/* 
> > > > system_id_size */ 0, /* num_key_ids */ 1,
> > > > +  /* key_id_size 
> > > > */ key_id_size, /* data_size */ 0);
> > > > +if (!init_info)
> > > > +return AVERROR(ENOMEM);
> > > > +memcpy(init_info->key_ids[0], key_id, key_id_size);
> > > > +side_data = 
> > > > av_encryption_init_info_add_side_data(init_info, _data_size);
> > > > +av_encryption_init_info_free(init_info);
> > > > +if (!side_data)
> > > > +return AVERROR(ENOMEM);
> > > > +ret = av_stream_add_side_data(st, 
> > > > AV_PKT_DATA_ENCRYPTION_INIT_INFO,
> > > > +  side_data, side_data_size);
> > > > +if (ret < 0) {
> > > > +av_free(side_data);
> > > > +return ret;
> > > > +}
> > > >  }
> > > >
> > > >  if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") &&
> > > > --
> > > > 2.18.0.203.gfac676dfb9-goog
> > > >
> > >
> > > Ping.
> >
> > Ping.
>
> Ping (only 43 lines changed, in "review" for 28 days...)

Ping.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-08-09 Thread Jacob Trimble
On Wed, Aug 1, 2018 at 1:46 PM Jacob Trimble  wrote:
>
> On Mon, Jul 23, 2018 at 2:01 PM Jacob Trimble  wrote:
> >
> > On Thu, Jul 12, 2018 at 5:05 PM Jacob Trimble  wrote:
> > >
> > > Signed-off-by: Jacob Trimble 
> > > ---
> > >  libavformat/matroskadec.c | 43 +--
> > >  1 file changed, 32 insertions(+), 11 deletions(-)
> > >
> > > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> > > index 1ded431b80..bfef329e59 100644
> > > --- a/libavformat/matroskadec.c
> > > +++ b/libavformat/matroskadec.c
> > > @@ -2080,7 +2080,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
> > >  int extradata_offset = 0;
> > >  uint32_t fourcc = 0;
> > >  AVIOContext b;
> > > -char* key_id_base64 = NULL;
> > > +char* key_id = NULL;
> > > +int key_id_size = 0;
> > >  int bit_depth = -1;
> > >
> > >  /* Apply some sanity checks. */
> > > @@ -2133,14 +2134,8 @@ static int matroska_parse_tracks(AVFormatContext 
> > > *s)
> > >  if (encodings[0].encryption.key_id.size > 0) {
> > >  /* Save the encryption key id to be stored later as a
> > > metadata tag. */
> > > -const int b64_size = 
> > > AV_BASE64_SIZE(encodings[0].encryption.key_id.size);
> > > -key_id_base64 = av_malloc(b64_size);
> > > -if (key_id_base64 == NULL)
> > > -return AVERROR(ENOMEM);
> > > -
> > > -av_base64_encode(key_id_base64, b64_size,
> > > - encodings[0].encryption.key_id.data,
> > > - 
> > > encodings[0].encryption.key_id.size);
> > > +key_id = encodings[0].encryption.key_id.data;
> > > +key_id_size = encodings[0].encryption.key_id.size;
> > >  } else {
> > >  encodings[0].scope = 0;
> > >  av_log(matroska->ctx, AV_LOG_ERROR,
> > > @@ -2198,14 +2193,40 @@ static int matroska_parse_tracks(AVFormatContext 
> > > *s)
> > >
> > >  st = track->stream = avformat_new_stream(s, NULL);
> > >  if (!st) {
> > > -av_free(key_id_base64);
> > >  return AVERROR(ENOMEM);
> > >  }
> > >
> > > -if (key_id_base64) {
> > > +if (key_id) {
> > > +AVEncryptionInitInfo *init_info;
> > > +uint8_t *side_data;
> > > +size_t side_data_size;
> > > +const int b64_size = AV_BASE64_SIZE(key_id_size);
> > > +char *key_id_base64 = av_malloc(b64_size);
> > > +if (!key_id_base64)
> > > +return AVERROR(ENOMEM);
> > > +av_base64_encode(key_id_base64, b64_size, key_id, 
> > > key_id_size);
> > > +
> > >  /* export encryption key id as base64 metadata tag */
> > >  av_dict_set(>metadata, "enc_key_id", key_id_base64, 0);
> > >  av_freep(_id_base64);
> > > +
> > > +
> > > +/* Convert the key ID to a generic encryption init info */
> > > +init_info = av_encryption_init_info_alloc(/* system_id_size 
> > > */ 0, /* num_key_ids */ 1,
> > > +  /* key_id_size */ 
> > > key_id_size, /* data_size */ 0);
> > > +if (!init_info)
> > > +return AVERROR(ENOMEM);
> > > +memcpy(init_info->key_ids[0], key_id, key_id_size);
> > > +side_data = av_encryption_init_info_add_side_data(init_info, 
> > > _data_size);
> > > +av_encryption_init_info_free(init_info);
> > > +if (!side_data)
> > > +return AVERROR(ENOMEM);
> > > +ret = av_stream_add_side_data(st, 
> > > AV_PKT_DATA_ENCRYPTION_INIT_INFO,
> > > +  side_data, side_data_size);
> > > +if (ret < 0) {
> > > +av_free(side_data);
> > > +return ret;
> > > +}
> > >  }
> > >
> > >  if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") &&
> > > --
> > > 2.18.0.203.gfac676dfb9-goog
> > >
> >
> > Ping.
>
> Ping.

Ping (only 43 lines changed, in "review" for 28 days...)
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-08-01 Thread Jacob Trimble
On Mon, Jul 23, 2018 at 2:01 PM Jacob Trimble  wrote:
>
> On Thu, Jul 12, 2018 at 5:05 PM Jacob Trimble  wrote:
> >
> > Signed-off-by: Jacob Trimble 
> > ---
> >  libavformat/matroskadec.c | 43 +--
> >  1 file changed, 32 insertions(+), 11 deletions(-)
> >
> > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> > index 1ded431b80..bfef329e59 100644
> > --- a/libavformat/matroskadec.c
> > +++ b/libavformat/matroskadec.c
> > @@ -2080,7 +2080,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
> >  int extradata_offset = 0;
> >  uint32_t fourcc = 0;
> >  AVIOContext b;
> > -char* key_id_base64 = NULL;
> > +char* key_id = NULL;
> > +int key_id_size = 0;
> >  int bit_depth = -1;
> >
> >  /* Apply some sanity checks. */
> > @@ -2133,14 +2134,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
> >  if (encodings[0].encryption.key_id.size > 0) {
> >  /* Save the encryption key id to be stored later as a
> > metadata tag. */
> > -const int b64_size = 
> > AV_BASE64_SIZE(encodings[0].encryption.key_id.size);
> > -key_id_base64 = av_malloc(b64_size);
> > -if (key_id_base64 == NULL)
> > -return AVERROR(ENOMEM);
> > -
> > -av_base64_encode(key_id_base64, b64_size,
> > - encodings[0].encryption.key_id.data,
> > - encodings[0].encryption.key_id.size);
> > +key_id = encodings[0].encryption.key_id.data;
> > +key_id_size = encodings[0].encryption.key_id.size;
> >  } else {
> >  encodings[0].scope = 0;
> >  av_log(matroska->ctx, AV_LOG_ERROR,
> > @@ -2198,14 +2193,40 @@ static int matroska_parse_tracks(AVFormatContext *s)
> >
> >  st = track->stream = avformat_new_stream(s, NULL);
> >  if (!st) {
> > -av_free(key_id_base64);
> >  return AVERROR(ENOMEM);
> >  }
> >
> > -if (key_id_base64) {
> > +if (key_id) {
> > +AVEncryptionInitInfo *init_info;
> > +uint8_t *side_data;
> > +size_t side_data_size;
> > +const int b64_size = AV_BASE64_SIZE(key_id_size);
> > +char *key_id_base64 = av_malloc(b64_size);
> > +if (!key_id_base64)
> > +return AVERROR(ENOMEM);
> > +av_base64_encode(key_id_base64, b64_size, key_id, key_id_size);
> > +
> >  /* export encryption key id as base64 metadata tag */
> >  av_dict_set(>metadata, "enc_key_id", key_id_base64, 0);
> >  av_freep(_id_base64);
> > +
> > +
> > +/* Convert the key ID to a generic encryption init info */
> > +init_info = av_encryption_init_info_alloc(/* system_id_size */ 
> > 0, /* num_key_ids */ 1,
> > +  /* key_id_size */ 
> > key_id_size, /* data_size */ 0);
> > +if (!init_info)
> > +return AVERROR(ENOMEM);
> > +memcpy(init_info->key_ids[0], key_id, key_id_size);
> > +side_data = av_encryption_init_info_add_side_data(init_info, 
> > _data_size);
> > +av_encryption_init_info_free(init_info);
> > +if (!side_data)
> > +return AVERROR(ENOMEM);
> > +ret = av_stream_add_side_data(st, 
> > AV_PKT_DATA_ENCRYPTION_INIT_INFO,
> > +  side_data, side_data_size);
> > +if (ret < 0) {
> > +av_free(side_data);
> > +return ret;
> > +}
> >  }
> >
> >  if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") &&
> > --
> > 2.18.0.203.gfac676dfb9-goog
> >
>
> Ping.

Ping.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-07-23 Thread Jacob Trimble
On Thu, Jul 12, 2018 at 5:05 PM Jacob Trimble  wrote:
>
> Signed-off-by: Jacob Trimble 
> ---
>  libavformat/matroskadec.c | 43 +--
>  1 file changed, 32 insertions(+), 11 deletions(-)
>
> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> index 1ded431b80..bfef329e59 100644
> --- a/libavformat/matroskadec.c
> +++ b/libavformat/matroskadec.c
> @@ -2080,7 +2080,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
>  int extradata_offset = 0;
>  uint32_t fourcc = 0;
>  AVIOContext b;
> -char* key_id_base64 = NULL;
> +char* key_id = NULL;
> +int key_id_size = 0;
>  int bit_depth = -1;
>
>  /* Apply some sanity checks. */
> @@ -2133,14 +2134,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
>  if (encodings[0].encryption.key_id.size > 0) {
>  /* Save the encryption key id to be stored later as a
> metadata tag. */
> -const int b64_size = 
> AV_BASE64_SIZE(encodings[0].encryption.key_id.size);
> -key_id_base64 = av_malloc(b64_size);
> -if (key_id_base64 == NULL)
> -return AVERROR(ENOMEM);
> -
> -av_base64_encode(key_id_base64, b64_size,
> - encodings[0].encryption.key_id.data,
> - encodings[0].encryption.key_id.size);
> +key_id = encodings[0].encryption.key_id.data;
> +key_id_size = encodings[0].encryption.key_id.size;
>  } else {
>  encodings[0].scope = 0;
>  av_log(matroska->ctx, AV_LOG_ERROR,
> @@ -2198,14 +2193,40 @@ static int matroska_parse_tracks(AVFormatContext *s)
>
>  st = track->stream = avformat_new_stream(s, NULL);
>  if (!st) {
> -av_free(key_id_base64);
>  return AVERROR(ENOMEM);
>  }
>
> -if (key_id_base64) {
> +if (key_id) {
> +AVEncryptionInitInfo *init_info;
> +uint8_t *side_data;
> +size_t side_data_size;
> +const int b64_size = AV_BASE64_SIZE(key_id_size);
> +char *key_id_base64 = av_malloc(b64_size);
> +if (!key_id_base64)
> +return AVERROR(ENOMEM);
> +av_base64_encode(key_id_base64, b64_size, key_id, key_id_size);
> +
>  /* export encryption key id as base64 metadata tag */
>  av_dict_set(>metadata, "enc_key_id", key_id_base64, 0);
>  av_freep(_id_base64);
> +
> +
> +/* Convert the key ID to a generic encryption init info */
> +init_info = av_encryption_init_info_alloc(/* system_id_size */ 
> 0, /* num_key_ids */ 1,
> +  /* key_id_size */ 
> key_id_size, /* data_size */ 0);
> +if (!init_info)
> +return AVERROR(ENOMEM);
> +memcpy(init_info->key_ids[0], key_id, key_id_size);
> +side_data = av_encryption_init_info_add_side_data(init_info, 
> _data_size);
> +av_encryption_init_info_free(init_info);
> +if (!side_data)
> +return AVERROR(ENOMEM);
> +ret = av_stream_add_side_data(st, 
> AV_PKT_DATA_ENCRYPTION_INIT_INFO,
> +  side_data, side_data_size);
> +if (ret < 0) {
> +av_free(side_data);
> +return ret;
> +}
>  }
>
>  if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") &&
> --
> 2.18.0.203.gfac676dfb9-goog
>

Ping.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avformat/matroskadec: Parse encryption init info from streams.

2018-07-12 Thread Jacob Trimble
Signed-off-by: Jacob Trimble 
---
 libavformat/matroskadec.c | 43 +--
 1 file changed, 32 insertions(+), 11 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 1ded431b80..bfef329e59 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -2080,7 +2080,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
 int extradata_offset = 0;
 uint32_t fourcc = 0;
 AVIOContext b;
-char* key_id_base64 = NULL;
+char* key_id = NULL;
+int key_id_size = 0;
 int bit_depth = -1;
 
 /* Apply some sanity checks. */
@@ -2133,14 +2134,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
 if (encodings[0].encryption.key_id.size > 0) {
 /* Save the encryption key id to be stored later as a
metadata tag. */
-const int b64_size = 
AV_BASE64_SIZE(encodings[0].encryption.key_id.size);
-key_id_base64 = av_malloc(b64_size);
-if (key_id_base64 == NULL)
-return AVERROR(ENOMEM);
-
-av_base64_encode(key_id_base64, b64_size,
- encodings[0].encryption.key_id.data,
- encodings[0].encryption.key_id.size);
+key_id = encodings[0].encryption.key_id.data;
+key_id_size = encodings[0].encryption.key_id.size;
 } else {
 encodings[0].scope = 0;
 av_log(matroska->ctx, AV_LOG_ERROR,
@@ -2198,14 +2193,40 @@ static int matroska_parse_tracks(AVFormatContext *s)
 
 st = track->stream = avformat_new_stream(s, NULL);
 if (!st) {
-av_free(key_id_base64);
 return AVERROR(ENOMEM);
 }
 
-if (key_id_base64) {
+if (key_id) {
+AVEncryptionInitInfo *init_info;
+uint8_t *side_data;
+size_t side_data_size;
+const int b64_size = AV_BASE64_SIZE(key_id_size);
+char *key_id_base64 = av_malloc(b64_size);
+if (!key_id_base64)
+return AVERROR(ENOMEM);
+av_base64_encode(key_id_base64, b64_size, key_id, key_id_size);
+
 /* export encryption key id as base64 metadata tag */
 av_dict_set(>metadata, "enc_key_id", key_id_base64, 0);
 av_freep(_id_base64);
+
+
+/* Convert the key ID to a generic encryption init info */
+init_info = av_encryption_init_info_alloc(/* system_id_size */ 0, 
/* num_key_ids */ 1,
+  /* key_id_size */ 
key_id_size, /* data_size */ 0);
+if (!init_info)
+return AVERROR(ENOMEM);
+memcpy(init_info->key_ids[0], key_id, key_id_size);
+side_data = av_encryption_init_info_add_side_data(init_info, 
_data_size);
+av_encryption_init_info_free(init_info);
+if (!side_data)
+return AVERROR(ENOMEM);
+ret = av_stream_add_side_data(st, AV_PKT_DATA_ENCRYPTION_INIT_INFO,
+  side_data, side_data_size);
+if (ret < 0) {
+av_free(side_data);
+return ret;
+}
 }
 
 if (!strcmp(track->codec_id, "V_MS/VFW/FOURCC") &&
-- 
2.18.0.203.gfac676dfb9-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel