diff options
author | selsta <selsta@sent.at> | 2015-03-05 19:49:57 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-03-05 23:08:38 +0100 |
commit | 6c8a158989b45cea7f81ff8e9f65adef32d73c0c (patch) | |
tree | 751de1364552c80d4afc4feddb4b1fc51163c757 /libavformat/hls.c | |
parent | d75a73b5fc130c5a90ebbb816d466558a9758532 (diff) | |
download | ffmpeg-6c8a158989b45cea7f81ff8e9f65adef32d73c0c.tar.gz |
hls: detect SAMPLE-AES encryption
SAMPLE-AES encryption is not commonly used yet, but without this patch
ffmpeg is thinking that the hls segments are not encrypted which
produces broken files.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/hls.c')
-rw-r--r-- | libavformat/hls.c | 9 |
1 files changed, 8 insertions, 1 deletions
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); |