Mercurial > libavformat.hg
changeset 1831:bdca904db5e5 libavformat
add support for simple blocks (ie. matroska v2)
author | aurel |
---|---|
date | Fri, 02 Mar 2007 00:06:03 +0000 |
parents | ae69f36fe685 |
children | 1e51dfa8ef85 |
files | matroska.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/matroska.c Thu Mar 01 23:50:31 2007 +0000 +++ b/matroska.c Fri Mar 02 00:06:03 2007 +0000 @@ -139,6 +139,7 @@ /* IDs in the cluster master */ #define MATROSKA_ID_CLUSTERTIMECODE 0xE7 #define MATROSKA_ID_BLOCKGROUP 0xA0 +#define MATROSKA_ID_SIMPLEBLOCK 0xA3 /* IDs in the blockgroup master */ #define MATROSKA_ID_BLOCK 0xA1 @@ -2076,9 +2077,9 @@ return AVERROR_NOFMT; } av_free(doctype); - if (version != 1) { + if (version > 2) { av_log(matroska->ctx, AV_LOG_ERROR, - "Matroska demuxer version 1 too old for file version %d\n", + "Matroska demuxer version 2 too old for file version %d\n", version); return AVERROR_NOFMT; } @@ -2425,6 +2426,8 @@ flags = *data; data += 1; size -= 1; + if (is_keyframe == -1) + is_keyframe = flags & 1 ? PKT_FLAG_KEY : 0; switch ((flags & 0x06) >> 1) { case 0x0: /* no lacing */ laces = 1; @@ -2666,6 +2669,10 @@ res = matroska_parse_blockgroup(matroska, cluster_time); break; + case MATROSKA_ID_SIMPLEBLOCK: + matroska_parse_block(matroska, cluster_time, -1, NULL, NULL); + break; + default: av_log(matroska->ctx, AV_LOG_INFO, "Unknown entry 0x%x in cluster data\n", id);