Skip to content

Handle Key Rotation with Zero KID Placeholder [Feature request]  #1602

@bencooper1

Description

@bencooper1

Describe the feature

I found out that some manifest stream using key rotation with Zero KID placeholder (no pssh or kid information in mpd file and init segments) and inputstream.adaptive can not extract kid/pssh. With the same stream on desktop browser and using eme logger, I still able to get "quite long pssh" value and tried to decode it using Axinom Portal and saw that three is still kid value different than 0.

If it is possible to process this kind of MPD stream with inputstream.adaptive would be great! Thank you all!

2024-07-20 16:52:27.052 T:294952    info <general>: AddOnLog: inputstream.adaptive: Manifest successfully parsed (Periods: 1, Streams in first period: 4, Type: live)
2024-07-20 16:52:27.196 T:294952   error <general>: AddOnLog: inputstream.adaptive: License data: Cannot extract PSSH/KID data from the stream
2024-07-20 16:52:27.196 T:294952 warning <general>: AddOnLog: inputstream.adaptive: Initializing stream with unknown KID!

Here is information from mp4dump of init.m4s file to show that it has zero hex KID or PSSH:

[ftyp] size=8+16
  major_brand = iso5
  minor_version = 200
  compatible_brand = iso6
  compatible_brand = mp41
[moov] size=8+750
  [mvhd] size=12+96
    timescale = 1000
    duration = 0
    duration(ms) = 0
  [trak] size=8+496
    [tkhd] size=12+80, flags=3
      enabled = 1
      id = 1
      duration = 0
      width = 0.000000
      height = 0.000000
    [mdia] size=8+396
      [mdhd] size=12+20
        timescale = 48000
        duration = 0
        duration(ms) = 0
        language = und
      [hdlr] size=12+33
        handler_type = soun
        handler_name = SoundHandler
      [minf] size=8+311
        [smhd] size=12+4
          balance = 0
        [dinf] size=8+28
          [dref] size=12+16
            [url ] size=12+0, flags=1
              location = [local to file]
        [stbl] size=8+251
          [stsd] size=12+171
            entry_count = 1
            [enca] size=8+159
              data_reference_index = 1
              channel_count = 2
              sample_size = 16
              sample_rate = 48000
              [esds] size=12+39
                [ESDescriptor] size=5+34
                  es_id = 1
                  stream_priority = 0
                  [DecoderConfig] size=5+20
                    stream_type = 5
                    object_type = 64
                    up_stream = 0
                    buffer_size = 0
                    max_bitrate = 127875
                    avg_bitrate = 0
                    DecoderSpecificInfo = 11 90 
                  [Descriptor:06] size=5+1
              [sinf] size=8+72
                [frma] size=8+4
                  original_format = mp4a
                [schm] size=12+8
                  scheme_type = cenc
                  scheme_version = 65536
                [schi] size=8+32
                  [tenc] size=12+20
                    default_isProtected = 1
                    default_Per_Sample_IV_Size = 8
                    default_KID = [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
          [stts] size=12+4
            entry_count = 0
          [stsc] size=12+4
            entry_count = 0
          [stsz] size=12+8
            sample_size = 0
            sample_count = 0
          [stco] size=12+4
            entry_count = 0
  [mvex] size=8+32
    [trex] size=12+20
      track id = 1
      default sample description index = 1
      default sample duration = 0
      default sample size = 0
      default sample flags = 0
  [udta] size=8+90
    [meta] size=12+78
      [hdlr] size=12+21
        handler_type = mdir
        handler_name = 
      [ilst] size=8+37
        [.too] size=8+29
          [data] size=8+21
            type = 1
            lang = 0
            value = Lavf58.27.103

Motivation

inputstream.adaptive can play very well normal mpd stream on Kodi but fail to play mpd stream with Key Rotation with Zero KID Placeholder.

Are you willing to contribute in development?

No

Should a possible backport be considered?

No

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: Featurenon-breaking change which adds functionality

    Type

    No type

    Projects

    Status

    To do - Long term

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions