diff options
author | Martin Vignali <martin.vignali@gmail.com> | 2017-09-23 21:50:54 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-09-24 21:54:13 +0200 |
commit | cab71e4e4e51c8cee4fdd90af35498796797615c (patch) | |
tree | b3c290a368825e3f71c95bf448c554ac2886cae0 | |
parent | 45c15b7490cfb1106ce3153e77f04988b74a9ca1 (diff) | |
download | ffmpeg-cab71e4e4e51c8cee4fdd90af35498796797615c.tar.gz |
libavcodec/hapdec : add support HapAlphaOnly
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/hap.h | 1 | ||||
-rw-r--r-- | libavcodec/hapdec.c | 14 |
2 files changed, 13 insertions, 2 deletions
diff --git a/libavcodec/hap.h b/libavcodec/hap.h index f39e621805..0ee65335d9 100644 --- a/libavcodec/hap.h +++ b/libavcodec/hap.h @@ -34,6 +34,7 @@ enum HapTextureFormat { HAP_FMT_RGBDXT1 = 0x0B, HAP_FMT_RGBADXT5 = 0x0E, HAP_FMT_YCOCGDXT5 = 0x0F, + HAP_FMT_RGTC1 = 0x01, }; enum HapCompressor { diff --git a/libavcodec/hapdec.c b/libavcodec/hapdec.c index a1cb0c76aa..fc9dff10f1 100644 --- a/libavcodec/hapdec.c +++ b/libavcodec/hapdec.c @@ -24,7 +24,7 @@ * @file * Hap decoder * - * Fourcc: Hap1, Hap5, HapY + * Fourcc: Hap1, Hap5, HapY, HapA, HapM * * https://github.com/Vidvox/hap/blob/master/documentation/HapVideoDRAFT.md */ @@ -163,7 +163,8 @@ static int hap_parse_frame_header(AVCodecContext *avctx) if ((avctx->codec_tag == MKTAG('H','a','p','1') && (section_type & 0x0F) != HAP_FMT_RGBDXT1) || (avctx->codec_tag == MKTAG('H','a','p','5') && (section_type & 0x0F) != HAP_FMT_RGBADXT5) || - (avctx->codec_tag == MKTAG('H','a','p','Y') && (section_type & 0x0F) != HAP_FMT_YCOCGDXT5)) { + (avctx->codec_tag == MKTAG('H','a','p','Y') && (section_type & 0x0F) != HAP_FMT_YCOCGDXT5) || + (avctx->codec_tag == MKTAG('H','a','p','A') && (section_type & 0x0F) != HAP_FMT_RGTC1)) { av_log(avctx, AV_LOG_ERROR, "Invalid texture format %#04x.\n", section_type & 0x0F); return AVERROR_INVALIDDATA; @@ -403,6 +404,15 @@ static av_cold int hap_init(AVCodecContext *avctx) ctx->tex_fun = ctx->dxtc.dxt5ys_block; avctx->pix_fmt = AV_PIX_FMT_RGB0; break; + case MKTAG('H','a','p','A'): + texture_name = "RGTC1"; + ctx->tex_rat = 8; + ctx->tex_fun = ctx->dxtc.rgtc1u_block; + avctx->pix_fmt = AV_PIX_FMT_RGB0; + break; + case MKTAG('H','a','p','M'): + avpriv_report_missing_feature(avctx, "HapQAlpha"); + return AVERROR_PATCHWELCOME; default: return AVERROR_DECODER_NOT_FOUND; } |