diff --git a/libavformat/hls.c b/libavformat/hls.c index 4fdda3408c..5e8e1b2b5b 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -62,6 +62,7 @@ enum KeyType { KEY_NONE, KEY_AES_128, + KEY_SAMPLE_AES }; struct segment { @@ -329,7 +330,7 @@ static void handle_variant_args(struct variant_info *info, const char *key, struct key_info { char uri[MAX_URL_SIZE]; - char method[10]; + char method[11]; char iv[35]; }; @@ -556,6 +557,8 @@ static int parse_playlist(HLSContext *c, const char *url, has_iv = 0; if (!strcmp(info.method, "AES-128")) key_type = KEY_AES_128; + if (!strcmp(info.method, "SAMPLE-AES")) + key_type = KEY_SAMPLE_AES; if (!strncmp(info.iv, "0x", 2) || !strncmp(info.iv, "0X", 2)) { ff_hex_to_data(iv, info.iv + 2); has_iv = 1; @@ -967,6 +970,10 @@ static int open_input(HLSContext *c, struct playlist *pls) goto cleanup; } ret = 0; + } else if (seg->key_type == KEY_SAMPLE_AES) { + av_log(pls->parent, AV_LOG_ERROR, + "SAMPLE-AES encryption is not supported yet\n"); + ret = AVERROR_PATCHWELCOME; } else ret = AVERROR(ENOSYS);